@mr-quin/dango-manifests 0.7.0 → 0.8.1

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/catalog.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "packageVersion": "0.7.0",
2
+ "packageVersion": "0.8.1",
3
3
  "manifests": [
4
4
  {
5
5
  "id": "aiyifan",
@@ -32,7 +32,7 @@
32
32
  {
33
33
  "id": "hanjutv",
34
34
  "name": "Hanjutv",
35
- "version": "0.5.0",
35
+ "version": "0.5.1",
36
36
  "apiVersion": 1,
37
37
  "file": "src/manifests/hanjutv.json"
38
38
  },
@@ -53,14 +53,14 @@
53
53
  {
54
54
  "id": "mango",
55
55
  "name": "Mango TV",
56
- "version": "0.5.0",
56
+ "version": "0.7.0",
57
57
  "apiVersion": 1,
58
58
  "file": "src/manifests/mango.json"
59
59
  },
60
60
  {
61
61
  "id": "migu",
62
62
  "name": "Migu Video",
63
- "version": "0.5.0",
63
+ "version": "0.5.1",
64
64
  "apiVersion": 1,
65
65
  "file": "src/manifests/migu.json"
66
66
  },
@@ -88,7 +88,7 @@
88
88
  {
89
89
  "id": "youku",
90
90
  "name": "Youku",
91
- "version": "0.5.0",
91
+ "version": "0.5.1",
92
92
  "apiVersion": 1,
93
93
  "file": "src/manifests/youku.json"
94
94
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mr-quin/dango-manifests",
3
- "version": "0.7.0",
3
+ "version": "0.8.1",
4
4
  "description": "Built-in dango manifests for danmaku sources",
5
5
  "author": "Mr-Quin",
6
6
  "license": "MIT",
@@ -8,11 +8,22 @@
8
8
  "name": "韩剧TV"
9
9
  }
10
10
  },
11
- "version": "0.5.0",
11
+ "version": "0.5.1",
12
12
  "hosts": ["hxqapi.hiyun.tv", "hxqapi.zmdcq.com"],
13
13
  "search": {
14
14
  "inputs": ["q"],
15
15
  "steps": [
16
+ {
17
+ "type": "http",
18
+ "request": {
19
+ "method": "GET",
20
+ "url": "'https://hxqapi.hiyun.tv/api/common/configs'",
21
+ "headers": "($uid := 'DA000000000000000000'; $uidMd5 := $md5($uid); $signKey := $base64Encode($substring($uidMd5, 0, 16)); $signIv := $base64Encode($substring($uidMd5, 16, 16)); $ts := $now() * 1000; $installTs := $ts - 1209600000; $said := 'fb3597b87601d5a7'; $oa := '0123456789abcdef'; $payload := { 'emu': 0, 'ou': 0, 'it': $installTs, 'iit': $installTs, 'bs': 0, 'uid': $uid, 'pc': 0, 'tm': 81, 'd8m': '0,0,0,0,0,0,0,4', 'md': 'Redmi Note 12', 'maker': 'Xiaomi', 'osv': '14', 'br': 95, 'rpc': 0, 'scc': 2, 'plc': 6, 'toc': 19, 'tsc': 10, 'ts': $ts, 'pa': 1, 'crec': 0, 'nw': 2, 'px': '0', 'isp': '', 'ai': $said, 'oa': $oa, 'dpc': 0, 'dsc': 0, 'qpc': 0, 'apad': 0, 'pk': 'com.babycloud.hanju' }; $uk := $aesCbcEncrypt($uid, 'ZjM0OXdnaGhlNzg0dHF3aA==', 'ZDN3OGhmOTRmaWRrMzhsaw=='); $sign := $aesCbcEncrypt($string($payload), $signKey, $signIv); { 'app': 'hj', 'ch': 'xiaomi', 'said': $said, 'uk': $uk, 'vn': '6.8.2', 'sign': $sign, 'vc': 'a_8280', 'Accept-Encoding': 'gzip', 'Connection': 'Keep-Alive' })",
22
+ "rewriteHeaders": {
23
+ "User-Agent": "'HanjuTV/6.8.2 (Redmi Note 12; Android 14; Scale/2.00)'"
24
+ }
25
+ }
26
+ },
16
27
  {
17
28
  "type": "http",
18
29
  "id": "search",
@@ -27,7 +38,7 @@
27
38
  }
28
39
  }
29
40
  ],
30
- "output": "($uid := 'DA000000000000000000'; $key := $exists(search.key) and search.key != '' ? search.key : $md5($uid & $string(search.ts)); $mix := $md5($key & '34F9Q53w/HJW8E6Q'); $aesKey := $base64Encode($substring($mix, 0, 16)); $aesIv := $base64Encode($substring($mix, 16, 16)); $raw := $aesCbcDecrypt(search.data, $aesKey, $aesIv, 'none'); $clean := $replace($trim($raw), /[\\u0000-\\u001f\\u007f-\\u009f]/, ''); $decoded := $jsonParse($clean); [$decoded.seriesData.seriesList.{ 'providerIds': { 'sid': $string(sid) }, 'indexedId': $string(sid), 'title': name, 'type': 'tvseries', 'typeDescription': '韩剧', 'imageUrl': $exists(image.thumb) ? image.thumb : '', 'episodeCount': 0, 'year': null }])"
41
+ "output": "($uid := 'DA000000000000000000'; $exists(search.data) and search.data != '' ? ($key := $exists(search.key) and search.key != '' ? search.key : $md5($uid & $string(search.ts)); $mix := $md5($key & '34F9Q53w/HJW8E6Q'); $aesKey := $base64Encode($substring($mix, 0, 16)); $aesIv := $base64Encode($substring($mix, 16, 16)); $raw := $aesCbcDecrypt(search.data, $aesKey, $aesIv, 'none'); $clean := $replace($trim($raw), /[\\u0000-\\u001f\\u007f-\\u009f]/, ''); $decoded := $jsonParse($clean); $list := $exists($decoded.seriesData.seriesList) ? $decoded.seriesData.seriesList : $decoded.seriesList; [$list.{ 'providerIds': { 'sid': $string(sid) }, 'indexedId': $string(sid), 'title': name, 'type': 'tvseries', 'typeDescription': '韩剧', 'imageUrl': $exists(image.thumb) ? image.thumb : '', 'episodeCount': 0, 'year': null }]) : [])"
31
42
  },
