Skip to content

Commit 54f9fea

Browse files
author
Taois
committed
feat: 发布新版本
1 parent 124de81 commit 54f9fea

25 files changed

+2759
-52
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,3 +147,4 @@ dist
147147
/database.db
148148
/scripts/python/XYQ提取结果.json
149149
*.pyc
150+
/scripts/python/appMap.txt

README.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# drpyS(drpy-node)
22

33
nodejs作为服务端的drpy实现。全面升级异步写法
4-
~~积极开发中,每日一更~~,当前进度 `80%`
4+
~~积极开发中,每日一更~~,当前进度 `82%`
55
~~找工作中,随缘更新~~
66
上班当牛马,下班要带娃,阶段性佛系趁娃睡觉熬夜更新
77

@@ -25,6 +25,10 @@ nodejs作为服务端的drpy实现。全面升级异步写法
2525

2626
## 更新记录
2727

28+
### 20250822
29+
30+
更新至V1.2.17
31+
2832
### 20250821
2933

3034
更新至V1.2.16

config/map.txt

Lines changed: 65 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,65 @@
1-
哔哩收藏[官]@?render=1&type=url&params=../json/哔哩收藏.json@哔哩收藏[官]
2-
我的哔哩[官]@?render=1&type=url&params=../json/哔哩教育.json@哔哩教育[官]
3-
我的哔哩[官]@?render=1&type=url&params=../json/哔哩少儿.json@哔哩少儿[官]
4-
我的哔哩[官]@?render=1&type=url&params=../json/哔哩大全.json@哔哩大全[官]
5-
我的哔哩[官]@?render=1&type=url&params=../json/哔哩大杂烩.json@哔哩大杂烩[官]
6-
直播转点播[合]@?type=url&params=../json/live2cms.json
7-
采集之王[合]@?type=url&params=../json/采集静态.json$1@采王道长[合]
8-
采集之王[合]@?type=url&params=../json/采集[zy]静态.json$1@采王zy[密]
9-
采集之王[合]@?type=url&params=../json/采集[密]静态.json$1$@采王成人[密]
10-
采集之王[合]@?type=url&params=../json/采集2024静态.json$1$@采王2024
11-
采集之王[合]@?type=url&params=../json/采集2025静态.json$1$@采王2025
12-
UC分享@?type=url&params=../json/UC分享.json@UC分享[盘]
13-
16wMV[听]@?type=url&params=../json/十六万歌曲.txt
14-
点歌欢唱[B]@?type=url&params=../json/十六万歌曲.txt
15-
Appfox@http://app.hktvyb.cc@TVB云播|APP
16-
Appfox@{"host":"http://45.192.110.211:1513","parse":{"qq|qiyi|mgtv|youku|bilibili":"https://api.qljson.xyz/api/?key=67f6a108dc6d84eaf81ac58417c1f72a&url="}}@魔方影视|APP
17-
Appfox@{"host":"https://cunchu8.obs.cn-north-4.myhuaweicloud.com/config.json","parse":{"JL4K":"http://194.147.100.155:7891/?url="}}@火猫影视|APP
18-
Appfox@{"host":"http://kumiao.yzbao.com.cn","parse":{"qq|qiyi|mgtv|youku|bilibili":"https://api.qljson.xyz/api/?key=67f6a108dc6d84eaf81ac58417c1f72a&url="}}@未来影视|APP
19-
getapp3.4.1@{"host":"https://appcms.xy4k.com","datakey":"7SDWjknU34zqFbVr"}@小羊4k
20-
getapp3.4.1@{"host":"https://jingyu4k-1312635929.cos.ap-nanjing.myqcloud.com/1.json","datakey":"AAdgrdghjfgswerA","api":2}@鲸鱼影视
1+
哔哩收藏[官]@@?render=1&type=url&params=../json/哔哩收藏.json@@哔哩收藏[官]
2+
我的哔哩[官]@@?render=1&type=url&params=../json/哔哩教育.json@@哔哩教育[官]
3+
我的哔哩[官]@@?render=1&type=url&params=../json/哔哩少儿.json@@哔哩少儿[官]
4+
我的哔哩[官]@@?render=1&type=url&params=../json/哔哩大全.json@@哔哩大全[官]
5+
我的哔哩[官]@@?render=1&type=url&params=../json/哔哩大杂烩.json@@哔哩大杂烩[官]
6+
直播转点播[合]@@?type=url&params=../json/live2cms.json
7+
采集之王[合]@@?type=url&params=../json/采集静态.json$1@@采王道长[合]
8+
采集之王[合]@@?type=url&params=../json/采集[zy]静态.json$1@@采王zy[密]
9+
采集之王[合]@@?type=url&params=../json/采集[密]静态.json$1$@@采王成人[密]
10+
采集之王[合]@@?type=url&params=../json/采集2024静态.json$1$@@采王2024
11+
采集之王[合]@@?type=url&params=../json/采集2025静态.json$1$@@采王2025
12+
UC分享@@?type=url&params=../json/UC分享.json@@UC分享[盘]
13+
16wMV[听]@@?type=url&params=../json/十六万歌曲.txt
14+
点歌欢唱[B]@@?type=url&params=../json/十六万歌曲.txt
15+
AppFox@@http://app.hktvyb.cc@@TVB云播[AFX]
16+
AppFox@@{"host": "https://cunchu8.obs.cn-north-4.myhuaweicloud.com/config.json", "parse": {"JL4K": "http://194.147.100.155:7891/?url="}}@@火猫影视[AFX]
17+
AppFox@@{"host": "http://kumiao.yzbao.com.cn", "parse": {"qq|qiyi|mgtv|youku|bilibili": "https://api.qljson.xyz/api/?key=67f6a108dc6d84eaf81ac58417c1f72a&url="}}@@未来影视[AFX]
18+
AppFei@@https://ysc.yy-fun.cc/feiapp@@呀哩4K[AF]
19+
AppFei@@https://ysa.yy-fun.cc/feiapp@@森林动漫[AF]
20+
AppGet@@{"host": "https://api1.bffree.cn", "key": "2015692015692015"}@@橘子[AG¹]
21+
AppGet@@{"host": "https://dy.58ys.vip", "key": "JEWibY1AgWF0V1xx"}@@五八[AG¹]
22+
AppGet@@{"host": "https://mac.555618.xyz", "key": "#getapp@TMD@2025"}@@玲珑[AG¹]
23+
AppGet@@{"host": "http://122.228.193.2:9654", "key": "ca94b06ca3c7d80e"}@@蓝光[AG¹]
24+
AppGet@@{"host": "http://110.40.59.188:9527", "key": "ebad3f1a58b13933"}@@若惜[AG¹]
25+
AppGet@@{"host": "http://154.12.90.59:14500", "key": "J6AIORKJ3PQOJKM3"}@@火猫[AG¹]
26+
AppGet@@{"host": "http://www.milkidc.cn", "key": "20c79c979da8db0f"}@@米诺-旧[AG¹]
27+
AppGet@@{"host": "http://new.tkbot.fun", "key": "d032c12876bc6848"}@@米兔-旧[AG¹]
28+
AppGet@@{"host": "http://jjjj.nilinili.org", "key": "672263e98f232a05"}@@囧次元[AG¹]
29+
AppGet@@{"host": "https://app.omofun1.top", "key": "66dc309cbeeca454"}@@OMOfun[AG¹]
30+
AppGet@@{"host": "http://tv.yy-fun.cc", "key": "qkxnwkfjwpcnwycl"}@@丫丫动漫[AG¹]
31+
AppGet@@{"host": "https://newappcms.cs4k.top", "key": "Z98KXaLtO2wC1Pte", "path": "/api.php/qijiappapi"}@@仓鼠[AG²]
32+
AppGet@@{"host": "https://lanyinghz.oss-cn-hangzhou.aliyuncs.com/lanyingxmy.txt", "key": "ca94b06ca359d80e", "path": "/api.php/qijiappapi"}@@雄鹰[AG²]
33+
AppMuou@@{"host": "https://muouapp.oss-cn-hangzhou.aliyuncs.com/MUOUAPP/764119293.txt", "version": "4.2.0"}@@23影视[AM]
34+
AppSk@@{"host": "https://skyappdata-1321528676.cos.accelerate.myqcloud.com/4kapp/appipr.txt", "key": "ygcnbckhcuvygdyb", "iv": "4023892775143708"}@@即看影视[AS]
35+
AppSk@@{"host": "https://kankelm.cn:2024/appdomain.txt", "key": "ygcnbcvybqqckwqy", "iv": "1583560747143708"}@@看客联盟[AS]
36+
AppSk@@{"host": "https://dmsk.oss-rg-china-mainland.aliyuncs.com/dmapp/dmapi.txt", "key": "ygcnbcobcegtgigg", "iv": "4058263969143708"}@@2k动漫[AS]
37+
AppSk@@{"host": "https://sk.xiaoyaoys.top/skkkkkkk.txt", "key": "ygcnbcczduwydmrs", "iv": "4672921073143708"}@@Free影视[AS]
38+
AppV6@@{"api": "http://yjyi.juyongjiu.com/icciu_api.php/v1.vod", "datasignkey": "6QQNUsP3PkD2ajJCPCY8", "apisignkey": "lvdoutv-1.0.0"}@@剧永久[AV⁶]
39+
AppV6@@http://jxfmax.juxiafan.com/icciu_api.php/v1.vod@@剧下饭[AV⁶]
40+
AppV2¹@@http://160.202.231.210:7080/ikumiao_api.php/v1.vod@@酷秒至尊[AV2¹]
41+
AppToV5@@http://118.89.203.120:8762@@番喜[ATV⁵]
42+
AppToV5@@http://118.89.203.120:8366@@畅看[ATV⁵]
43+
AppToV5@@http://111.173.114.61:8762@@爱看剧Fax[ATV⁵]
44+
AppToV5@@http://38.55.237.41:8762@@皮皮虾[ATV⁵]
45+
AppV2²@@https://dmz8k4.wiki@@大米[AV²]
46+
AppV2²@@https://www.heli888.cc@@河狸![AV²]
47+
AppV2²@@http://38.47.213.61:41271@@闪影[AV²]
48+
AppV2²@@https://www.rebovod.com@@热剧[AV²]
49+
AppV2²@@http://v.lnhaozhenjin.cn@@好震惊[AV²]
50+
AppV2²@@http://jxfmax.juxiafan.com@@剧下饭[AV²]
51+
AppV1@@http://ziyuncms.feifan12.xyz/api.php@@紫云[AV¹]
52+
getapp3.4.2@@{"host": "https://appcms.xy4k.com", "datakey": "7SDWjknU34zqFbVr"}@@小羊4k[AG³]
53+
getapp3.4.2@@{"host": "https://jingyu4k-1312635929.cos.ap-nanjing.myqcloud.com/1.json", "datakey": "AAdgrdghjfgswerA", "api": 2}@@鲸鱼影视[AG³]
54+
getapp3.4.2@@{"host": "https://staraugust123456.oss-cn-hangzhou.aliyuncs.com/1.txt", "datakey": "staraugust123456", "api": 2}@@云云[AG³]
55+
getapp3.4.2@@{"host": "http://tengxunyunaliyun.oss-cn-shanghai.aliyuncs.com/tengxunyun.txt", "datakey": "n3l2tx5jdkp9s2c8"}@@白蛇[AG³]
56+
getapp3.4.2@@{"host": "http://appcms.4kdq.icu", "key": "R6FVRw4jsy4Hsitj"}@@4K大全[AG³]
57+
getapp3.4.2@@{"host": "https://www.guahd.com/1.txt", "key": "f2A7D4B9E8C16531"}@@瓜萌[AG³]
58+
getapp3.4.2@@{"host": "https://www.gugu3.com", "key": "nKfZ8KX6JTNWRzTD"}@@咕咕动漫[AG³]
59+
getapp3.4.2@@{"host": "https://apiapplbys.lbys.app:5678", "key": "apiapplbyskey168"}@@萝卜[AG³]
60+
getapp3.4.2@@{"host": "https://99.jl8.top/1.txt", "key": "xnybssspqtwotuwj"}@@七月[AG³]
61+
getapp3.4.2@@{"host": "https://qjappcms.sun4k.top", "key": "sBxqXVF5pAHbGzrH"}@@晴天[AG³]
62+
getapp3.4.2@@{"host": "https://sykjw.xyz", "key": "sicnagduxbSfisnz", "api": 2}@@世颜[AG³]
63+
getapp3.4.2@@{"host": "https://guowaiju.com", "key": "7xv16h7qgkrs9b1p"}@@外剧[AG³]
64+
getapp3.4.2@@{"host": "https://appcms.xy4k.com", "key": "7SDWjknU34zqFbVr"}@@小野[AG³]
65+
getapp3.4.2@@{"host": "http://tvb.yy-fun.cc", "key": "jcTz6Jda2aKrH8Tk"}@@掌上追剧[AG³]

