@mr-quin/dango-manifests 0.1.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +90 -36
- package/catalog.json +96 -0
- package/package.json +7 -4
- package/src/manifests/aiyifan.json +152 -0
- package/src/manifests/bahamut.json +61 -0
- package/src/manifests/{builtin-bilibili.json → bilibili.json} +9 -8
- package/src/manifests/dandanplay.json +126 -0
- package/src/manifests/{builtin-hanjutv.json → hanjutv.json} +4 -4
- package/src/manifests/iqiyi.json +130 -0
- package/src/manifests/maiduidui.json +96 -0
- package/src/manifests/mango.json +114 -0
- package/src/manifests/{builtin-migu.json → migu.json} +4 -4
- package/src/manifests/renren.json +122 -0
- package/src/manifests/sohu.json +70 -0
- package/src/manifests/{builtin-tencent.json → tencent.json} +6 -5
- package/src/manifests/youku.json +119 -0
- package/src/manifests/builtin-dandanplay.json +0 -64
- package/src/manifests/builtin-ddp-compat.json +0 -96
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
{
|
|
2
|
+
"apiVersion": 1,
|
|
3
|
+
"id": "sohu",
|
|
4
|
+
"name": "Sohu",
|
|
5
|
+
"version": "0.3.0",
|
|
6
|
+
"hosts": ["m.so.tv.sohu.com", "api.tv.sohu.com", "api.danmu.tv.sohu.com"],
|
|
7
|
+
"search": {
|
|
8
|
+
"inputs": ["q"],
|
|
9
|
+
"steps": [
|
|
10
|
+
{
|
|
11
|
+
"type": "http",
|
|
12
|
+
"id": "search",
|
|
13
|
+
"request": {
|
|
14
|
+
"method": "GET",
|
|
15
|
+
"url": "'https://m.so.tv.sohu.com/search/pc/keyword'",
|
|
16
|
+
"query": "{ 'key': q, 'type': '1', 'page': '1', 'page_size': '20', 'tabsChosen': '0', 'poster': '4', 'tuple': '6', 'extSource': '1', 'show_star_detail': '3', 'pay': '1', 'hl': '3', 'uid': $string($millis() * 1000), 'plat': '-1', 'ssl': '0' }",
|
|
17
|
+
"rewriteHeaders": {
|
|
18
|
+
"Referer": "'https://so.tv.sohu.com/'",
|
|
19
|
+
"Origin": "'https://so.tv.sohu.com'"
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
],
|
|
24
|
+
"output": "[search.data.items[aid and album_name and site = 1 and (is_trailer ? is_trailer != 1 : true) and (corner_mark.text ? corner_mark.text != '预告' : true)].($metaTxt := [meta.txt][$contains($, '|')][0]; $type := $metaTxt ? $trim($split($metaTxt, '|')[0]) : 'Sohu'; { 'providerIds': { 'aid': $string(aid) }, 'indexedId': $string(aid), 'title': $replace(album_name, /<<<|>>>/, ''), 'type': $type, 'year': year ? $number(year) : undefined, 'imageUrl': ver_big_pic, 'episodeCount': total_video_count > 0 ? total_video_count : undefined })]"
|
|
25
|
+
},
|
|
26
|
+
"episodes": {
|
|
27
|
+
"inputs": ["aid"],
|
|
28
|
+
"steps": [
|
|
29
|
+
{
|
|
30
|
+
"type": "http",
|
|
31
|
+
"id": "album",
|
|
32
|
+
"request": {
|
|
33
|
+
"method": "GET",
|
|
34
|
+
"url": "'https://api.tv.sohu.com/v4/album/videos/' & aid & '.json'",
|
|
35
|
+
"query": "{ 'page': '1', 'page_size': '500' }",
|
|
36
|
+
"rewriteHeaders": { "Referer": "'https://tv.sohu.com/'" }
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
],
|
|
40
|
+
"output": "[album.data.videos[$exists(vid)].{ 'providerIds': { 'vid': $string(vid), 'aid': $string(aid), 'durationSec': total_duration > 0 ? $number(total_duration) : 0 }, 'indexedId': $string(vid), 'title': video_name ? video_name : ('第' & $string(albumAbsoluteOrder ? albumAbsoluteOrder : 1) & '集'), 'episodeNumber': albumAbsoluteOrder ? $number(albumAbsoluteOrder) : undefined }]"
|
|
41
|
+
},
|
|
42
|
+
"danmaku": {
|
|
43
|
+
"inputs": ["vid", "aid", "durationSec"],
|
|
44
|
+
"steps": [
|
|
45
|
+
{
|
|
46
|
+
"type": "assign",
|
|
47
|
+
"id": "info",
|
|
48
|
+
"values": {
|
|
49
|
+
"maxTime": "durationSec > 0 ? $ceil(durationSec) : 10800"
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"type": "forEach",
|
|
54
|
+
"id": "segments",
|
|
55
|
+
"in": "$range(0, $ceil(info.maxTime / 300))",
|
|
56
|
+
"as": "i",
|
|
57
|
+
"concurrency": 5,
|
|
58
|
+
"throttleMs": 50,
|
|
59
|
+
"request": {
|
|
60
|
+
"method": "GET",
|
|
61
|
+
"url": "'https://api.danmu.tv.sohu.com/dmh5/dmListAll'",
|
|
62
|
+
"query": "{ 'act': 'dmlist_v2', 'vid': vid, 'aid': aid, 'pct': '2', 'time_begin': $string(i * 300), 'time_end': $string((i + 1) * 300), 'dct': '1', 'request_from': 'h5_js' }",
|
|
63
|
+
"rewriteHeaders": { "Referer": "'https://tv.sohu.com/'" }
|
|
64
|
+
},
|
|
65
|
+
"collect": "info.comments"
|
|
66
|
+
}
|
|
67
|
+
],
|
|
68
|
+
"output": "[segments.($cr := $string(t.c ? t.c : '16777215'); $color := $contains($cr, '#') ? $hexToInt($replace($cr, '#', '')) : $number($cr); $vt := v ? $string(v) : '0'; { 'p': $vt & ',1,' & $string($color) & ',' & (uid ? $string(uid) : ''), 'm': c })]"
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"apiVersion": 1,
|
|
3
|
-
"id": "
|
|
3
|
+
"id": "tencent",
|
|
4
4
|
"name": "Tencent Video",
|
|
5
|
-
"version": "
|
|
5
|
+
"version": "0.3.0",
|
|
6
6
|
"hosts": ["pbaccess.video.qq.com", "dm.video.qq.com"],
|
|
7
7
|
"urlMatch": [
|
|
8
8
|
{
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
"throttleMs": 100
|
|
61
61
|
}
|
|
62
62
|
],
|
|
63
|
-
"output": "[pages.{ 'providerIds': { 'vid': vid, 'cid': cid }, 'indexedId': vid, 'title': play_title, 'episodeNumber': title, 'alternativeTitle': union_title and union_title != '' ? [union_title] : undefined, 'imageUrl': image_url }]"
|
|
63
|
+
"output": "[pages.{ 'providerIds': { 'vid': vid, 'cid': cid }, 'indexedId': vid, 'title': play_title, 'episodeNumber': $match(title, /^\\d+$/) ? $number(title) : (title and title != '' ? title : undefined), 'alternativeTitle': union_title and union_title != '' ? [union_title] : undefined, 'imageUrl': image_url }]"
|
|
64
64
|
},
|
|
65
65
|
"danmaku": {
|
|
66
66
|
"inputs": ["vid"],
|
|
@@ -102,7 +102,8 @@
|
|
|
102
102
|
"collect": "barrage_list"
|
|
103
103
|
}
|
|
104
104
|
],
|
|
105
|
-
"output": "[segments
|
|
105
|
+
"output": "[segments]",
|
|
106
|
+
"map": "($s := content_style and content_style != '' ? $jsonParse(content_style) : null; $g := $s.gradient_colors; $hex := $exists($g[0]) and $g[0] != '' ? $g[0] : $s.color; $color := $exists($hex) and $hex != '' ? $hexToInt($replace($hex, /^#/, '')) : 16777215; { 'p': $string($number(time_offset) / 1000) & ',1,' & $string($color) & ',' & (vuid ? $string(vuid) : ''), 'm': content })"
|
|
106
107
|
},
|
|
107
108
|
"cookieSet": {
|
|
108
109
|
"url": "https://v.qq.com",
|
|
@@ -173,6 +174,6 @@
|
|
|
173
174
|
}
|
|
174
175
|
}
|
|
175
176
|
],
|
|
176
|
-
"output": "{ 'seasonInsert': { 'providerIds': { 'cid': picked.season.item_params.`report.cid` }, 'indexedId': picked.season.item_params.`report.cid`, 'title': picked.season.item_params.title, 'type': $string(picked.season.item_type), 'imageUrl': picked.season.item_params.new_pic_vt, 'episodeCount': picked.season.item_params.episode_all }, 'episodeMeta': $exists(picked.ep) ? { 'providerIds': { 'vid': picked.ep.vid }, 'indexedId': picked.ep.vid, 'title': picked.ep.play_title, 'episodeNumber': picked.ep.title, 'alternativeTitle': picked.ep.union_title and picked.ep.union_title != '' ? [picked.ep.union_title] : undefined, 'imageUrl': picked.ep.image_url } : undefined }"
|
|
177
|
+
"output": "{ 'seasonInsert': { 'providerIds': { 'cid': picked.season.item_params.`report.cid` }, 'indexedId': picked.season.item_params.`report.cid`, 'title': picked.season.item_params.title, 'type': $string(picked.season.item_type), 'imageUrl': picked.season.item_params.new_pic_vt, 'episodeCount': picked.season.item_params.episode_all }, 'episodeMeta': $exists(picked.ep) ? { 'providerIds': { 'vid': picked.ep.vid }, 'indexedId': picked.ep.vid, 'title': picked.ep.play_title, 'episodeNumber': $match(picked.ep.title, /^\\d+$/) ? $number(picked.ep.title) : (picked.ep.title and picked.ep.title != '' ? picked.ep.title : undefined), 'alternativeTitle': picked.ep.union_title and picked.ep.union_title != '' ? [picked.ep.union_title] : undefined, 'imageUrl': picked.ep.image_url } : undefined }"
|
|
177
178
|
}
|
|
178
179
|
}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
{
|
|
2
|
+
"apiVersion": 1,
|
|
3
|
+
"id": "youku",
|
|
4
|
+
"name": "Youku",
|
|
5
|
+
"version": "0.3.0",
|
|
6
|
+
"hosts": [
|
|
7
|
+
"search.youku.com",
|
|
8
|
+
"openapi.youku.com",
|
|
9
|
+
"acs.youku.com",
|
|
10
|
+
"log.mmstat.com"
|
|
11
|
+
],
|
|
12
|
+
"search": {
|
|
13
|
+
"inputs": ["q"],
|
|
14
|
+
"steps": [
|
|
15
|
+
{
|
|
16
|
+
"type": "http",
|
|
17
|
+
"id": "search",
|
|
18
|
+
"request": {
|
|
19
|
+
"method": "GET",
|
|
20
|
+
"url": "'https://search.youku.com/api/search'",
|
|
21
|
+
"query": "{ 'keyword': q, 'site': '1', 'categories': '0', 'ftype': '0', 'ob': '0', 'pg': '1' }",
|
|
22
|
+
"rewriteHeaders": { "Referer": "'https://www.youku.com/'" }
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
],
|
|
26
|
+
"output": "[search.pageComponentList[commonData.isYouku=1 or commonData.hasYouku=1].commonData.($parts := $split(feature, ' · '); { 'providerIds': { 'showId': showId }, 'indexedId': showId, 'title': $replace(titleDTO.displayName, /<[^>]+>/, '') ~> $trim, 'type': $trim($parts[1]), 'year': $number($regexExtract(feature, '([12][890][0-9][0-9])')), 'imageUrl': posterDTO.vThumbUrl, 'episodeCount': episodeTotal })[providerIds.showId]]"
|
|
27
|
+
},
|
|
28
|
+
"episodes": {
|
|
29
|
+
"inputs": ["showId"],
|
|
30
|
+
"steps": [
|
|
31
|
+
{
|
|
32
|
+
"type": "forEach",
|
|
33
|
+
"id": "pages",
|
|
34
|
+
"in": "$range(1, 51)",
|
|
35
|
+
"as": "page",
|
|
36
|
+
"request": {
|
|
37
|
+
"method": "GET",
|
|
38
|
+
"url": "'https://openapi.youku.com/v2/shows/videos.json'",
|
|
39
|
+
"query": "{ 'client_id': '53e6cc67237fc59a', 'package': 'com.huawei.hwvplayer.youku', 'ext': 'show', 'show_id': showId, 'page': $string(page), 'count': '100' }"
|
|
40
|
+
},
|
|
41
|
+
"collect": "videos",
|
|
42
|
+
"breakOn": "$count($) < 100",
|
|
43
|
+
"throttleMs": 100
|
|
44
|
+
}
|
|
45
|
+
],
|
|
46
|
+
"output": "[pages.{ 'providerIds': { 'vid': id }, 'indexedId': id, 'title': title, 'episodeNumber': $number(stage), 'imageUrl': thumbnail_v2 }]"
|
|
47
|
+
},
|
|
48
|
+
"danmaku": {
|
|
49
|
+
"inputs": ["vid"],
|
|
50
|
+
"steps": [
|
|
51
|
+
{
|
|
52
|
+
"type": "http",
|
|
53
|
+
"id": "info",
|
|
54
|
+
"request": {
|
|
55
|
+
"method": "GET",
|
|
56
|
+
"url": "'https://openapi.youku.com/v2/videos/show.json'",
|
|
57
|
+
"query": "{ 'client_id': '53e6cc67237fc59a', 'video_id': vid, 'package': 'com.huawei.hwvplayer.youku', 'ext': 'show' }"
|
|
58
|
+
},
|
|
59
|
+
"extract": {
|
|
60
|
+
"durationSec": "$number(duration)"
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"type": "http",
|
|
65
|
+
"id": "cna",
|
|
66
|
+
"request": {
|
|
67
|
+
"method": "GET",
|
|
68
|
+
"url": "'https://log.mmstat.com/eg.js'",
|
|
69
|
+
"format": "text",
|
|
70
|
+
"credentials": "include"
|
|
71
|
+
},
|
|
72
|
+
"extractHeaders": {
|
|
73
|
+
"value": "$replace(`etag`, /^\"|\"$/, '')"
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"type": "http",
|
|
78
|
+
"id": "tkEnc",
|
|
79
|
+
"request": {
|
|
80
|
+
"method": "GET",
|
|
81
|
+
"url": "'https://acs.youku.com/h5/mtop.com.youku.aplatform.weakget/1.0/'",
|
|
82
|
+
"query": "{ 'jsv': '2.5.1', 'appKey': '24679788' }",
|
|
83
|
+
"credentials": "include"
|
|
84
|
+
},
|
|
85
|
+
"extractHeaders": {
|
|
86
|
+
"tk": "$regexExtract(`set-cookie`, '_m_h5_tk=([^;]+)')"
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"type": "assign",
|
|
91
|
+
"id": "prep",
|
|
92
|
+
"values": {
|
|
93
|
+
"iters": "$map($range(0, $floor(info.durationSec / 60) + 1), function($mat) { ($t := $millis(); $msg := { 'ctime': $t, 'ctype': 10004, 'cver': 'v1.0', 'guid': cna.value, 'mat': $mat, 'mcount': 1, 'pid': 0, 'sver': '3.1.0', 'type': 1, 'vid': vid }; $msgB64 := $base64Encode($stringify($msg)); $innerSign := $md5($msgB64 & 'MkmC9SoIw6xCkSKHhJ7b5D2r51kBiREr'); $data := $stringify($merge([$msg, { 'msg': $msgB64, 'sign': $innerSign }])); $outerSign := $md5($substring(tkEnc.tk, 0, 32) & '&' & $string($t) & '&24679788&' & $data); { 'url': 'https://acs.youku.com/h5/mopen.youku.danmu.list/1.0/?' & $sortedQueryString({ 'jsv': '2.5.6', 'appKey': '24679788', 't': $string($t), 'sign': $outerSign, 'api': 'mopen.youku.danmu.list', 'v': '1.0', 'type': 'originaljson', 'dataType': 'jsonp', 'timeout': '20000', 'jsonpIncPrefix': 'utility' }), 'body': 'data=' & $encodeUrlComponent($data) }) })"
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"type": "forEach",
|
|
98
|
+
"id": "segments",
|
|
99
|
+
"in": "prep.iters",
|
|
100
|
+
"as": "iter",
|
|
101
|
+
"concurrency": 4,
|
|
102
|
+
"throttleMs": 100,
|
|
103
|
+
"request": {
|
|
104
|
+
"method": "POST",
|
|
105
|
+
"url": "iter.url",
|
|
106
|
+
"headers": { "Content-Type": "'application/x-www-form-urlencoded'" },
|
|
107
|
+
"body": "iter.body",
|
|
108
|
+
"credentials": "include",
|
|
109
|
+
"rewriteHeaders": { "Referer": "'https://v.youku.com'" }
|
|
110
|
+
},
|
|
111
|
+
"extract": {
|
|
112
|
+
"items": "$jsonParse(data.result).data.result"
|
|
113
|
+
},
|
|
114
|
+
"collect": "items"
|
|
115
|
+
}
|
|
116
|
+
],
|
|
117
|
+
"output": "[segments.{ 'p': $string($number(playat) / 1000) & ',1,16777215,' & $string(uid), 'm': content }]"
|
|
118
|
+
}
|
|
119
|
+
}
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"apiVersion": 1,
|
|
3
|
-
"id": "builtin:dandanplay",
|
|
4
|
-
"name": "DanDanPlay",
|
|
5
|
-
"version": "1.0.0",
|
|
6
|
-
"hosts": ["api.danmaku.weeblify.app"],
|
|
7
|
-
"configSchema": {
|
|
8
|
-
"type": "object",
|
|
9
|
-
"properties": {
|
|
10
|
-
"chConvert": {
|
|
11
|
-
"type": "integer",
|
|
12
|
-
"enum": [0, 1, 2],
|
|
13
|
-
"default": 0,
|
|
14
|
-
"title": "Chinese conversion",
|
|
15
|
-
"description": "0 = no conversion, 1 = convert to simplified, 2 = convert to traditional"
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
},
|
|
19
|
-
"search": {
|
|
20
|
-
"inputs": ["q"],
|
|
21
|
-
"steps": [
|
|
22
|
-
{
|
|
23
|
-
"type": "http",
|
|
24
|
-
"id": "search",
|
|
25
|
-
"request": {
|
|
26
|
-
"method": "GET",
|
|
27
|
-
"url": "'https://api.danmaku.weeblify.app/ddp/v1'",
|
|
28
|
-
"query": "{ 'path': '/v2/search/anime?' & $sortedQueryString({ 'keyword': q }) }"
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
],
|
|
32
|
-
"output": "[search.animes.{ 'providerIds': { 'animeId': animeId, 'bangumiId': bangumiId }, 'indexedId': $string(animeId), 'title': animeTitle, 'type': type, 'typeDescription': typeDescription, 'imageUrl': imageUrl, 'episodeCount': episodeCount, 'year': $number($substringBefore(startDate, '-')) }]"
|
|
33
|
-
},
|
|
34
|
-
"episodes": {
|
|
35
|
-
"inputs": ["bangumiId"],
|
|
36
|
-
"steps": [
|
|
37
|
-
{
|
|
38
|
-
"type": "http",
|
|
39
|
-
"id": "bangumi",
|
|
40
|
-
"request": {
|
|
41
|
-
"method": "GET",
|
|
42
|
-
"url": "'https://api.danmaku.weeblify.app/ddp/v1'",
|
|
43
|
-
"query": "{ 'path': '/v2/bangumi/' & $string(bangumiId) }"
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
],
|
|
47
|
-
"output": "[bangumi.bangumi.episodes.{ 'providerIds': { 'episodeId': episodeId, 'animeId': %.animeId, 'bangumiId': %.bangumiId }, 'indexedId': $string(episodeId), 'title': episodeTitle, 'episodeNumber': episodeNumber }]"
|
|
48
|
-
},
|
|
49
|
-
"danmaku": {
|
|
50
|
-
"inputs": ["episodeId"],
|
|
51
|
-
"steps": [
|
|
52
|
-
{
|
|
53
|
-
"type": "http",
|
|
54
|
-
"id": "comments",
|
|
55
|
-
"request": {
|
|
56
|
-
"method": "GET",
|
|
57
|
-
"url": "'https://api.danmaku.weeblify.app/ddp/v1'",
|
|
58
|
-
"query": "{ 'path': '/v2/comment/' & $string(episodeId) & '?' & $sortedQueryString({ 'withRelated': 'true', 'chConvert': chConvert ? $string(chConvert) : undefined }) }"
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
],
|
|
62
|
-
"output": "[comments.comments]"
|
|
63
|
-
}
|
|
64
|
-
}
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"apiVersion": 1,
|
|
3
|
-
"id": "builtin:ddp-compat",
|
|
4
|
-
"name": "DanDanPlay Compatible",
|
|
5
|
-
"version": "1.0.0",
|
|
6
|
-
"hosts": ["*"],
|
|
7
|
-
"configSchema": {
|
|
8
|
-
"type": "object",
|
|
9
|
-
"required": ["baseUrl"],
|
|
10
|
-
"properties": {
|
|
11
|
-
"baseUrl": {
|
|
12
|
-
"type": "string",
|
|
13
|
-
"title": "Base URL",
|
|
14
|
-
"description": "Root of the DanDanPlay-compatible API (e.g. https://my-server.com)"
|
|
15
|
-
},
|
|
16
|
-
"chConvert": {
|
|
17
|
-
"type": "integer",
|
|
18
|
-
"enum": [0, 1, 2],
|
|
19
|
-
"default": 0,
|
|
20
|
-
"title": "Chinese conversion",
|
|
21
|
-
"description": "0 = no conversion, 1 = convert to simplified, 2 = convert to traditional"
|
|
22
|
-
},
|
|
23
|
-
"auth": {
|
|
24
|
-
"type": "object",
|
|
25
|
-
"title": "Authentication",
|
|
26
|
-
"description": "Custom request headers (e.g. Authorization) sent on every request",
|
|
27
|
-
"properties": {
|
|
28
|
-
"enabled": {
|
|
29
|
-
"type": "boolean",
|
|
30
|
-
"default": false,
|
|
31
|
-
"title": "Enable auth headers"
|
|
32
|
-
},
|
|
33
|
-
"headers": {
|
|
34
|
-
"type": "array",
|
|
35
|
-
"title": "Headers",
|
|
36
|
-
"items": {
|
|
37
|
-
"type": "object",
|
|
38
|
-
"required": ["key", "value"],
|
|
39
|
-
"properties": {
|
|
40
|
-
"key": { "type": "string", "title": "Header name" },
|
|
41
|
-
"value": { "type": "string", "title": "Value" }
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
},
|
|
49
|
-
"search": {
|
|
50
|
-
"inputs": ["q", "baseUrl", "auth"],
|
|
51
|
-
"steps": [
|
|
52
|
-
{
|
|
53
|
-
"type": "http",
|
|
54
|
-
"id": "search",
|
|
55
|
-
"request": {
|
|
56
|
-
"method": "GET",
|
|
57
|
-
"url": "$replace(baseUrl, /\\/$/, '') & '/v2/search/anime'",
|
|
58
|
-
"query": "{ 'keyword': q }",
|
|
59
|
-
"headers": "$merge((auth.enabled and auth.headers ? auth.headers : []).{ key: value })"
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
],
|
|
63
|
-
"output": "[search.animes.{ 'providerIds': { 'animeId': animeId, 'bangumiId': bangumiId }, 'indexedId': $string(animeId), 'title': animeTitle, 'type': type, 'typeDescription': typeDescription, 'imageUrl': imageUrl, 'episodeCount': episodeCount, 'year': $number($substringBefore(startDate, '-')) }]"
|
|
64
|
-
},
|
|
65
|
-
"episodes": {
|
|
66
|
-
"inputs": ["bangumiId", "baseUrl", "auth"],
|
|
67
|
-
"steps": [
|
|
68
|
-
{
|
|
69
|
-
"type": "http",
|
|
70
|
-
"id": "bangumi",
|
|
71
|
-
"request": {
|
|
72
|
-
"method": "GET",
|
|
73
|
-
"url": "$replace(baseUrl, /\\/$/, '') & '/v2/bangumi/' & $string(bangumiId)",
|
|
74
|
-
"headers": "$merge((auth.enabled and auth.headers ? auth.headers : []).{ key: value })"
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
],
|
|
78
|
-
"output": "[bangumi.bangumi.episodes.{ 'providerIds': { 'episodeId': episodeId, 'animeId': %.animeId, 'bangumiId': %.bangumiId }, 'indexedId': $string(episodeId), 'title': episodeTitle, 'episodeNumber': episodeNumber }]"
|
|
79
|
-
},
|
|
80
|
-
"danmaku": {
|
|
81
|
-
"inputs": ["episodeId", "baseUrl", "auth"],
|
|
82
|
-
"steps": [
|
|
83
|
-
{
|
|
84
|
-
"type": "http",
|
|
85
|
-
"id": "comments",
|
|
86
|
-
"request": {
|
|
87
|
-
"method": "GET",
|
|
88
|
-
"url": "$replace(baseUrl, /\\/$/, '') & '/v2/comment/' & $string(episodeId)",
|
|
89
|
-
"query": "{ 'withRelated': 'true', 'chConvert': chConvert ? $string(chConvert) : undefined }",
|
|
90
|
-
"headers": "$merge((auth.enabled and auth.headers ? auth.headers : []).{ key: value })"
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
],
|
|
94
|
-
"output": "[comments.comments]"
|
|
95
|
-
}
|
|
96
|
-
}
|