32
43
  "episodes": {
33
44
  "inputs": ["sid"],
@@ -8,7 +8,7 @@
8
8
  "name": "芒果TV"
9
9
  }
10
10
  },
11
- "version": "0.5.0",
11
+ "version": "0.7.0",
12
12
  "hosts": [
13
13
  "mobileso.bz.mgtv.com",
14
14
  "pcweb.api.mgtv.com",
@@ -19,18 +19,27 @@
19
19
  "search": {
20
20
  "inputs": ["q"],
21
21
  "steps": [
22
+ {
23
+ "type": "assign",
24
+ "id": "device",
25
+ "values": {
26
+ "deviceId": "$md5($string($millis()))"
27
+ }
28
+ },
22
29
  {
23
30
  "type": "http",
24
31
  "id": "search",
25
32
  "request": {
26
33
  "method": "GET",
27
- "url": "'https://mobileso.bz.mgtv.com/msite/search/v2'",
28
- "query": "{ 'q': q, 'pc': '30', 'pn': '1', 'sort': '-99', 'ty': '0', 'du': '0', 'pt': '0', 'corr': '1', 'abroad': '0', '_support': '10000000000000000' }",
29
- "rewriteHeaders": { "Referer": "'https://www.mgtv.com/'" }
34
+ "url": "'https://mobileso.bz.mgtv.com/aphone/search/rebirth/v2'",
35
+ "query": "{ 'q': q, '_support': '10100001', 'device': '23127PN0CC', 'osVersion': '16', 'appVersion': '9.3.3', 'did': device.deviceId, 'mac': device.deviceId, 'seqId': $md5(device.deviceId & '.' & $string($millis())), 'ticket': '', 'userId': '0', 'osType': 'android', 'type': '10', 'abroad': '0' }",
36
+ "rewriteHeaders": {
37
+ "User-Agent": "'Dalvik/2.1.0 (Linux; U; Android 16; 23127PN0CC Build/AP1A.240505.003)'"
38
+ }
30
39
  }
31
40
  }
32
41
  ],
33
- "output": "[search.data.contents[type='media'].data[source='imgo'].($cid := $regexExtract(url, '/b/(\\\\d+)'); { 'providerIds': { 'collectionId': $cid }, 'indexedId': $cid, 'title': $replace(title, /<[^>]+>/, ''), 'type': $substringBefore(desc[0], '/') ~> $replace('类型:', '') ~> $trim, 'year': $number($regexExtract(desc[0], '([12][890][0-9][0-9])')), 'imageUrl': img, 'episodeCount': videoCount })[providerIds.collectionId]]"
42
+ "output": "($media := search.data.contents[type='mediaRebirthV2' or type='mediaRebirthV3'].data[($not($exists(source)) or source = '' or source = 'imgo') and clipId != '']; $seen := [$map($media, function($m) { $string($m.clipId) })]; $series := search.data.contents[type='clipMerge'].data.dataList[clipId != '' and $not($string(clipId) in $seen)]; $append([$media.($cid := $string(clipId); $descText := $type(desc) = 'array' ? desc[0] : desc; { 'providerIds': { 'collectionId': $cid }, 'indexedId': $cid, 'title': $trim($replace(title, /<[^>]+>/, '')), 'type': $trim($replace($substringBefore($descText, '/'), '类型:', '')), 'year': $number($regexExtract($descText, '([12][890][0-9][0-9])')), 'imageUrl': img, 'episodeCount': videoCount })], [$series.($cid := $string(clipId); { 'providerIds': { 'collectionId': $cid }, 'indexedId': $cid, 'title': $trim($replace(title, /<[^>]+>/, '')), 'imageUrl': img })]))"
34
43
  },
35
44
  "episodes": {
36
45
  "inputs": ["collectionId"],
@@ -8,7 +8,7 @@
8
8
  "name": "咪咕视频"
9
9
  }
10
10
  },
