diff --git a/.github/Toos/大秀直播/aisimu.py b/.github/Toos/大秀直播/aisimu.py old mode 100644 new mode 100755 diff --git a/.github/Toos/大秀直播/config.json b/.github/Toos/大秀直播/config.json old mode 100644 new mode 100755 diff --git a/.github/Toos/大秀直播/说明.txt b/.github/Toos/大秀直播/说明.txt old mode 100644 new mode 100755 diff --git a/.github/Toos/色播聚合/ss.py b/.github/Toos/色播聚合/ss.py old mode 100644 new mode 100755 diff --git a/.github/Toos/色播聚合/色播聚合.m3u b/.github/Toos/色播聚合/色播聚合.m3u old mode 100644 new mode 100755 diff --git a/.github/Toos/色播聚合/说明.txt b/.github/Toos/色播聚合/说明.txt old mode 100644 new mode 100755 diff --git a/.github/Toos/静态页/FinalShell激活码生成/FinalShell完整版/finalshell/finalshell.zip b/.github/Toos/静态页/FinalShell激活码生成/FinalShell完整版/finalshell/finalshell.zip old mode 100644 new mode 100755 diff --git a/.github/Toos/静态页/FinalShell激活码生成/FinalShell完整版/finalshell/index.html b/.github/Toos/静态页/FinalShell激活码生成/FinalShell完整版/finalshell/index.html old mode 100644 new mode 100755 diff --git a/.github/Toos/静态页/FinalShell激活码生成/FinalShell完整版/finalshell/rede/1.png b/.github/Toos/静态页/FinalShell激活码生成/FinalShell完整版/finalshell/rede/1.png old mode 100644 new mode 100755 diff --git a/.github/Toos/静态页/FinalShell激活码生成/FinalShell完整版/finalshell/rede/10.png b/.github/Toos/静态页/FinalShell激活码生成/FinalShell完整版/finalshell/rede/10.png old mode 100644 new mode 100755 diff --git a/.github/Toos/静态页/FinalShell激活码生成/FinalShell完整版/finalshell/rede/11.png b/.github/Toos/静态页/FinalShell激活码生成/FinalShell完整版/finalshell/rede/11.png old mode 100644 new mode 100755 diff --git a/.github/Toos/静态页/FinalShell激活码生成/FinalShell完整版/finalshell/rede/12.png b/.github/Toos/静态页/FinalShell激活码生成/FinalShell完整版/finalshell/rede/12.png old mode 100644 new mode 100755 diff --git a/.github/Toos/静态页/FinalShell激活码生成/FinalShell完整版/finalshell/rede/13.png b/.github/Toos/静态页/FinalShell激活码生成/FinalShell完整版/finalshell/rede/13.png old mode 100644 new mode 100755 diff --git a/.github/Toos/静态页/FinalShell激活码生成/FinalShell完整版/finalshell/rede/14.png b/.github/Toos/静态页/FinalShell激活码生成/FinalShell完整版/finalshell/rede/14.png old mode 100644 new mode 100755 diff --git a/.github/Toos/静态页/FinalShell激活码生成/FinalShell完整版/finalshell/rede/15.png b/.github/Toos/静态页/FinalShell激活码生成/FinalShell完整版/finalshell/rede/15.png old mode 100644 new mode 100755 diff --git a/.github/Toos/静态页/FinalShell激活码生成/FinalShell完整版/finalshell/rede/16.png b/.github/Toos/静态页/FinalShell激活码生成/FinalShell完整版/finalshell/rede/16.png old mode 100644 new mode 100755 diff --git a/.github/Toos/静态页/FinalShell激活码生成/FinalShell完整版/finalshell/rede/17.png b/.github/Toos/静态页/FinalShell激活码生成/FinalShell完整版/finalshell/rede/17.png old mode 100644 new mode 100755 diff --git a/.github/Toos/静态页/FinalShell激活码生成/FinalShell完整版/finalshell/rede/18.png b/.github/Toos/静态页/FinalShell激活码生成/FinalShell完整版/finalshell/rede/18.png old mode 100644 new mode 100755 diff --git a/.github/Toos/静态页/FinalShell激活码生成/FinalShell完整版/finalshell/rede/2.png b/.github/Toos/静态页/FinalShell激活码生成/FinalShell完整版/finalshell/rede/2.png old mode 100644 new mode 100755 diff --git a/.github/Toos/静态页/FinalShell激活码生成/FinalShell完整版/finalshell/rede/3.png b/.github/Toos/静态页/FinalShell激活码生成/FinalShell完整版/finalshell/rede/3.png old mode 100644 new mode 100755 diff --git a/.github/Toos/静态页/FinalShell激活码生成/FinalShell完整版/finalshell/rede/4.png b/.github/Toos/静态页/FinalShell激活码生成/FinalShell完整版/finalshell/rede/4.png old mode 100644 new mode 100755 diff --git a/.github/Toos/静态页/FinalShell激活码生成/FinalShell完整版/finalshell/rede/5.png b/.github/Toos/静态页/FinalShell激活码生成/FinalShell完整版/finalshell/rede/5.png old mode 100644 new mode 100755 diff --git a/.github/Toos/静态页/FinalShell激活码生成/FinalShell完整版/finalshell/rede/6.png b/.github/Toos/静态页/FinalShell激活码生成/FinalShell完整版/finalshell/rede/6.png old mode 100644 new mode 100755 diff --git a/.github/Toos/静态页/FinalShell激活码生成/FinalShell完整版/finalshell/rede/7.png b/.github/Toos/静态页/FinalShell激活码生成/FinalShell完整版/finalshell/rede/7.png old mode 100644 new mode 100755 diff --git a/.github/Toos/静态页/FinalShell激活码生成/FinalShell完整版/finalshell/rede/8.png b/.github/Toos/静态页/FinalShell激活码生成/FinalShell完整版/finalshell/rede/8.png old mode 100644 new mode 100755 diff --git a/.github/Toos/静态页/FinalShell激活码生成/FinalShell完整版/finalshell/rede/9.png b/.github/Toos/静态页/FinalShell激活码生成/FinalShell完整版/finalshell/rede/9.png old mode 100644 new mode 100755 diff --git a/.github/Toos/静态页/FinalShell激活码生成/FinalShell完整版/finalshell/rede/index.html b/.github/Toos/静态页/FinalShell激活码生成/FinalShell完整版/finalshell/rede/index.html old mode 100644 new mode 100755 diff --git a/.github/Toos/静态页/FinalShell激活码生成/index.html b/.github/Toos/静态页/FinalShell激活码生成/index.html old mode 100644 new mode 100755 diff --git a/.github/Toos/静态页/FinalShell激活码生成/文字美化版-无颜色变化/index.html b/.github/Toos/静态页/FinalShell激活码生成/文字美化版-无颜色变化/index.html old mode 100644 new mode 100755 diff --git a/.github/Toos/静态页/FinalShell激活码生成/文字美化版-无颜色变化/index.zip b/.github/Toos/静态页/FinalShell激活码生成/文字美化版-无颜色变化/index.zip old mode 100644 new mode 100755 diff --git a/.github/Toos/静态页/FinalShell激活码生成/文字美化版-自动变换颜色/index.html b/.github/Toos/静态页/FinalShell激活码生成/文字美化版-自动变换颜色/index.html old mode 100644 new mode 100755 diff --git a/.github/Toos/静态页/FinalShell激活码生成/文字美化版-自动变换颜色/index.zip b/.github/Toos/静态页/FinalShell激活码生成/文字美化版-自动变换颜色/index.zip old mode 100644 new mode 100755 diff --git a/.github/Toos/静态页/FinalShell激活码生成/无文字美化版/index.html b/.github/Toos/静态页/FinalShell激活码生成/无文字美化版/index.html old mode 100644 new mode 100755 diff --git a/.github/Toos/静态页/FinalShell激活码生成/无文字美化版/index.zip b/.github/Toos/静态页/FinalShell激活码生成/无文字美化版/index.zip old mode 100644 new mode 100755 diff --git a/.github/Toos/静态页/JSON代码生成器/index.html b/.github/Toos/静态页/JSON代码生成器/index.html old mode 100644 new mode 100755 diff --git a/.github/Toos/静态页/JSON代码生成器/index.zip b/.github/Toos/静态页/JSON代码生成器/index.zip old mode 100644 new mode 100755 diff --git a/.github/Toos/静态页/TVBox加解密/TVBox加解密.zip b/.github/Toos/静态页/TVBox加解密/TVBox加解密.zip old mode 100644 new mode 100755 diff --git a/.github/Toos/静态页/TVBox加解密/index.html b/.github/Toos/静态页/TVBox加解密/index.html old mode 100644 new mode 100755 diff --git a/.github/Toos/静态页/TVBox加解密/static/css/index.css b/.github/Toos/静态页/TVBox加解密/static/css/index.css old mode 100644 new mode 100755 diff --git a/.github/Toos/静态页/TVBox加解密/static/js/crypto-js.min.js b/.github/Toos/静态页/TVBox加解密/static/js/crypto-js.min.js old mode 100644 new mode 100755 diff --git a/.github/Toos/静态页/TVBox加解密/static/js/editor.js b/.github/Toos/静态页/TVBox加解密/static/js/editor.js old mode 100644 new mode 100755 diff --git a/.github/Toos/静态页/TVBox加解密/static/js/index.full.js b/.github/Toos/静态页/TVBox加解密/static/js/index.full.js old mode 100644 new mode 100755 diff --git a/.github/Toos/静态页/TVBox加解密/static/js/jquery.min.js b/.github/Toos/静态页/TVBox加解密/static/js/jquery.min.js old mode 100644 new mode 100755 diff --git a/.github/Toos/静态页/TVBox加解密/static/js/vue.global.js b/.github/Toos/静态页/TVBox加解密/static/js/vue.global.js old mode 100644 new mode 100755 diff --git a/.github/Toos/静态页/TVBox加解密/toos/index.html b/.github/Toos/静态页/TVBox加解密/toos/index.html old mode 100644 new mode 100755 diff --git a/.github/Toos/静态页/txt_m3u格式互转/index.html b/.github/Toos/静态页/txt_m3u格式互转/index.html old mode 100644 new mode 100755 diff --git a/.github/Toos/静态页/txt_m3u格式互转/index.zip b/.github/Toos/静态页/txt_m3u格式互转/index.zip old mode 100644 new mode 100755 diff --git a/.github/Toos/静态页/哪吒监控V1自定义配置生成器/index.html b/.github/Toos/静态页/哪吒监控V1自定义配置生成器/index.html old mode 100644 new mode 100755 diff --git a/.github/Toos/静态页/智能播放列表工具箱/index.htm b/.github/Toos/静态页/智能播放列表工具箱/index.htm old mode 100644 new mode 100755 diff --git a/.github/Toos/静态页/智能播放列表工具箱/智能播放列表工具箱.zip b/.github/Toos/静态页/智能播放列表工具箱/智能播放列表工具箱.zip old mode 100644 new mode 100755 diff --git a/.github/Toos/静态页/透明代理面板/.gitkeep b/.github/Toos/静态页/透明代理面板/.gitkeep old mode 100644 new mode 100755 diff --git a/.github/requirements.txt b/.github/requirements.txt index 689ff9b49..d9ee2e615 100755 --- a/.github/requirements.txt +++ b/.github/requirements.txt @@ -3,4 +3,6 @@ Telethon==1.37.0 requests==2.32.4 typing_extensions==4.12.2 demoji==1.1.0 -tqdm==4.66.5 \ No newline at end of file +tqdm==4.66.5 + +aiohttp>=3.9.0 diff --git a/.github/workflows/greetings.yml b/.github/workflows/greetings.yml old mode 100644 new mode 100755 diff --git a/.github/workflows/md5.yml b/.github/workflows/md5.yml old mode 100644 new mode 100755 diff --git a/.github/workflows/summary.yml b/.github/workflows/summary.yml old mode 100644 new mode 100755 diff --git a/.github/workflows/toos.yml b/.github/workflows/toos.yml new file mode 100644 index 000000000..9e36d292d --- /dev/null +++ b/.github/workflows/toos.yml @@ -0,0 +1,73 @@ +name: Update Toos + +permissions: + contents: write + actions: write + +on: + schedule: + - cron: '30 2 * * *' + workflow_dispatch: + +env: + TZ: Asia/Shanghai + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + Update: + runs-on: self-hosted + timeout-minutes: 15 + + steps: + - name: Checkout repository + uses: actions/checkout@v6 + with: + repository: cluntop/tvbox + token: ${{ secrets.GIT_TOKEN }} + fetch-depth: 1 + + - name: Delete old workflow runs + uses: Mattraks/delete-workflow-runs@v2 + with: + token: ${{ github.token }} + repository: ${{ github.repository }} + retain_days: 1 + keep_minimum_runs: 3 + + #- name: Set up Python + # uses: actions/setup-python@v6 + # with: + # python-version: '3.10' + # cache: 'pip' + + - name: Install dependencies + run: | + python -m venv .venv + source .venv/bin/activate + python -m pip install --upgrade pip + if [ -f .github/requirements.txt ]; then pip install -r .github/requirements.txt; fi + # pip install pandas requests + + - name: Run M3U script + run: | + source .venv/bin/activate + python py/ssjh.py + + - name: Commit and Push changes + run: | + git config --global user.name "GitHub Actions" + git config --global user.email "actions@github.com" + + if [ -n "$(git status --porcelain)" ]; then + echo "Changes detected, committing..." + git add . + git commit -m "Update m3u" + + git pull --rebase origin main + git push origin main + else + echo "No changes detected, skipping push." + fi diff --git a/.github/workflows/tv_run.yml b/.github/workflows/tv.yml similarity index 100% rename from .github/workflows/tv_run.yml rename to .github/workflows/tv.yml diff --git a/CNAME b/CNAME old mode 100644 new mode 100755 diff --git a/box.json b/box.json old mode 100644 new mode 100755 diff --git a/fun.json b/fun.json old mode 100644 new mode 100755 index 5ebcef111..67cc9772f --- a/fun.json +++ b/fun.json @@ -824,7 +824,6 @@ "url": "./lib/18/rwcr.m3u", "ua": "" }, - { "name": "LIVEfl", "type": 0, diff --git a/git.sh b/git.sh old mode 100644 new mode 100755 diff --git a/jar/WvSpider.jar b/jar/WvSpider.jar old mode 100644 new mode 100755 diff --git a/jar/vox.jar b/jar/vox.jar old mode 100644 new mode 100755 diff --git a/jar/zc0202.jar b/jar/zc0202.jar old mode 100644 new mode 100755 diff --git a/js/3Q影视_Wv.js b/js/3Q影视_Wv.js old mode 100644 new mode 100755 diff --git a/js/3Q影视_Wv.js.md5 b/js/3Q影视_Wv.js.md5 old mode 100644 new mode 100755 diff --git a/js/4khdr.js.md5 b/js/4khdr.js.md5 old mode 100644 new mode 100755 diff --git a/js/88ball.js b/js/88ball.js old mode 100644 new mode 100755 diff --git a/js/88ball.js.md5 b/js/88ball.js.md5 old mode 100644 new mode 100755 diff --git a/js/97tvs.js.md5 b/js/97tvs.js.md5 old mode 100644 new mode 100755 diff --git a/js/aipanso.js.md5 b/js/aipanso.js.md5 old mode 100644 new mode 100755 diff --git a/js/apple.js.md5 b/js/apple.js.md5 old mode 100644 new mode 100755 diff --git a/js/cilixiong.js.md5 b/js/cilixiong.js.md5 old mode 100644 new mode 100755 diff --git a/js/cilixiongp.js.md5 b/js/cilixiongp.js.md5 old mode 100644 new mode 100755 diff --git a/js/ddys.js.md5 b/js/ddys.js.md5 old mode 100644 new mode 100755 diff --git a/js/dydhhy.js.md5 b/js/dydhhy.js.md5 old mode 100644 new mode 100755 diff --git a/js/dygang.js.md5 b/js/dygang.js.md5 old mode 100644 new mode 100755 diff --git a/js/funletu.js.md5 b/js/funletu.js.md5 old mode 100644 new mode 100755 diff --git a/js/huya.js b/js/huya.js old mode 100644 new mode 100755 diff --git a/js/huya.js.md5 b/js/huya.js.md5 old mode 100644 new mode 100755 diff --git a/js/index.config.js b/js/index.config.js old mode 100644 new mode 100755 diff --git a/js/index.js b/js/index.js old mode 100644 new mode 100755 diff --git a/js/index.min.js.md5 b/js/index.min.js.md5 old mode 100644 new mode 100755 diff --git a/js/jiyingw.js.md5 b/js/jiyingw.js.md5 old mode 100644 new mode 100755 diff --git a/js/jiyingwp.js.md5 b/js/jiyingwp.js.md5 old mode 100644 new mode 100755 diff --git a/js/jquery-1.11.0.min.js.md5 b/js/jquery-1.11.0.min.js.md5 old mode 100644 new mode 100755 diff --git a/js/jquery.3.3.1.min.js.md5 b/js/jquery.3.3.1.min.js.md5 old mode 100644 new mode 100755 diff --git a/js/jquery.3.6.4.min.js.md5 b/js/jquery.3.6.4.min.js.md5 old mode 100644 new mode 100755 diff --git a/js/jquery.min.js.md5 b/js/jquery.min.js.md5 old mode 100644 new mode 100755 diff --git a/js/kkpans.js.md5 b/js/kkpans.js.md5 old mode 100644 new mode 100755 diff --git a/js/kuba.js.md5 b/js/kuba.js.md5 old mode 100644 new mode 100755 diff --git a/js/libvio.js.md5 b/js/libvio.js.md5 old mode 100644 new mode 100755 diff --git a/js/lx-music.js.md5 b/js/lx-music.js.md5 old mode 100644 new mode 100755 diff --git a/js/meijumi.js.md5 b/js/meijumi.js.md5 old mode 100644 new mode 100755 diff --git a/js/meijumip.js.md5 b/js/meijumip.js.md5 old mode 100644 new mode 100755 diff --git a/js/meow.js.md5 b/js/meow.js.md5 old mode 100644 new mode 100755 diff --git a/js/mp4us.js.md5 b/js/mp4us.js.md5 old mode 100644 new mode 100755 diff --git a/js/qimiao.js.md5 b/js/qimiao.js.md5 old mode 100644 new mode 100755 diff --git a/js/rrdyw.js.md5 b/js/rrdyw.js.md5 old mode 100644 new mode 100755 diff --git a/js/template.js b/js/template.js old mode 100644 new mode 100755 diff --git a/js/template.js.md5 b/js/template.js.md5 old mode 100644 new mode 100755 diff --git a/js/tzfile.js.md5 b/js/tzfile.js.md5 old mode 100644 new mode 100755 diff --git a/js/xb6v.js.md5 b/js/xb6v.js.md5 old mode 100644 new mode 100755 diff --git a/js/xiaosa/XBPQ/小镇影视.json b/js/xiaosa/XBPQ/小镇影视.json old mode 100644 new mode 100755 diff --git a/js/xiaosa/XBPQ/韩剧看看.json b/js/xiaosa/XBPQ/韩剧看看.json old mode 100644 new mode 100755 diff --git a/js/xiaosa/XYQHiker/剧圈影视.json b/js/xiaosa/XYQHiker/剧圈影视.json old mode 100644 new mode 100755 diff --git a/js/xiaosa/XYQHiker/来看影视.json b/js/xiaosa/XYQHiker/来看影视.json old mode 100644 new mode 100755 diff --git a/js/xiaosa/py/爱听音乐.py b/js/xiaosa/py/爱听音乐.py old mode 100644 new mode 100755 diff --git a/js/xzys.js.md5 b/js/xzys.js.md5 old mode 100644 new mode 100755 diff --git a/js/yyets.js.md5 b/js/yyets.js.md5 old mode 100644 new mode 100755 diff --git a/js/yyetsp.js.md5 b/js/yyetsp.js.md5 old mode 100644 new mode 100755 diff --git a/js/模板.js b/js/模板.js old mode 100644 new mode 100755 diff --git a/js/模板.js.md5 b/js/模板.js.md5 old mode 100644 new mode 100755 diff --git a/js/永乐视频.js.md5 b/js/永乐视频.js.md5 old mode 100644 new mode 100755 diff --git a/js/海龟.js.md5 b/js/海龟.js.md5 old mode 100644 new mode 100755 diff --git a/js/聚合短剧.js b/js/聚合短剧.js old mode 100644 new mode 100755 diff --git a/js/聚合短剧.js.md5 b/js/聚合短剧.js.md5 old mode 100644 new mode 100755 diff --git a/js/荐片.js.md5 b/js/荐片.js.md5 old mode 100644 new mode 100755 diff --git a/js/金牌影院.js.md5 b/js/金牌影院.js.md5 old mode 100644 new mode 100755 diff --git a/js/鬼片之家.js.md5 b/js/鬼片之家.js.md5 old mode 100644 new mode 100755 diff --git a/jsm.json b/jsm.json deleted file mode 100644 index bda58a793..000000000 --- a/jsm.json +++ /dev/null @@ -1,1495 +0,0 @@ -{ - "spider": "./pg.jar", - "sites": [ - { - "key": "豆瓣", - "name": "豆瓣", - "type": 3, - "api": "csp_Douban", - "searchable": 0, - "changeable": 1, - "indexs": 1, - "ext": "./lib/tokenm.json$$$./lib/douban.json" - }, - { - "key": "TGDouban", - "name": "TG豆瓣", - "type": 3, - "api": "csp_TGDouban", - "timeout": 120, - "ext": { - "token": "./lib/tokenm.json", - "json": "./lib/tgsearch.json", - "keywords": "名称,片名,推荐", - "tgsearch_url": "http://127.0.0.1:10199", - "tgsearch_media_url": "http://127.0.0.1:10199", - "channellist": "tgsearchers3,leoziyuan,peccxinpd,yydf_hzl,vip115hot,clouddriveresources,q66share,yggpan,xiangxiunbb,oscardianying,dianying4k,wfysfx02,quarkfree,ucwpzy,ucquark,mcph860,mcph608,xunleibl,taoxgzy,yunpanx,kkxlzy,mcph086,dianyingshare,quark_movies,zyfx2022,alyp_1,quanziyuanshe,hdhhd21,guoman4k,duan_ju,q_dianying,q_dianshiju,sharepanfilms,mcph01,jdjdn1111,panjclub,baicaozy,yunpan189,tianyirigeng,cloudtianyi,tyysypzypd,txtyzy,kuakeclound,tyypzhpd,zyfb123,xx123pan,zyzhpd123,yingshifenxiang123,yp123pan,wp123zy115:oneonefivewpfx,lsp115,qukanmovie,channel_shares_115,share4115,ysxb48,aliyun:zaihuayun,sharealiyun,aliyun_4k_movies,aliyunys,qixingzhenren,yunpanuc,ucshare,ucwangpan", - "proxy": "proxy", - "douban": "./lib/douban.json", - "danmu": true - }, - "style": { - "type": "rect", - "ratio": 0.7 - } - }, - { - "key": "网盘配置", - "name": "网盘及彈幕配置", - "type": 3, - "api": "csp_Config", - "searchable": 0, - "changeable": 0, - "ext": "./lib/tokenm.json", - "style": { - "type": "rect", - "ratio": 1.5 - } - }, - { - "key": "Local", - "name": "本地", - "type": 3, - "api": "csp_Local" - }, - { - "key": "FirstAid", - "name": "🚑 急救知识 ", - "type": 3, - "api": "csp_FirstAid", - "searchable": 0, - "quickSearch": 0, - "changeable": 0, - "style": { - "type": "rect", - "ratio": 3.8 - } - }, - { - "key": "bili", - "name": "B站 | Bili[jar]", - "type": 3, - "api": "csp_Bili", - "searchable": 1, - "quickSearch": 0, - "changeable": 0, - "timeout": 60, - "playerType": 2, - "ext": { - "type": "演唱会#电影#电视剧#帕梅拉#广场舞#纪录片#综艺#鬼畜#音乐#舞蹈#影视#知识#美食#风光#田园#户外#8K#徐云", - "cookie": "" - } - }, - { - "key": "TGYunPanLocal", - "name": "TG频道搜索", - "type": 3, - "api": "csp_TGYunPanLocal", - "timeout": 120, - "ext": { - "token": "./lib/tokenm.json", - "json": "./lib/tgsearch.json", - "keywords": "名称,片名,推荐", - "tgsearch_url": "http://127.0.0.1:10199", - "tgsearch_media_url": "http://127.0.0.1:10199", - "channellist": "tgsearchers3,leoziyuan,peccxinpd,yydf_hzl,vip115hot,clouddriveresources,q66share,yggpan,xiangxiunbb,oscardianying,dianying4k,wfysfx02,quarkfree,ucwpzy,ucquark,mcph860,mcph608,xunleibl,taoxgzy,yunpanx,kkxlzy,mcph086,dianyingshare,quark_movies,zyfx2022,alyp_1,quanziyuanshe,hdhhd21,guoman4k,duan_ju,q_dianying,q_dianshiju,sharepanfilms,mcph01,jdjdn1111,panjclub,baicaozy,yunpan189,tianyirigeng,cloudtianyi,tyysypzypd,txtyzy,kuakeclound,tyypzhpd,zyfb123,xx123pan,zyzhpd123,yingshifenxiang123,yp123pan,wp123zy115:oneonefivewpfx,lsp115,qukanmovie,channel_shares_115,share4115,ysxb48,aliyun:zaihuayun,sharealiyun,aliyun_4k_movies,aliyunys,qixingzhenren,yunpanuc,ucshare,ucwangpan", - "proxy": "proxy", - "danmu": true - }, - "style": { - "type": "rect", - "ratio": 1.77 - } - }, - { - "key": "TGYunPan", - "name": "TG群组搜索", - "type": 3, - "api": "csp_TGYunPan", - "timeout": 120, - "ext": { - "token": "./lib/tokenm.json", - "json": "./lib/tgsearch.json", - "keywords": "名称,片名,推荐", - "tgsearch_url": "http://127.0.0.1:10199", - "tgsearch_media_url": "http://127.0.0.1:10199", - "channellist": "tgsearchers3,KFCYeah,tianyifc,BaiduCloudDisk,txtyzy,peccxinpd,gotopan,PanjClub,kkxlzy,baicaoZY,yggpan,zaihuayun,Q66Share,Oscar_4Kmovies,shareAliyun,alyp_1,Quark_Movies,XiangxiuNBB,ydypzyfx,ucquark,xx123pan,zyfb123,tyypzhpd,tianyirigeng,cloudtianyi,hdhhd21,Lsp115,qixingzhenren,tyysypzypd,vip115hot,wp123zy,yunpan189,yydf_hzl,leoziyuan", - "proxy": "noproxy", - "danmu": true - }, - "style": { - "type": "rect", - "ratio": 1.77 - } - }, - { - "key": "Guanying", - "name": "观影|网盘|磁力", - "type": 3, - "api": "csp_Guanying", - "quickSearch": 1, - "changeable": 1, - "filterable": 1, - "timeout": 60, - "ext": "./lib/tokenm.json$$$https://www.gying.net$$$noproxy$$$1$$$./lib/guanying.txt$$$GUANYING" - }, - { - "key": "FourKZN", - "name": "4K指南|网盘|磁力", - "type": 3, - "api": "csp_FourKZN", - "quickSearch": 1, - "changeable": 1, - "filterable": 1, - "timeout": 60, - "ext": "./lib/tokenm.json$$$http://xuexizhinan.com/$$$noproxy$$$1$$$./lib/4kzn.txt$$$4KZN" - }, - { - "key": "FourKFox", - "name": "4KFox|网盘|磁力", - "type": 3, - "api": "csp_FourKFox", - "quickSearch": 1, - "changeable": 1, - "filterable": 1, - "timeout": 60, - "ext": "./lib/tokenm.json$$$http://4kfox.com/$$$noproxy$$$1$$$./lib/4kfox.txt$$$4KFOX" - }, - { - "key": "FourKFM", - "name": "4K影库|网盘|磁力", - "type": 3, - "api": "csp_FourKFM", - "quickSearch": 1, - "changeable": 1, - "filterable": 1, - "timeout": 60, - "ext": "./lib/tokenm.json$$$http://4kfm.com/$$$noproxy$$$1$$$./lib/4kfm.txt$$$4KFM" - }, - { - "key": "校长影视", - "name": "校长影视|网盘", - "type": 3, - "api": "csp_XiaoZhang", - "quickSearch": 1, - "changeable": 1, - "filterable": 1, - "timeout": 60, - "ext": "./lib/tokenm.json$$$https://xzyshd.com$$$proxy$$$1" - }, - { - "key": "Wogg", - "name": "玩偶哥哥|网盘", - "type": 3, - "api": "csp_Wogg", - "quickSearch": 1, - "changeable": 1, - "filterable": 1, - "timeout": 60, - "ext": "./lib/tokenm.json$$$http://wogg.888484.xyz/$$$noproxy$$$1$$$./lib/wogg.json$$$WOGG" - }, - { - "key": "yydsys", - "name": "玩你老哥|网盘", - "type": 3, - "api": "csp_Wobg", - "quickSearch": 1, - "changeable": 1, - "filterable": 1, - "timeout": 60, - "ext": "./lib/tokenm.json$$$https://tv.yydsys.top/$$$proxy$$$1$$$./lib/wogg.json$$$WNLG" - }, - { - "key": "Mogg", - "name": "木偶哥哥|网盘", - "type": 3, - "api": "csp_Wobg", - "quickSearch": 1, - "changeable": 1, - "filterable": 1, - "timeout": 60, - "ext": "./lib/tokenm.json$$$http://123.666291.xyz/$$$noproxy$$$1$$$./lib/wogg.json$$$MOGG" - }, - { - "key": "至臻|网盘", - "name": "至臻|网盘", - "type": 3, - "api": "csp_Wobg", - "quickSearch": 1, - "changeable": 1, - "filterable": 1, - "timeout": 60, - "ext": "./lib/tokenm.json$$$https://mihdr.top/$$$noproxy$$$1$$$./lib/wogg.json$$$ZHIZHEN" - }, - { - "key": "Hmxz", - "name": "海绵|网盘", - "type": 3, - "api": "csp_Hmxz", - "quickSearch": 1, - "changeable": 1, - "filterable": 1, - "timeout": 60, - "ext": "./lib/tokenm.json$$$https://haimian.eu.org/$$$noproxy$$$1$$$./lib/hmxz.txt$$$HMXZ", - "style": { - "type": "list", - "ratio": 1.1 - } - }, - { - "key": "Leijing", - "name": "雷鲸|网盘", - "type": 3, - "api": "csp_Panta", - "quickSearch": 1, - "changeable": 1, - "filterable": 1, - "timeout": 60, - "ext": "./lib/tokenm.json$$$https://leijing.xyz/$$$noproxy$$$1$$$./lib/leijing.txt$$$LEIJING", - "style": { - "type": "list", - "ratio": 1.1 - } - }, - { - "key": "LIBVIO", - "name": "LIBVIO|网盘", - "type": 3, - "api": "csp_Libvio", - "quickSearch": 1, - "changeable": 1, - "filterable": 1, - "timeout": 60, - "ext": "./lib/tokenm.json$$$http://www.libvio.mov/$$$noproxy$$$1" - }, - { - "key": "Youtube", - "name": "Youtube", - "type": 3, - "api": "csp_Youtube", - "searchable": 1, - "quickSearch": 0, - "changeable": 0, - "timeout": 120, - "ext": { - "token": "./lib/tokenm.json", - "json": "./lib/youtube.json", - "type": "直播#新闻#剧集#电影#综艺#纪录片#音乐#体育#动物#风光#放松#4K#HDR#movie#music#documentary#bbc documentary#national geographic documentary", - "keywords": "排行榜,HOT,TRENDS,热门话题,热门趋势,热门综艺,热门电影,热门电视剧,小姐姐", - "codecs": "", - "proxy": "proxy", - "danmu": true - }, - "style": { - "type": "rect", - "ratio": 1.77 - } - }, - { - "key": "Guazi", - "name": "瓜子|App", - "type": 3, - "api": "csp_Guazi", - "quickSearch": 1, - "changeable": 1, - "filterable": 1, - "timeout": 60, - "ext": "" - }, - { - "key": "Moli", - "name": "HDmoli|网盘", - "type": 3, - "api": "csp_Moli", - "quickSearch": 1, - "changeable": 1, - "filterable": 1, - "timeout": 60, - "ext": "./lib/tokenm.json$$$https://www.hdmoli.pro/$$$proxy$$$1$$$./lib/moli.json" - }, - { - "key": "ddys", - "name": "低端影视|网盘", - "type": 3, - "api": "csp_Ddys", - "quickSearch": 1, - "changeable": 1, - "filterable": 1, - "timeout": 60, - "ext": "./lib/tokenm.json$$$https://ddys.pro/$$$proxy$$$1$$$" - }, - { - "key": "美剧迷", - "name": "美剧迷|网盘", - "type": 3, - "api": "csp_Meijumi", - "quickSearch": 1, - "changeable": 1, - "filterable": 1, - "timeout": 120, - "ext": "./lib/tokenm.json$$$https://www.meijumi.net/$$$proxy$$$1" - }, - { - "key": "WebDAV", - "name": "WebDAV[jar]", - "type": 3, - "api": "csp_WebDAV", - "searchable": 1, - "filterable": 1, - "changeable": 1, - "timeout": 60, - "playerType": 2, - "ext": "./lib/webdav.json" - }, - { - "key": "AList", - "name": "网盘|Alist[jar]", - "type": 3, - "api": "csp_AList", - "searchable": 1, - "filterable": 1, - "changeable": 1, - "timeout": 60, - "playerType": 2, - "ext": "./lib/alistjar.json" - }, - { - "key": "PushShare", - "name": "我的资源分享", - "type": 3, - "api": "csp_PushShare", - "searchable": 1, - "quickSearch": 1, - "changeable": 1, - "filterable": 0, - "timeout": 60, - "ext": "./lib/tokenm.json$$$./lib/pushshare.txt$$$db$$$1", - "style": { - "type": "list", - "ratio": 1.1 - } - }, - { - "key": "AlistShare", - "name": "网盘分享合集", - "type": 3, - "api": "csp_AlistShare", - "searchable": 1, - "quickSearch": 1, - "changeable": 1, - "filterable": 0, - "timeout": 120, - "ext": "./lib/tokenm.json$$$null$$$proxy$$$1", - "style": { - "type": "list", - "ratio": 1.1 - } - }, - { - "key": "AliShare", - "name": "阿里云盘影视分享", - "type": 3, - "api": "csp_AliShare", - "searchable": 1, - "quickSearch": 1, - "changeable": 1, - "filterable": 0, - "timeout": 60, - "ext": "./lib/tokenm.json$$$./lib/alishare.txt$$$db$$$1", - "style": { - "type": "list", - "ratio": 1.1 - } - }, - { - "key": "AliShareEBook", - "name": "阿里云盘书籍分享", - "type": 3, - "api": "csp_AliShare", - "searchable": 0, - "quickSearch": 0, - "changeable": 0, - "filterable": 0, - "timeout": 60, - "ext": "./lib/tokenm.json$$$./lib/alishare.ebook.txt$$$db$$$1", - "style": { - "type": "list", - "ratio": 1.1 - } - }, - { - "key": "QuarkShare", - "name": "夸克云盘分享", - "type": 3, - "api": "csp_QuarkShare", - "searchable": 1, - "quickSearch": 0, - "changeable": 0, - "filterable": 0, - "timeout": 60, - "ext": "./lib/tokenm.json$$$./lib/quarkshare.txt", - "style": { - "type": "list", - "ratio": 1.1 - } - }, - { - "key": "123Share", - "name": "123云盘分享", - "type": 3, - "api": "csp_P123Share", - "searchable": 1, - "quickSearch": 1, - "changeable": 0, - "filterable": 0, - "timeout": 120, - "ext": "./lib/tokenm.json$$$./lib/123share.txt$$$db$$$1", - "style": { - "type": "list", - "ratio": 1.1 - } - }, - { - "key": "189Share", - "name": "189云盘分享", - "type": 3, - "api": "csp_P189Share", - "searchable": 1, - "quickSearch": 1, - "changeable": 0, - "filterable": 0, - "timeout": 120, - "ext": "./lib/tokenm.json$$$./lib/189share.txt$$$db$$$1", - "style": { - "type": "list", - "ratio": 1.1 - } - }, - { - "key": "ThunderShare", - "name": "迅雷云盘分享", - "type": 3, - "api": "csp_ThunderShare", - "searchable": 1, - "quickSearch": 0, - "changeable": 0, - "filterable": 0, - "timeout": 60, - "ext": "./lib/tokenm.json$$$./lib/thundershare.txt", - "style": { - "type": "list", - "ratio": 1.1 - } - }, - { - "key": "UCShare", - "name": "UC云盘分享", - "type": 3, - "api": "csp_UCShare", - "searchable": 1, - "quickSearch": 0, - "changeable": 0, - "filterable": 0, - "timeout": 60, - "ext": "./lib/tokenm.json$$$./lib/ucshare.txt$$$db$$$1", - "style": { - "type": "list", - "ratio": 1.1 - } - }, - { - "key": "115Share", - "name": "115云盘分享", - "type": 3, - "api": "csp_P115Share", - "searchable": 1, - "quickSearch": 1, - "changeable": 0, - "filterable": 0, - "timeout": 120, - "ext": "./lib/tokenm.json$$$./lib/115share.txt$$$db$$$1", - "style": { - "type": "list", - "ratio": 1.1 - } - }, - { - "key": "PikPakShare", - "name": "PikPak分享", - "type": 3, - "api": "csp_PikPakShare", - "searchable": 1, - "quickSearch": 1, - "changeable": 1, - "filterable": 0, - "timeout": 60, - "ext": "./lib/tokenm.json$$$./lib/pikpakclass.json$$$./lib/pikpakclass.json.txt.gz", - "style": { - "type": "list", - "ratio": 1.1 - } - }, - { - "key": "SambaShare", - "name": "Samba分享", - "type": 3, - "api": "csp_SambaShare", - "searchable": 0, - "quickSearch": 0, - "changeable": 0, - "filterable": 0, - "timeout": 60, - "ext": "./lib/tokenm.json$$$./lib/sambashare.txt" - }, - { - "key": "Hdhive", - "name": "鸟窝|网盘", - "type": 3, - "api": "csp_Hdh", - "quickSearch": 1, - "changeable": 1, - "filterable": 1, - "timeout": 120, - "ext": "./lib/tokenm.json$$$https://hdhive.com$$$noproxy$$$1$$$./lib/hdhive.txt" - }, - { - "key": "TianYiSou", - "name": "天逸搜|网盘搜索", - "type": 3, - "api": "csp_TianYiSou", - "quickSearch": 1, - "changeable": 1, - "filterable": 1, - "timeout": 60, - "ext": "./lib/tokenm.json$$$null$$$proxy" - }, - { - "key": "YunPan", - "name": "云盘资源|网盘", - "type": 3, - "api": "csp_YunPan", - "timeout": 60, - "ext": "./lib/tokenm.json$$$null$$$proxy$$$1" - }, - { - "key": "YingSo", - "name": "影搜|网盘搜索", - "type": 3, - "api": "csp_YingSo", - "timeout": 60, - "ext": "./lib/tokenm.json" - }, - { - "key": "混合盘", - "name": "混合盘|网盘搜索", - "type": 3, - "api": "csp_HunHePan", - "timeout": 60, - "ext": "./lib/tokenm.json", - "style": { - "type": "list", - "ratio": 1.1 - } - }, - { - "key": "88Pan", - "name": "88网盘|网盘搜索", - "type": 3, - "api": "csp_EightEight", - "timeout": 60, - "ext": "./lib/tokenm.json$$$https://662688.xyz$$$", - "style": { - "type": "list", - "ratio": 1.1 - } - }, - { - "key": "PanSearch", - "name": "PanSearch|网盘搜索", - "type": 3, - "api": "csp_PanSearch", - "quickSearch": 1, - "changeable": 1, - "filterable": 1, - "timeout": 60, - "ext": "./lib/tokenm.json$$$null$$$proxy" - }, - { - "key": "盘友圈", - "name": "盘友圈|网盘搜索", - "type": 3, - "api": "csp_Panyq", - "timeout": 60, - "ext": "./lib/tokenm.json$$$site$$$proxy" - }, - { - "key": "易搜", - "name": "易搜|网盘搜索", - "type": 3, - "api": "csp_YiSo", - "timeout": 60, - "ext": "./lib/tokenm.json$$$./lib/yiso.txt", - "style": { - "type": "list", - "ratio": 1.1 - } - }, - { - "key": "秒搜", - "name": "秒搜|网盘搜索", - "type": 3, - "api": "csp_MiaoSou", - "timeout": 60, - "ext": "./lib/tokenm.json", - "style": { - "type": "list", - "ratio": 1.1 - } - }, - { - "key": "Funletu", - "name": "趣盘搜|夸克搜索", - "type": 3, - "api": "csp_Funletu", - "quickSearch": 1, - "changeable": 1, - "filterable": 1, - "timeout": 60, - "ext": "./lib/tokenm.json", - "style": { - "type": "list", - "ratio": 1.1 - } - }, - { - "key": "QuarkPanso", - "name": "夸克盘搜|夸克搜索", - "type": 3, - "api": "csp_QuarkPanso", - "quickSearch": 1, - "changeable": 1, - "filterable": 1, - "timeout": 60, - "ext": "./lib/tokenm.json", - "style": { - "type": "list", - "ratio": 1.1 - } - }, - { - "key": "Panta", - "name": "盘Ta|网盘", - "type": 3, - "api": "csp_Panta", - "quickSearch": 1, - "changeable": 1, - "filterable": 1, - "timeout": 60, - "ext": "./lib/tokenm.json$$$https://www.91panta.cn/$$$null$$$1$$$./lib/panta.txt$$$PANTA", - "style": { - "type": "list", - "ratio": 1.1 - } - }, - { - "key": "DaPanSo", - "name": "大盘搜|网盘搜索", - "type": 3, - "api": "csp_DaPanSo", - "quickSearch": 1, - "changeable": 1, - "filterable": 1, - "timeout": 60, - "ext": "./lib/tokenm.json$$$https://dapanso.com$$$proxy$$$1" - }, - { - "key": "PikaSo", - "name": "皮卡搜|网盘搜索", - "type": 3, - "api": "csp_PikaSo", - "quickSearch": 1, - "changeable": 1, - "filterable": 1, - "timeout": 60, - "ext": "./lib/tokenm.json$$$https://www.pikaso.top/$$$null", - "style": { - "type": "list", - "ratio": 1.1 - } - }, - { - "key": "Qianfan", - "name": "千帆|网盘搜索", - "type": 3, - "api": "csp_Qianfan", - "quickSearch": 1, - "changeable": 1, - "filterable": 1, - "timeout": 60, - "ext": "./lib/tokenm.json$$$https://pan.qianfan.app$$$null$$$./lib/qianfan.txt$$$1" - }, - { - "key": "YunSo", - "name": "小云搜索|网盘搜索", - "type": 3, - "api": "csp_YunSo", - "quickSearch": 1, - "changeable": 1, - "filterable": 1, - "timeout": 60, - "ext": "./lib/tokenm.json$$$https://www.yunso.net$$$null$$$1", - "style": { - "type": "list", - "ratio": 1.1 - } - }, - { - "key": "YunPanOne", - "name": "云盘One|网盘搜索", - "type": 3, - "api": "csp_YunPanOne", - "quickSearch": 1, - "changeable": 1, - "filterable": 1, - "timeout": 60, - "ext": "./lib/tokenm.json$$$null$$$proxy$$$1" - }, - { - "key": "新6V", - "name": "新6V|网盘", - "type": 3, - "api": "csp_Xb6v", - "searchable": 1, - "changeable": 1, - "timeout": 60, - "ext": "./lib/tokenm.json$$$https://www.66ss.org$$$null$$$1" - }, - { - "key": "索尼资源", - "name": "索尼┃资源", - "type": 1, - "api": "https://suoniapi.com/api.php/provide/vod/from/snm3u8/", - "categories": [ - "动作片", - "喜剧片", - "爱情片", - "科幻片", - "恐怖片", - "剧情片", - "战争片", - "国产剧", - "欧美剧", - "韩剧", - "日剧", - "港剧", - "台剧", - "泰剧", - "海外剧", - "纪录片", - "大陆综艺", - "日韩综艺", - "港台综艺", - "欧美综艺", - "国产动漫", - "日韩动漫", - "欧美动漫", - "动画片", - "港台动漫", - "海外动漫", - "演唱会", - "体育赛事", - "篮球", - "足球", - "预告片", - "斯诺克", - "影视解说" - ], - "searchable": 1, - "quickSearch": 1 - }, - { - "key": "UP云搜", - "name": "阿里|UP云搜", - "type": 3, - "api": "csp_UpYun", - "timeout": 30, - "ext": "./lib/tokenm.json", - "style": { - "type": "list", - "ratio": 1.1 - } - }, - { - "key": "BLSGod", - "name": "BLSGod|磁", - "type": 3, - "api": "csp_BLSGod", - "changeable": 1, - "timeout": 60 - }, - { - "key": "SeedHub", - "name": "SeedHub|磁", - "type": 3, - "api": "csp_SeedHub", - "changeable": 1, - "timeout": 60 - }, - { - "key": "ikun", - "name": "ikun", - "type": 1, - "api": "http://127.0.0.1:10079/p/0/proxy/https://ikunzyapi.com/api.php/provide/vod/?", - "playUrl": "json:http://127.0.0.1:10079/parse/?thread=0&proxy=proxy&url=", - "playerType": 1, - "searchable": 1, - "changeable": 1 - }, - { - "key": "暴風", - "name": "暴風", - "type": 1, - "api": "http://127.0.0.1:10079/p/0/proxy/https://bfzyapi.com/api.php/provide/vod?", - "playUrl": "json:http://127.0.0.1:10079/parse/?thread=0&proxy=proxy&url=", - "searchable": 1, - "changeable": 1 - }, - { - "key": "索尼", - "name": "索尼 ", - "type": 1, - "api": "http://127.0.0.1:10079/p/0/proxy/https://suoniapi.com/api.php/provide/vod?", - "playUrl": "json:http://127.0.0.1:10079/parse/?thread=0&proxy=proxy&url=", - "searchable": 1, - "changeable": 1 - }, - { - "key": "量子", - "name": "量子", - "type": 1, - "api": "http://127.0.0.1:10079/p/0/proxy/http://cj.lziapi.com/api.php/provide/vod/?", - "playUrl": "json:http://127.0.0.1:10079/parse/?thread=0&proxy=proxy&url=", - "playerType": 1, - "searchable": 1, - "changeable": 1 - }, - { - "key": "非凡", - "name": "非凡", - "type": 1, - "api": "http://127.0.0.1:10079/p/0/proxy/http://cj.ffzyapi.com/api.php/provide/vod/?", - "playUrl": "json:http://127.0.0.1:10079/parse/?thread=0&proxy=proxy&url=", - "playerType": 1, - "searchable": 1, - "changeable": 1, - "categories": [ - "国产动漫", - "日韩动漫", - "国产剧", - "韩国剧", - "日本剧", - "电影片", - "连续剧", - "综艺片", - "动漫片", - "动作片", - "喜剧片", - "爱情片", - "科幻片", - "恐怖片", - "剧情片", - "战争片", - "香港剧", - "欧美剧", - "记录片", - "台湾剧", - "海外剧", - "泰国剧", - "大陆综艺", - "港台综艺", - "日韩综艺", - "欧美综艺", - "欧美动漫", - "港台动漫", - "海外动漫" - ] - }, - { - "key": "異界", - "name": "異界", - "type": 3, - "api": "csp_Ysj", - "searchable": 1, - "changeable": 0 - }, - { - "key": "drpy_js_Alist", - "name": "网盘 | Alist[js]", - "type": 3, - "api": "./lib/alist.min.js", - "searchable": 1, - "filterable": 1, - "changeable": 1, - "ext": "./js/alist.json" - }, - { - "key": "酷狗", - "name": "酷狗", - "type": 3, - "api": "csp_Kugou", - "searchable": 1, - "changeable": 0 - }, - { - "key": "Yinyuetai", - "name": "音悦台", - "type": 3, - "api": "csp_Yinyuetai", - "searchable": 1, - "changeable": 0 - }, - { - "key": "push_agent", - "name": "推送", - "type": 3, - "api": "csp_Push", - "changeable": 0, - "timeout": 30, - "ext": "./lib/tokenm.json" - }, - { - "key": "應用商店", - "name": "應用商店", - "type": 3, - "api": "csp_Market", - "searchable": 0, - "changeable": 0, - "ext": "https://fm.t4tv.hz.cz/json/market.json" - }, - { - "key": "直播转点播", - "name": "🐼️┃电视┃直播", - "type": 3, - "searchable": 0, - "api": "./lib/live2vod.js", - "ext": "./lib/feimaolive.json" - } - ], - "lives": [ - { - "name": "最强国内直播(合并版)", - "type": 0, - "url": "http://127.0.0.1:10079/c/3600/null/http://127.0.0.1:35456/all.m3u", - "ua": "okhttp/3.15", - "epg": "http://127.0.0.1:10079/p/0/proxy/http://epg.112114.xyz/?ch={name}&date={date}", - "logo": "http://127.0.0.1:10079/p/0/proxy/https://epg.112114.xyz/logo/{name}.png", - "catchup": { - "type": "append", - "source": "?livemode=4&starttime=${(b)yyyyMMdd'T'HHmm}00.00Z&endtime=${(e)yyyyMMdd'T'HHmm}00.00Z" - } - }, - { - "name": "最强国内直播", - "type": 0, - "url": "http://127.0.0.1:10079/c/3600/null/http://127.0.0.1:35456/tv.m3u", - "ua": "okhttp/3.15", - "epg": "http://127.0.0.1:10079/p/0/proxy/http://epg.112114.xyz/?ch={name}&date={date}", - "logo": "http://127.0.0.1:10079/p/0/proxy/https://epg.112114.xyz/logo/{name}.png", - "catchup": { - "type": "append", - "source": "?livemode=4&starttime=${(b)yyyyMMdd'T'HHmm}00.00Z&endtime=${(e)yyyyMMdd'T'HHmm}00.00Z" - } - }, - { - "name": "最强国内直播(EPG-1天回看)", - "type": 0, - "url": "http://127.0.0.1:10079/c/3600/null/http://127.0.0.1:35456/tv.m3u", - "ua": "okhttp/3.15", - "epg": "http://127.0.0.1:10079/p/0/proxy/http://epg.112114.xyz/?ch={name}&date=DATE1SUB", - "logo": "http://127.0.0.1:10079/p/0/proxy/https://epg.112114.xyz/logo/{name}.png", - "catchup": { - "type": "append", - "source": "?livemode=4&starttime=${(b)yyyyMMdd'T'HHmm}00.00Z&endtime=${(e)yyyyMMdd'T'HHmm}00.00Z" - } - }, - { - "name": "FeiYang牧场", - "type": 0, - "url": "http://sub.ottiptv.cc/iptv.m3u", - "ua": "okHttp/Mod-1.3.0.0", - "epg": "http://127.0.0.1:10079/p/0/proxy/http://epg.112114.xyz/?ch={name}&date=DATE1SUB", - "logo": "http://127.0.0.1:10079/p/0/proxy/https://epg.112114.xyz/logo/{name}.png", - "catchup": { - "type": "append", - "source": "?livemode=4&starttime=${(b)yyyyMMdd'T'HHmm}00.00Z&endtime=${(e)yyyyMMdd'T'HHmm}00.00Z" - } - }, - { - "name": "BJYD", - "type": 0, - "url": "http://127.0.0.1:10079/c/3600/null/http://127.0.0.1:35456/bjyd.m3u", - "ua": "okhttp/3.15", - "epg": "http://127.0.0.1:10079/p/0/proxy/http://epg.112114.xyz/?ch={name}&date={date}", - "logo": "http://127.0.0.1:10079/p/0/proxy/https://epg.112114.xyz/logo/{name}.png", - "catchup": { - "type": "append", - "source": "?livemode=4&starttime=${(b)yyyyMMdd'T'HHmm}00.00Z&endtime=${(e)yyyyMMdd'T'HHmm}00.00Z" - } - }, - { - "name": "BJYD(EPG-1天回看)", - "type": 0, - "url": "http://127.0.0.1:10079/c/3600/null/http://127.0.0.1:35456/bjyd.m3u", - "ua": "okhttp/3.15", - "epg": "http://127.0.0.1:10079/p/0/proxy/http://epg.112114.xyz/?ch={name}&date=DATE1SUB", - "logo": "http://127.0.0.1:10079/p/0/proxy/https://epg.112114.xyz/logo/{name}.png", - "catchup": { - "type": "append", - "source": "?livemode=4&starttime=${(b)yyyyMMdd'T'HHmm}00.00Z&endtime=${(e)yyyyMMdd'T'HHmm}00.00Z" - } - }, - { - "name": "BJYD(EPG-2天回看)", - "type": 0, - "url": "http://127.0.0.1:10079/c/3600/null/http://127.0.0.1:35456/bjyd.m3u", - "ua": "okhttp/3.15", - "epg": "http://127.0.0.1:10079/p/0/proxy/http://epg.112114.xyz/?ch={name}&date=DATE2SUB", - "logo": "http://127.0.0.1:10079/p/0/proxy/https://epg.112114.xyz/logo/{name}.png", - "catchup": { - "type": "append", - "source": "?livemode=4&starttime=${(b)yyyyMMdd'T'HHmm}00.00Z&endtime=${(e)yyyyMMdd'T'HHmm}00.00Z" - } - }, - { - "name": "BJYD(EPG-3天回看)", - "type": 0, - "url": "http://127.0.0.1:10079/c/3600/null/http://127.0.0.1:35456/bjyd.m3u", - "ua": "okhttp/3.15", - "epg": "http://127.0.0.1:10079/p/0/proxy/http://epg.112114.xyz/?ch={name}&date=DATE3SUB", - "logo": "http://127.0.0.1:10079/p/0/proxy/https://epg.112114.xyz/logo/{name}.png", - "catchup": { - "type": "append", - "source": "?livemode=4&starttime=${(b)yyyyMMdd'T'HHmm}00.00Z&endtime=${(e)yyyyMMdd'T'HHmm}00.00Z" - } - }, - { - "name": "BIPTV(IPV6,可回看)", - "type": 0, - "url": "./lib/biptv.txt", - "ua": "okhttp/3.15", - "epg": "http://127.0.0.1:10079/p/0/proxy/http://epg.112114.xyz/?ch={name}&date={date}", - "logo": "http://127.0.0.1:10079/p/0/proxy/https://epg.112114.xyz/logo/{name}.png" - }, - { - "name": "PandaGo投屏直播接收记录", - "type": 0, - "url": "http://127.0.0.1:10079/dlnam3u/tv.m3u", - "ua": "okhttp/3.15.", - "epg": "http://127.0.0.1:10079/p/0/proxy/http://epg.112114.xyz/?ch={name}&date={date}", - "logo": "http://127.0.0.1:10079/p/0/proxy/https://epg.112114.xyz/logo/{name}.png" - }, - { - "name": "FMM.m3u", - "type": 0, - "url": "http://127.0.0.1:10079/c/3600/proxy/https://raw.githubusercontent.com/fanmingming/live/refs/heads/main/tv/m3u/ipv6.m3u", - "ua": "okhttp/3.15", - "epg": "http://127.0.0.1:10079/p/0/proxy/http://epg.112114.xyz/?ch={name}&date={date}", - "logo": "http://127.0.0.1:10079/p/0/proxy/https://epg.112114.xyz/logo/{name}.png" - }, - { - "name": "FMM.m3u.音质增强", - "type": 0, - "url": "http://127.0.0.1:10079/mp4/3600/proxy/https://raw.githubusercontent.com/fanmingming/live/refs/heads/main/tv/m3u/ipv6.m3u", - "ua": "okhttp/3.15", - "epg": "http://127.0.0.1:10079/p/0/proxy/http://epg.112114.xyz/?ch={name}&date={date}", - "logo": "http://127.0.0.1:10079/p/0/proxy/https://epg.112114.xyz/logo/{name}.png" - }, - { - "name": "肥羊TX赛事直播", - "type": 0, - "url": "http://127.0.0.1:10079/c/60/null/http://127.0.0.1:35456/txevent.m3u", - "ua": "okhttp/3.15", - "epg": "http://127.0.0.1:10079/p/0/proxy/http://epg.112114.xyz/?ch={name}&date={date}", - "logo": "http://127.0.0.1:10079/p/0/proxy/https://epg.112114.xyz/logo/{name}.png" - }, - { - "name": "肥羊QY赛事直播", - "type": 0, - "url": "http://127.0.0.1:10079/c/60/null/http://127.0.0.1:35456/iqyevent.m3u", - "ua": "okhttp/3.15", - "epg": "http://127.0.0.1:10079/p/0/proxy/http://epg.112114.xyz/?ch={name}&date={date}", - "logo": "http://127.0.0.1:10079/p/0/proxy/https://epg.112114.xyz/logo/{name}.png" - }, - { - "name": "肥羊B站直播", - "type": 0, - "url": "http://127.0.0.1:10079/c/3600/null/http://127.0.0.1:35456/bililive.m3u", - "ua": "okhttp/3.15", - "epg": "http://127.0.0.1:10079/p/0/proxy/http://epg.112114.xyz/?ch={name}&date={date}", - "logo": "http://127.0.0.1:10079/p/0/proxy/https://epg.112114.xyz/logo/{name}.png" - }, - { - "name": "肥羊B站直播.音质增强", - "type": 0, - "url": "http://127.0.0.1:10079/mp4/3600/null/http://127.0.0.1:35456/bililive.m3u", - "ua": "okhttp/3.15", - "epg": "http://127.0.0.1:10079/p/0/proxy/http://epg.112114.xyz/?ch={name}&date={date}", - "logo": "http://127.0.0.1:10079/p/0/proxy/https://epg.112114.xyz/logo/{name}.png" - }, - { - "name": "肥羊虎牙一起看", - "type": 0, - "url": "http://127.0.0.1:10079/c/3600/null/http://127.0.0.1:35456/huyayqk.m3u", - "ua": "okhttp/3.15", - "epg": "http://127.0.0.1:10079/p/0/proxy/http://epg.112114.xyz/?ch={name}&date={date}", - "logo": "http://127.0.0.1:10079/p/0/proxy/https://epg.112114.xyz/logo/{name}.png" - }, - { - "name": "肥羊虎牙一起看.音质增强", - "type": 0, - "url": "http://127.0.0.1:10079/mp4/3600/null/http://127.0.0.1:35456/huyayqk.m3u", - "ua": "okhttp/3.15", - "epg": "http://127.0.0.1:10079/p/0/proxy/http://epg.112114.xyz/?ch={name}&date={date}", - "logo": "http://127.0.0.1:10079/p/0/proxy/https://epg.112114.xyz/logo/{name}.png" - }, - { - "name": "肥羊斗鱼一起看", - "type": 0, - "url": "http://127.0.0.1:10079/c/3600/null/http://127.0.0.1:35456/douyuyqk.m3u", - "ua": "okhttp/3.15", - "epg": "http://127.0.0.1:10079/p/0/proxy/http://epg.112114.xyz/?ch={name}&date={date}", - "logo": "http://127.0.0.1:10079/p/0/proxy/https://epg.112114.xyz/logo/{name}.png" - }, - { - "name": "肥羊斗鱼一起看.音质增强", - "type": 0, - "url": "http://127.0.0.1:10079/mp4/3600/null/http://127.0.0.1:35456/douyuyqk.m3u", - "ua": "okhttp/3.15", - "epg": "http://127.0.0.1:10079/p/0/proxy/http://epg.112114.xyz/?ch={name}&date={date}", - "logo": "http://127.0.0.1:10079/p/0/proxy/https://epg.112114.xyz/logo/{name}.png" - }, - { - "name": "肥羊YY轮播", - "type": 0, - "url": "http://127.0.0.1:10079/c/3600/null/http://127.0.0.1:35456/yylunbo.m3u", - "ua": "okhttp/3.15", - "epg": "http://127.0.0.1:10079/p/0/proxy/http://epg.112114.xyz/?ch={name}&date={date}", - "logo": "http://127.0.0.1:10079/p/0/proxy/https://epg.112114.xyz/logo/{name}.png" - }, - { - "name": "YTB直播", - "type": 0, - "url": "./lib/ytblive.m3u", - "ua": "okhttp/3.15", - "epg": "http://127.0.0.1:10079/p/0/proxy/http://epg.112114.xyz/?ch={name}&date={date}", - "logo": "http://127.0.0.1:10079/p/0/proxy/https://epg.112114.xyz/logo/{name}.png" - }, - { - "name": "AKTV.电视直播", - "type": 0, - "url": "http://aktv.top/live.m3u", - "ua": "okhttp/3.15", - "epg": "http://127.0.0.1:10079/p/0/proxy/http://epg.112114.xyz/?ch={name}&date={date}", - "logo": "http://127.0.0.1:10079/p/0/proxy/https://epg.112114.xyz/logo/{name}.png" - }, - { - "name": "Gather.电视直播", - "type": 0, - "url": "https://tv.iill.top/m3u/Gather", - "ua": "okhttp/3.15", - "epg": "http://127.0.0.1:10079/p/0/proxy/http://epg.112114.xyz/?ch={name}&date={date}", - "logo": "http://127.0.0.1:10079/p/0/proxy/https://epg.112114.xyz/logo/{name}.png" - }, - { - "name": "Gather.网络直播", - "type": 0, - "url": "https://tv.iill.top/m3u/Live", - "ua": "okhttp/3.15", - "epg": "http://127.0.0.1:10079/p/0/proxy/http://epg.112114.xyz/?ch={name}&date={date}", - "logo": "http://127.0.0.1:10079/p/0/proxy/https://epg.112114.xyz/logo/{name}.png" - }, - { - "name": "FMM.txt", - "type": 0, - "url": "http://127.0.0.1:10079/c/3600/proxy/https://fanmingming.com/txt?url=https://live.fanmingming.cn/tv/m3u/ipv6.m3u", - "ua": "okhttp/3.15", - "epg": "http://127.0.0.1:10079/p/0/proxy/http://epg.112114.xyz/?ch={name}&date={date}", - "logo": "http://127.0.0.1:10079/p/0/proxy/https://epg.112114.xyz/logo/{name}.png" - }, - { - "name": "zouming.ipv6", - "type": 0, - "url": "http://127.0.0.1:10079/c/3600/proxy/http://ww.zouming.com/ipv6.txt", - "ua": "okhttp/3.15", - "epg": "http://127.0.0.1:10079/p/0/proxy/http://epg.112114.xyz/?ch={name}&date={date}", - "logo": "http://127.0.0.1:10079/p/0/proxy/https://epg.112114.xyz/logo/{name}.png" - }, - { - "name": "YTLive", - "type": 0, - "url": "./lib/yo21.txt" - }, - { - "group": "redirect", - "channels": [ - { - "name": "redirect", - "urls": [ - "proxy://do=live&type=live&proxy=&url=" - ] - } - ] - } - ], - "doh": [ - { - "name": "Google", - "url": "https://dns.google/dns-query", - "ips": [ - "8.8.4.4", - "8.8.8.8" - ] - }, - { - "name": "Cloudflare", - "url": "https://cloudflare-dns.com/dns-query", - "ips": [ - "1.1.1.1", - "1.0.0.1", - "2606:4700:4700::1111", - "2606:4700:4700::1001" - ] - }, - { - "name": "AdGuard", - "url": "https://dns.adguard.com/dns-query", - "ips": [ - "94.140.14.140", - "94.140.14.141" - ] - }, - { - "name": "DNSWatch", - "url": "https://resolver2.dns.watch/dns-query", - "ips": [ - "84.200.69.80", - "84.200.70.40" - ] - }, - { - "name": "Quad9", - "url": "https://dns.quad9.net/dns-quer", - "ips": [ - "9.9.9.9", - "149.112.112.112" - ] - } - ], - "proxy": [ - "raw.githubusercontent.com", - "googlevideo.com", - "cdn.v82u1l.com", - "cdn.iz8qkg.com", - "cdn.kin6c1.com", - "c.biggggg.com", - "c.olddddd.com", - "haiwaikan.com", - "www.histar.tv", - "youtube.com", - "uhibo.com", - ".*boku.*", - ".*nivod.*", - ".*ulivetv.*" - ], - "hosts": [ - "cache.ott.ystenlive.itv.cmvideo.cn=base-v4-free-mghy.e.cdn.chinamobile.com", - "cache.ott.bestlive.itv.cmvideo.cn=base-v4-free-mghy.e.cdn.chinamobile.com", - "cache.ott.wasulive.itv.cmvideo.cn=base-v4-free-mghy.e.cdn.chinamobile.com", - "cache.ott.fifalive.itv.cmvideo.cn=base-v4-free-mghy.e.cdn.chinamobile.com", - "cache.ott.hnbblive.itv.cmvideo.cn=base-v4-free-mghy.e.cdn.chinamobile.com" - ], - "rules": [ - { - "name": "proxy", - "hosts": [ - "raw.githubusercontent.com", - "googlevideo.com", - "cdn.v82u1l.com", - "cdn.iz8qkg.com", - "cdn.kin6c1.com", - "c.biggggg.com", - "c.olddddd.com", - "haiwaikan.com", - "www.histar.tv", - "youtube.com", - "uhibo.com", - ".*boku.*", - ".*nivod.*", - "*.t4tv.hz.cz", - ".*ulivetv.*" - ] - }, - { - "host": "www.djuu.com", - "rule": [ - "mp4.djuu.com", - "m4a" - ] - }, - { - "host": "www.sharenice.net", - "rule": [ - "huoshan.com", - "/item/video/" - ], - "filter": [] - }, - { - "host": "www.sharenice.net", - "rule": [ - "sovv.qianpailive.com", - "vid=" - ], - "filter": [] - }, - { - "host": "www.sharenice.net", - "rule": [ - "douyin.com", - "/play/" - ] - }, - { - "host": "m.ysxs8.vip", - "rule": [ - "ysting.ysxs8.vip:81", - "xmcdn.com" - ], - "filter": [] - }, - { - "host": "hdmoli.com", - "rule": [ - ".m3u8" - ] - }, - { - "host": "https://api.live.bilibili.com", - "rule": [ - "bilivideo.com", - "/index.m3u8" - ], - "filter": [ - "data.bilibili.com/log/web", - "i0.hdslb.com/bfs/live/" - ] - }, - { - "host": "www.agemys.cc", - "rule": [ - "cdn-tos", - "obj/tos-cn" - ] - }, - { - "host": "www.fun4k.com", - "rule": [ - "https://hd.ijycnd.com/play", - "index.m3u8" - ] - }, - { - "host": "zjmiao.com", - "rule": [ - "play.videomiao.vip/API.php", - "time=", - "key=", - "path=" - ] - }, - { - "name": "火山嗅探", - "hosts": [ - "huoshan.com" - ], - "regex": [ - "item_id=" - ] - }, - { - "name": "抖音嗅探", - "hosts": [ - "douyin.com" - ], - "regex": [ - "is_play_url=" - ] - }, - { - "name": "農民嗅探", - "hosts": [ - "toutiaovod.com" - ], - "regex": [ - "video/tos/cn" - ] - }, - { - "name": "夜市", - "hosts": [ - "yeslivetv.com" - ], - "script": [ - "document.getElementsByClassName('vjs-big-play-button')[0].click()" - ] - }, - { - "name": "毛驢", - "hosts": [ - "www.maolvys.com" - ], - "script": [ - "document.getElementsByClassName('swal-button swal-button--confirm')[0].click()" - ] - }, - { - "name": "磁力广告", - "hosts": [ - "magnet" - ], - "regex": [ - "更多", - "社 區", - "x u u", - "最 新", - "直 播", - "更 新", - "社 区", - "有 趣", - "英皇体育", - "全中文AV在线", - "澳门皇冠赌场", - "哥哥快来", - "美女荷官", - "裸聊", - "新片首发", - "UUE29" - ] - } - ], - "parses": [], - "flags": [ - "youku", - "qq", - "iqiyi", - "qiyi", - "letv", - "sohu", - "tudou", - "pptv", - "mgtv", - "wasu" - ], - "wallpaper": "http://饭太硬.top/深色壁纸/api.php", - "disabled_wallpaper": "http://www.kf666888.cn/api/tvbox/img" -} \ No newline at end of file diff --git a/lib/123share.txt b/lib/123share.txt old mode 100644 new mode 100755 diff --git a/lib/18/dxzb.m3u b/lib/18/dxzb.m3u old mode 100644 new mode 100755 diff --git a/lib/18/dymzb.m3u b/lib/18/dymzb.m3u old mode 100644 new mode 100755 diff --git a/lib/18/hsck_gc.m3u b/lib/18/hsck_gc.m3u old mode 100644 new mode 100755 diff --git a/lib/18/hsck_rh.m3u b/lib/18/hsck_rh.m3u old mode 100644 new mode 100755 diff --git a/lib/18/mdsp.m3u b/lib/18/mdsp.m3u old mode 100644 new mode 100755 diff --git a/lib/18/omzb.m3u b/lib/18/omzb.m3u old mode 100644 new mode 100755 diff --git a/lib/18/sbjh.m3u b/lib/18/sbjh.m3u old mode 100644 new mode 100755 diff --git a/lib/18/twcr.m3u b/lib/18/twcr.m3u old mode 100644 new mode 100755 diff --git a/lib/189share.txt b/lib/189share.txt old mode 100644 new mode 100755 diff --git a/lib/aliproxy.tar.xz.md5 b/lib/aliproxy.tar.xz.md5 old mode 100644 new mode 100755 diff --git a/lib/alishare.ebook.txt b/lib/alishare.ebook.txt old mode 100644 new mode 100755 diff --git a/lib/alishare.txt b/lib/alishare.txt old mode 100644 new mode 100755 diff --git a/lib/cheerio.min.js b/lib/cheerio.min.js old mode 100644 new mode 100755 diff --git a/lib/cheerio.min.js.md5 b/lib/cheerio.min.js.md5 old mode 100644 new mode 100755 diff --git a/lib/crypto-js.js b/lib/crypto-js.js old mode 100644 new mode 100755 diff --git a/lib/crypto-js.js.md5 b/lib/crypto-js.js.md5 old mode 100644 new mode 100755 diff --git a/lib/drpy2.min.js.md5 b/lib/drpy2.min.js.md5 old mode 100644 new mode 100755 diff --git a/lib/feimaolive.json b/lib/feimaolive.json old mode 100644 new mode 100755 diff --git a/lib/gbk.js.md5 b/lib/gbk.js.md5 old mode 100644 new mode 100755 diff --git a/lib/iptv_test.m3u b/lib/iptv_test.m3u old mode 100644 new mode 100755 diff --git a/lib/iptv_test.txt b/lib/iptv_test.txt old mode 100644 new mode 100755 diff --git a/lib/jianpian.json b/lib/jianpian.json old mode 100644 new mode 100755 diff --git a/lib/jinja.js b/lib/jinja.js old mode 100644 new mode 100755 diff --git a/lib/jinja.js.md5 b/lib/jinja.js.md5 old mode 100644 new mode 100755 diff --git a/lib/json5.js b/lib/json5.js old mode 100644 new mode 100755 diff --git a/lib/libxlsdk.tar.xz.md5 b/lib/libxlsdk.tar.xz.md5 old mode 100644 new mode 100755 diff --git a/lib/live2vod.js b/lib/live2vod.js old mode 100644 new mode 100755 diff --git a/lib/live2vod.js.md5 b/lib/live2vod.js.md5 old mode 100644 new mode 100755 diff --git a/lib/mod.js.md5 b/lib/mod.js.md5 old mode 100644 new mode 100755 diff --git a/lib/node-rsa.js b/lib/node-rsa.js old mode 100644 new mode 100755 diff --git a/lib/node-rsa.js.md5 b/lib/node-rsa.js.md5 old mode 100644 new mode 100755 diff --git a/lib/pako.min.js b/lib/pako.min.js old mode 100644 new mode 100755 diff --git a/lib/pako.min.js.md5 b/lib/pako.min.js.md5 old mode 100644 new mode 100755 diff --git a/lib/pushshare.txt b/lib/pushshare.txt old mode 100644 new mode 100755 diff --git a/lib/quarkshare.txt b/lib/quarkshare.txt old mode 100644 new mode 100755 diff --git a/lib/sambashare.template.txt b/lib/sambashare.template.txt old mode 100644 new mode 100755 diff --git a/lib/sortName.js.md5 b/lib/sortName.js.md5 old mode 100644 new mode 100755 diff --git a/lib/tgsearch.json b/lib/tgsearch.json old mode 100644 new mode 100755 diff --git a/lib/thundershare.txt b/lib/thundershare.txt old mode 100644 new mode 100755 diff --git a/lib/ucshare.txt b/lib/ucshare.txt old mode 100644 new mode 100755 diff --git a/lib/youtube.json b/lib/youtube.json old mode 100644 new mode 100755 diff --git a/pg.jar.md5 b/pg.jar.md5 deleted file mode 100755 index 1b80b1621..000000000 --- a/pg.jar.md5 +++ /dev/null @@ -1 +0,0 @@ -c10464a367e55bef8b5c1ab58995144a \ No newline at end of file diff --git a/py/Applzxw.py b/py/Applzxw.py old mode 100644 new mode 100755 diff --git a/py/config/unmatched.txt b/py/config/unmatched.txt old mode 100644 new mode 100755 diff --git a/py/config/unmatched_test.txt b/py/config/unmatched_test.txt old mode 100644 new mode 100755 diff --git a/py/config/urls.txt b/py/config/urls.txt old mode 100644 new mode 100755 diff --git a/py/ssjh.py b/py/ssjh.py new file mode 100644 index 000000000..cfc937c46 --- /dev/null +++ b/py/ssjh.py @@ -0,0 +1,151 @@ +# coding=utf-8 +import os +import logging +import sys +import asyncio +import aiohttp + +BASE_URL = "http://api.hclyz.com:81/mf" + +SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) +TARGET_DIR = os.path.abspath(os.path.join(SCRIPT_DIR, "..", "lib")) +M3U_FILE = os.path.join(TARGET_DIR, "18/sbjh.m3u") + +BLACK_LIST = ["支付宝风控解除", "依依实力带飞"] + +HEADERS = {"User-Agent": "Mozilla/5.0"} +VALID_PREFIX = ("http://", "https://", "rtmp://") + +MAX_WORKERS = 15 + +def setup_logging(): + logger = logging.getLogger("ScraperLogger") + logger.setLevel(logging.INFO) + + formatter = logging.Formatter('[%(asctime)s] %(levelname)s: %(message)s', datefmt='%Y-%m-%d %H:%M:%S') + + console_handler = logging.StreamHandler(sys.stdout) + console_handler.setFormatter(formatter) + logger.addHandler(console_handler) + + return logger + +log = setup_logging() + +async def safe_get_json(url, session): + try: + async with session.get(url, headers=HEADERS, timeout=10) as r: + if r.status != 200: + return None + return await r.json(content_type=None) + except Exception as e: + log.error(f"Request Exception: {url} -> {e}") + return None + +def is_valid_stream(url): + url = url.lower() + return url.startswith(VALID_PREFIX) and (".m3u8" in url or ".flv" in url or ".mp4" in url or url.startswith("rtmp://")) + +async def process_platform(item, session, sem): + async with sem: + room_title = item.get("title", "").strip() + number = item.get("Number", "") + address = item.get("address", "") + + log.info(f"📺 Concurrent requests:{room_title}({number})") + + detail = await safe_get_json(f"{BASE_URL}/{address}", session) + if not detail: + return room_title, [], 1, 0 + + zhubo = detail.get("zhubo", []) + if not zhubo: + return room_title, [], 1, 0 + + group_name = f"{room_title}" + results = [] + errors = 0 + filtered = 0 + + for vod in zhubo: + name = vod.get("title", "").strip() + url = vod.get("address", "").strip() + + if any(keyword in name for keyword in BLACK_LIST): + log.info(f"🚫 Blocked words: {name}") + filtered += 1 + continue + + if not url or not is_valid_stream(url): + errors += 1 + continue + + results.append((group_name, name, url)) + + return room_title, results, errors, filtered + +async def main_async(): + total_error = 0 + total_success = 0 + total_filtered = 0 + + log.info("🚀 Task initiated.") + log.info(f"📂 Output the absolute path:{M3U_FILE}") + + # aiohttp 连接池配置 + connector = aiohttp.TCPConnector(limit=MAX_WORKERS) + async with aiohttp.ClientSession(connector=connector) as session: + + home = await safe_get_json(f"{BASE_URL}/json.txt", session) + if not home: + log.error("❌ Retrieval failed, collection terminated.") + sys.exit(1) + + data = home.get("pingtai", [])[1:] + data = sorted(data, key=lambda x: int(x.get("Number", 0) or 0), reverse=True) + + m3u_lines = ["#EXTM3U"] + seen_urls = set() + + log.info(f"⚡ Multi-threading (Async): {MAX_WORKERS}") + + sem = asyncio.Semaphore(MAX_WORKERS) + + tasks = [process_platform(item, session, sem) for item in data] + + results = await asyncio.gather(*tasks) + + for room_title, res, errors, filtered in results: + total_error += errors + total_filtered += filtered + + for group_name, name, url in res: + if url in seen_urls: + continue + + seen_urls.add(url) + m3u_lines.append(f'#EXTINF:-1 group-title="{group_name}",{name}') + m3u_lines.append(url) + total_success += 1 + + try: + os.makedirs(os.path.dirname(M3U_FILE), exist_ok=True) + + with open(M3U_FILE, "w", encoding="utf-8") as f: + f.write("\n".join(m3u_lines)) + log.info(f"📄 It has been generated and saved.") + log.info(f"✅ Absolute path: {M3U_FILE}") + except Exception as e: + log.error(f"❌ Failed to write to file: {e}") + sys.exit(1) + + summary_msg = f"Collection completed, valid:{total_success},Shield:{total_filtered},abnormal:{total_error}" + log.info(summary_msg) + + print(f"::notice title=📁 Save path: {M3U_FILE}::{summary_msg}") + +def main(): + asyncio.run(main_async()) + +if __name__ == "__main__": + main() diff --git a/py/爱瓜.py b/py/爱瓜.py old mode 100644 new mode 100755