controllers/config.js

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,11 @@ async function generateSiteJSON(options, requestHost, sub, pwd) {
109109
valid_files = valid_files.filter(it => !(new RegExp('\\[[密]\\]|密+')).test(it));
110110
}
111111
let SitesMap = getSitesMap(configDir);
112+
let mubanKeys = Object.keys(SitesMap);
112113
// console.log(SitesMap);
114+
// console.log(mubanKeys);
115+
// 排除模板后缀的DS源
116+
valid_files = valid_files.filter(it => !/\[]\.js$/.test(it));
113117
log(`开始生成ds的t4配置,jsDir:${jsDir},源数量: ${valid_files.length}`);
114118
const tasks = valid_files.map((file) => {
115119
return {
@@ -156,11 +160,12 @@ async function generateSiteJSON(options, requestHost, sub, pwd) {
156160
ruleMeta.title = enableRuleName ? ruleMeta.title || baseName : baseName;
157161

158162
let fileSites = [];
163+
const isMuban = mubanKeys.includes(baseName);
159164
if (baseName === 'push_agent') {
160165
let key = 'push_agent';
161166
let name = `${ruleMeta.title}(DS)`;
162167
fileSites.push({key, name});
163-
} else if (SitesMap.hasOwnProperty(baseName) && Array.isArray(SitesMap[baseName])) {
168+
} else if (isMuban && SitesMap.hasOwnProperty(baseName) && Array.isArray(SitesMap[baseName])) {
164169
SitesMap[baseName].forEach((it) => {
165170
let key = `drpyS_${it.alias}`;
166171
let name = `${it.alias}(DS)`;
@@ -170,6 +175,8 @@ async function generateSiteJSON(options, requestHost, sub, pwd) {
170175
}
171176
fileSites.push({key, name, ext});
172177
});
178+
} else if (isMuban) {
179+
return
173180
} else {
174181
let key = `drpyS_${ruleMeta.title}`;
175182
let name = `${ruleMeta.title}(DS)`;
@@ -380,11 +387,12 @@ async function generateSiteJSON(options, requestHost, sub, pwd) {
380387

381388
let fileSites = [];
382389
ext = ext || ruleMeta.ext || '';
390+
const isMuban = mubanKeys.includes(baseName) || /^(APP|getapp3)/.test(baseName);
383391
if (baseName === 'push_agent') {
384392
let key = 'push_agent';
385393
let name = `${ruleMeta.title}(hipy)`;
386394
fileSites.push({key, name, ext});
387-
} else if (SitesMap.hasOwnProperty(baseName) && Array.isArray(SitesMap[baseName])) {
395+
} else if (isMuban && SitesMap.hasOwnProperty(baseName) && Array.isArray(SitesMap[baseName])) {
388396
// console.log(SitesMap[baseName]);
389397
SitesMap[baseName].forEach((it) => {
390398
let key = `hipy_py_${it.alias}`;
@@ -396,6 +404,8 @@ async function generateSiteJSON(options, requestHost, sub, pwd) {
396404
console.log(`[HIPY-${baseName}] alias name: ${name},typeof _ext:${typeof _ext},_ext: ${logExt(_ext)}`);
397405
fileSites.push({key, name, ext: _ext});
398406
});
407+
} else if (isMuban) {
408+
return
399409
} else {
400410
let key = `hipy_py_${ruleMeta.title}`;
401411
let name = `${ruleMeta.title}(hipy)`;
@@ -436,11 +446,12 @@ async function generateSiteJSON(options, requestHost, sub, pwd) {
436446
func: async ({file, catDir, requestHost, pwd, SitesMap}) => {
437447
const baseName = path.basename(file, '.js'); // 去掉文件扩展名
438448
const extJson = path.join(catDir, baseName + '.json');
439-
let api = enable_cat === '1' ? `${requestHost}/cat/${file}` : `${requestHost}/api/${baseName}?do=cat`; // 使用请求的 host 地址,避免硬编码端口
449+
const isT3 = enable_cat === '1' || baseName.includes('[B]');
450+
let api = isT3 ? `${requestHost}/cat/${file}` : `${requestHost}/api/${baseName}?do=cat`; // 使用请求的 host 地址,避免硬编码端口
440451
let ext = existsSync(extJson) ? `${requestHost}/cat/${file}` : '';
441452

442453
if (pwd) {
443-
api += api_type === 3 ? '?' : '&';
454+
api += isT3 ? '?' : '&';
444455
api += `pwd=${pwd}`;
445456
if (ext) {
446457
ext += `?pwd=${pwd}`;
@@ -500,7 +511,7 @@ async function generateSiteJSON(options, requestHost, sub, pwd) {
500511
const site = {
501512
key: fileSite.key,
502513
name: fileSite.name,
503-
type: api_type, // 固定值
514+
type: isT3 ? 3 : api_type, // 固定值
504515
api,
505516
...ruleMeta,
506517
ext: fileSite.ext || "", // 固定为空字符串

docs/updateRecord.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
11
# drpyS更新记录
22

3+
### 20250822
4+
5+
更新至V1.2.17
6+
7+
1. 增加一堆 `hipy` 模板源 和相关APP模板
8+
2. hipy spider 增加 `setCache` `getCache` 函数
9+
3. map.txt 分隔符从 `@` 改为 `@@`
10+
311
### 20250821
412

513
更新至V1.2.16

index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ const handleExit = async (signal) => {
110110
};
111111

112112
// 捕获常见退出信号(Linux 上 pm2 stop 会发 SIGINT 或 SIGTERM)
113-
['SIGINT', 'SIGTERM'].forEach((sig) => {
113+
['SIGINT', 'SIGTERM', 'SIGUSR2'].forEach((sig) => {
114114
process.on(sig, () => handleExit(sig));
115115
});
116116

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "drpy-node",
3-
"version": "1.2.16",
3+
"version": "1.2.17",
44
"main": "index.js",
55
"type": "module",
66
"scripts": {

public/index.html

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
</head>
99
<body>
1010
<h1 id="drpysdrpy-node">drpyS(drpy-node)</h1>
11-
<p>nodejs作为服务端的drpy实现。全面升级异步写法<br><del>积极开发中,每日一更</del>,当前进度 <code>80%</code><br><del>找工作中,随缘更新</del><br>上班当牛马,下班要带娃,阶段性佛系趁娃睡觉熬夜更新</p>
11+
<p>nodejs作为服务端的drpy实现。全面升级异步写法<br><del>积极开发中,每日一更</del>,当前进度 <code>82%</code><br><del>找工作中,随缘更新</del><br>上班当牛马,下班要带娃,阶段性佛系趁娃睡觉熬夜更新</p>
1212
<ul>
1313
<li><a href="docs/apidoc.md">接口文档</a> | <a href="docs/apiList.md">接口列表如定时任务</a> | <a href="https://github.com/waifu-project/movie/pull/135">小猫影视-待对接T4</a></li>
1414
<li><a href="/config?pwd=dzyyds">本地配置接口-动态本地</a></li>
@@ -29,6 +29,8 @@ <h1 id="drpysdrpy-node">drpyS(drpy-node)</h1>
2929
<li><a href="/cat/index.html">在线猫ds源主页</a></li>
3030
</ul>
3131
<h2 id="更新记录">更新记录</h2>
32+
<h3 id="20250822">20250822</h3>
33+
<p>更新至V1.2.17</p>
3234
<h3 id="20250821">20250821</h3>
3335
<p>更新至V1.2.16</p>
3436
<h3 id="20250819">20250819</h3>
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import json
2+
import os
3+
4+
5+
def process_json_to_txt(json_file_path, output_txt_path):
6+
# 读取JSON文件
7+
with open(json_file_path, 'r', encoding='utf-8') as f:
8+
data = json.load(f)
9+
10+
results = []
11+
splitStr = '@@'
12+
13+
for item in data:
14+
# 从api字段提取文件名(不含.py后缀)
15+
api_path = item.get('api', '')
16+
filename = os.path.splitext(os.path.basename(api_path))[0]
17+
18+
# 获取name字段
19+
name = item.get('name', '')
20+
21+
# 处理exts字段
22+
exts = item.get('exts', {})
23+
for key, value in exts.items():
24+
if isinstance(value, dict):
25+
value = json.dumps(value, ensure_ascii=False)
26+
line = f"{filename}{splitStr}{value}{splitStr}{key}[{name}]"
27+
results.append(line)
28+
29+
# 写入TXT文件
30+
with open(output_txt_path, 'w+', encoding='utf-8') as f:
31+
f.write('\n'.join(results).strip())
32+
33+
print(f"处理完成,共生成 {len(results)} 行数据")
34+
35+
36+
# 使用示例
37+
if __name__ == "__main__":
38+
input_json = "App_PY.json" # 输入的JSON文件路径
39+
output_txt = "appMap.txt" # 输出的TXT文件路径
40+
41+
process_json_to_txt(input_json, output_txt)

0 commit comments

Comments
 (0)