11
- "version": "0.5.0",
11
+ "version": "0.5.1",
12
12
  "hosts": ["jadeite.migu.cn", "v3-sc.miguvideo.com", "webapi.miguvideo.com"],
13
13
  "search": {
14
14
  "inputs": ["q"],
@@ -24,7 +24,7 @@
24
24
  "appId": "'miguvideo'",
25
25
  "terminalId": "'www'"
26
26
  },
27
- "body": "{ 'k': q, 'pageIdx': 1, 'pageSize': 20, 'ct': 101, 'mediaSource': 9000000, 'appVersion': '6.1.1.00', 'isCorrectWord': 1, 'copyrightTerminal': 3, 'searchScene': 2, 'uiVersion': 'A3.26.0', 'sid': '1X4A395AL3XS3UV5MT8PQ1L5JUYK6KFM8VKDSDD48S5Y7YX5WY1MOUHRT6512988' }",
27
+ "body": "{ 'k': q, 'pageIdx': 1, 'pageSize': 20, 'ct': 101, 'mediaSource': 9000000, 'appVersion': '6.1.1.00', 'isCorrectWord': 1, 'copyrightTerminal': 3, 'searchScene': 2, 'uiVersion': 'A3.26.0', 'packId': '1002581,1002601,1003861,1003862,1003863,1003864,1003865,1003866,1004041,1004121,1004261,1004262,1004281,1004321,1004262,1004281,1004322,1004261,1004421,1004422,1002781,1004301,1004641,1004761,1005061,1005261,1005301,1005321,1005361,1005362,1005341,1005342,1005521,1005722,1005721,1015749,1015761,1015760,1015762,1015763,1015768,1015786,1015790,1015812,1015813,1015814,1015815,1015816,1015817,1015820,1015819,1015821', 'sid': '1X4A395AL3XS3UV5MT8PQ1L5JUYK6KFM8VKDSDD48S5Y7YX5WY1MOUHRT6512988' }",
28
28
  "rewriteHeaders": {
29
29
  "Origin": "'https://www.miguvideo.com'",
30
30
  "Referer": "'https://www.miguvideo.com/'",
@@ -33,7 +33,7 @@
33
33
  }
34
34
  }
35
35
  ],
36
- "output": "[search.body.contentInfoList[$exists(shortMediaAsset) and shortMediaAsset.isLong = true].($sma := shortMediaAsset; $eps := $exists($sma.extraData.episodes[0]) ? $sma.extraData.episodes[0] : $sma.pID; { 'providerIds': { 'epsId': $string($eps) }, 'indexedId': $string($eps), 'title': $sma.name, 'type': $sma.contDisplayName, 'typeDescription': $sma.contDisplayName, 'imageUrl': $sma.h5pics.highResolutionV, 'year': $exists($sma.year) and $trim($sma.year) != '' ? $number($trim($sma.year)) : null })]"
36
+ "output": "($fromList := [search.body.contentInfoList.shortMediaAsset[isLong = 1 or isLong = true]]; $fromCluster := [search.body.mediaClusterInfo.mediaAssetList[isLong = 1 or isLong = true]]; [$append($fromList, $fromCluster).($sma := $; $eps := $exists($sma.extraData.episodes[0]) ? $sma.extraData.episodes[0] : $sma.pID; { 'providerIds': { 'epsId': $string($eps) }, 'indexedId': $string($eps), 'title': $sma.name, 'type': $sma.contDisplayName, 'typeDescription': $sma.contDisplayName, 'imageUrl': $sma.h5pics.highResolutionV, 'year': $exists($sma.year) and $trim($sma.year) != '' ? $number($trim($sma.year)) : null })])"
37
37
  },
38
38
  "episodes": {
39
39
  "inputs": ["epsId"],
@@ -105,6 +105,6 @@
105
105
  "collect": "comments"
106
106
  }
107
107
  ],
108
- "output": "[segments.{ 'cid': $number(cid), 'p': $string(playtime) & ',1,' & $string(textcolor ? $hexToInt(textcolor) : 16777215), 'm': msg }]"
108
+ "output": "[segments.{ 'cid': $number(cid), 'p': $string(playtime) & ',1,' & $string($exists(textcolor) and textcolor != '' ? ($h := $hexToInt($replace($string(textcolor), '#', '')); $h >= 0 ? $h : 16777215) : 16777215), 'm': msg }]"
109
109
  }
110
110
  }
@@ -8,7 +8,7 @@
8
8
  "name": "优酷"
9
9
  }
10
10
  },
11
- "version": "0.5.0",
11
+ "version": "0.5.1",
12
12
  "hosts": [
13
13
  "search.youku.com",
14
14
  "openapi.youku.com",
@@ -96,7 +96,7 @@
96
96
  "type": "assign",
97
97
  "id": "prep",
98
98
  "values": {
99
- "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) }) })"
99
+ "iters": "$type(tkEnc.tk) = 'string' and tkEnc.tk != '' ? $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) }) }) : []"
100
100
  }
101
101
  },
102
102
  {