From aeb70c298788ae217ffdbc3dd3e5f960cc95d2a2 Mon Sep 17 00:00:00 2001 From: lem85930 Date: Wed, 22 May 2024 19:53:52 +0800 Subject: [PATCH] deleted folder --- JN/CATJS/.github/workflows/release.yaml | 186 - JN/CATJS/.gitignore | 20 - JN/CATJS/.vscode/launch.json | 16 - JN/CATJS/CONTRIBUTING.md | 366 - JN/CATJS/LICENSE.md | 674 - JN/CATJS/README.md | 80 - JN/CATJS/build.py | 228 - JN/CATJS/jiguang.json | 1214 - JN/CATJS/js/4kysxz.js | 238 - JN/CATJS/js/aiyingshi.js | 299 - JN/CATJS/js/alipansou.js | 230 - JN/CATJS/js/aliyunpanshare.js | 226 - JN/CATJS/js/asianx.js | 183 - JN/CATJS/js/audiomack.js | 258 - JN/CATJS/js/base_spider.js | 85 - JN/CATJS/js/bilibili.js | 571 - JN/CATJS/js/bookan.js | 152 - JN/CATJS/js/bqg_open.js | 268 - JN/CATJS/js/changzhang.js | 347 - JN/CATJS/js/ciliduo.js | 191 - JN/CATJS/js/cilixiong.js | 253 - JN/CATJS/js/cntv.js | 364 - JN/CATJS/js/copymanga.js | 233 - JN/CATJS/js/dj0898_book_open.js | 215 - JN/CATJS/js/doll.js | 246 - JN/CATJS/js/douban.js | 636 - JN/CATJS/js/dubo.js | 75 - JN/CATJS/js/dygangs.js | 280 - JN/CATJS/js/dyttbt.js | 214 - JN/CATJS/js/feifan.js | 96 - JN/CATJS/js/feifan18.js | 96 - JN/CATJS/js/freeok.js | 333 - JN/CATJS/js/gitcafe.js | 228 - JN/CATJS/js/haiwaikan.js | 156 - JN/CATJS/js/hanxiucao.js | 625 - JN/CATJS/js/haoxi.js | 273 - JN/CATJS/js/hscangku.js | 153 - JN/CATJS/js/huya.js | 709 - JN/CATJS/js/ikanbot.js | 319 - JN/CATJS/js/jable.js | 317 - JN/CATJS/js/jiafeimao.js | 295 - JN/CATJS/js/jianpian.js | 482 - JN/CATJS/js/jiujiuliu.js | 282 - JN/CATJS/js/kankan70.js | 308 - JN/CATJS/js/kuaikan.js | 444 - JN/CATJS/js/liangzi.js | 93 - JN/CATJS/js/liangzi18.js | 93 - JN/CATJS/js/liujiushu.js | 260 - JN/CATJS/js/lovemovie.js | 328 - JN/CATJS/js/lovemovie18.js | 133 - JN/CATJS/js/mhdq.js | 181 - JN/CATJS/js/mp4movie.js | 269 - JN/CATJS/js/mxanime.js | 429 - JN/CATJS/js/nangua.js | 389 - JN/CATJS/js/newvision.js | 261 - JN/CATJS/js/nivod.js | 243 - JN/CATJS/js/nivod_18.js | 242 - JN/CATJS/js/pan_search.js | 152 - JN/CATJS/js/pipixia.js | 459 - JN/CATJS/js/push_agent.js | 108 - JN/CATJS/js/sehuatang.js | 251 - JN/CATJS/js/sp360.js | 672 - JN/CATJS/js/spider.js | 902 - JN/CATJS/js/star.js | 290 - JN/CATJS/js/testSpider.js | 117 - JN/CATJS/js/tiantian.js | 286 - JN/CATJS/js/ttkan.js | 343 - JN/CATJS/js/vodSpider.js | 192 - JN/CATJS/js/weixine.js | 322 - JN/CATJS/js/wogg.js | 319 - JN/CATJS/js/xb6v.js | 304 - JN/CATJS/js/yiqikan.js | 268 - JN/CATJS/json/CatOpen.json | 14 - JN/CATJS/json/TVBox.json | 374 - JN/CATJS/lib/TextDecoder.js | 190 - JN/CATJS/lib/TextEncoder.js | 107 - JN/CATJS/lib/ali.js | 83 - JN/CATJS/lib/ali_api.js | 711 - JN/CATJS/lib/ali_object.js | 510 - JN/CATJS/lib/big5.js | 154 - .../lib/bilibili_ASS_Danmaku_Downloader.js | 31 - JN/CATJS/lib/book.js | 76 - JN/CATJS/lib/cat.js | 15158 -------- JN/CATJS/lib/danmuSpider.js | 188 - JN/CATJS/lib/encoding-indexes.js | 37 - JN/CATJS/lib/encodings.js | 460 - JN/CATJS/lib/euc-jp.js | 166 - JN/CATJS/lib/euc-kr.js | 124 - JN/CATJS/lib/ffm3u8_open.js | 480 - JN/CATJS/lib/gb18030.js | 251 - JN/CATJS/lib/gbk_us.js | 32194 ---------------- JN/CATJS/lib/hls.js | 940 - JN/CATJS/lib/iso-2022-jp.js | 441 - JN/CATJS/lib/log.js | 86 - JN/CATJS/lib/misc.js | 129 - JN/CATJS/lib/nivid_object.js | 255 - JN/CATJS/lib/pipiXiaObject.js | 146 - JN/CATJS/lib/shift-jis.js | 170 - JN/CATJS/lib/similarity.js | 53 - JN/CATJS/lib/single-byte.js | 86 - JN/CATJS/lib/table.js | 119 - JN/CATJS/lib/tencentDanmu.js | 84 - JN/CATJS/lib/text_decoder_index.js | 118 - JN/CATJS/lib/text_decoder_indexes.js | 153 - JN/CATJS/lib/text_decoder_utils.js | 180 - JN/CATJS/lib/utf16.js | 139 - JN/CATJS/lib/utf8.js | 208 - JN/CATJS/lib/utils.js | 313 - JN/CATJS/lib/vod.js | 62 - JN/CATJS/lib/x-user-defined.js | 56 - JN/CATJS/nodejs/.eslintrc.cjs | 18 - JN/CATJS/nodejs/.gitignore | 4 - JN/CATJS/nodejs/.prettierrc.json | 7 - JN/CATJS/nodejs/babel.config.cjs | 11 - JN/CATJS/nodejs/esbuild-config.js | 28 - JN/CATJS/nodejs/esbuild.js | 27 - JN/CATJS/nodejs/nodemon.json | 12 - JN/CATJS/nodejs/package-lock.json | 13141 ------- JN/CATJS/nodejs/package.json | 43 - JN/CATJS/nodejs/readme.md | 15 - JN/CATJS/nodejs/rollup-config.js | 37 - JN/CATJS/nodejs/rollup.js | 55 - JN/CATJS/package-lock.json | 547 - JN/CATJS/package.json | 24 - JN/CATJS/requirements.txt | 1 - JN/CATJS/resources/ali.jpg | Bin 12227 -> 0 bytes JN/CATJS/resources/alipay.jpg | Bin 131057 -> 0 bytes JN/CATJS/resources/cili.jpg | Bin 14614 -> 0 bytes JN/CATJS/resources/dygang.jpg | Bin 71212 -> 0 bytes JN/CATJS/resources/dytt.jpg | Bin 173794 -> 0 bytes JN/CATJS/resources/error.png | Bin 6312 -> 0 bytes JN/CATJS/resources/liangzi.jpg | Bin 74892 -> 0 bytes JN/CATJS/resources/push.jpg | Bin 13518 -> 0 bytes JN/CATJS/resources/wechat.jpg | Bin 66190 -> 0 bytes JN/CATJS/test.js | 14 - JN/CATJS/test.json | 447 - JN/CATJS/wrapper/index.js | 507 - 137 files changed, 91354 deletions(-) delete mode 100644 JN/CATJS/.github/workflows/release.yaml delete mode 100644 JN/CATJS/.gitignore delete mode 100644 JN/CATJS/.vscode/launch.json delete mode 100644 JN/CATJS/CONTRIBUTING.md delete mode 100644 JN/CATJS/LICENSE.md delete mode 100644 JN/CATJS/README.md delete mode 100644 JN/CATJS/build.py delete mode 100644 JN/CATJS/jiguang.json delete mode 100644 JN/CATJS/js/4kysxz.js delete mode 100644 JN/CATJS/js/aiyingshi.js delete mode 100644 JN/CATJS/js/alipansou.js delete mode 100644 JN/CATJS/js/aliyunpanshare.js delete mode 100644 JN/CATJS/js/asianx.js delete mode 100644 JN/CATJS/js/audiomack.js delete mode 100644 JN/CATJS/js/base_spider.js delete mode 100644 JN/CATJS/js/bilibili.js delete mode 100644 JN/CATJS/js/bookan.js delete mode 100644 JN/CATJS/js/bqg_open.js delete mode 100644 JN/CATJS/js/changzhang.js delete mode 100644 JN/CATJS/js/ciliduo.js delete mode 100644 JN/CATJS/js/cilixiong.js delete mode 100644 JN/CATJS/js/cntv.js delete mode 100644 JN/CATJS/js/copymanga.js delete mode 100644 JN/CATJS/js/dj0898_book_open.js delete mode 100644 JN/CATJS/js/doll.js delete mode 100644 JN/CATJS/js/douban.js delete mode 100644 JN/CATJS/js/dubo.js delete mode 100644 JN/CATJS/js/dygangs.js delete mode 100644 JN/CATJS/js/dyttbt.js delete mode 100644 JN/CATJS/js/feifan.js delete mode 100644 JN/CATJS/js/feifan18.js delete mode 100644 JN/CATJS/js/freeok.js delete mode 100644 JN/CATJS/js/gitcafe.js delete mode 100644 JN/CATJS/js/haiwaikan.js delete mode 100644 JN/CATJS/js/hanxiucao.js delete mode 100644 JN/CATJS/js/haoxi.js delete mode 100644 JN/CATJS/js/hscangku.js delete mode 100644 JN/CATJS/js/huya.js delete mode 100644 JN/CATJS/js/ikanbot.js delete mode 100644 JN/CATJS/js/jable.js delete mode 100644 JN/CATJS/js/jiafeimao.js delete mode 100644 JN/CATJS/js/jianpian.js delete mode 100644 JN/CATJS/js/jiujiuliu.js delete mode 100644 JN/CATJS/js/kankan70.js delete mode 100644 JN/CATJS/js/kuaikan.js delete mode 100644 JN/CATJS/js/liangzi.js delete mode 100644 JN/CATJS/js/liangzi18.js delete mode 100644 JN/CATJS/js/liujiushu.js delete mode 100644 JN/CATJS/js/lovemovie.js delete mode 100644 JN/CATJS/js/lovemovie18.js delete mode 100644 JN/CATJS/js/mhdq.js delete mode 100644 JN/CATJS/js/mp4movie.js delete mode 100644 JN/CATJS/js/mxanime.js delete mode 100644 JN/CATJS/js/nangua.js delete mode 100644 JN/CATJS/js/newvision.js delete mode 100644 JN/CATJS/js/nivod.js delete mode 100644 JN/CATJS/js/nivod_18.js delete mode 100644 JN/CATJS/js/pan_search.js delete mode 100644 JN/CATJS/js/pipixia.js delete mode 100644 JN/CATJS/js/push_agent.js delete mode 100644 JN/CATJS/js/sehuatang.js delete mode 100644 JN/CATJS/js/sp360.js delete mode 100644 JN/CATJS/js/spider.js delete mode 100644 JN/CATJS/js/star.js delete mode 100644 JN/CATJS/js/testSpider.js delete mode 100644 JN/CATJS/js/tiantian.js delete mode 100644 JN/CATJS/js/ttkan.js delete mode 100644 JN/CATJS/js/vodSpider.js delete mode 100644 JN/CATJS/js/weixine.js delete mode 100644 JN/CATJS/js/wogg.js delete mode 100644 JN/CATJS/js/xb6v.js delete mode 100644 JN/CATJS/js/yiqikan.js delete mode 100644 JN/CATJS/json/CatOpen.json delete mode 100644 JN/CATJS/json/TVBox.json delete mode 100644 JN/CATJS/lib/TextDecoder.js delete mode 100644 JN/CATJS/lib/TextEncoder.js delete mode 100644 JN/CATJS/lib/ali.js delete mode 100644 JN/CATJS/lib/ali_api.js delete mode 100644 JN/CATJS/lib/ali_object.js delete mode 100644 JN/CATJS/lib/big5.js delete mode 100644 JN/CATJS/lib/bilibili_ASS_Danmaku_Downloader.js delete mode 100644 JN/CATJS/lib/book.js delete mode 100644 JN/CATJS/lib/cat.js delete mode 100644 JN/CATJS/lib/danmuSpider.js delete mode 100644 JN/CATJS/lib/encoding-indexes.js delete mode 100644 JN/CATJS/lib/encodings.js delete mode 100644 JN/CATJS/lib/euc-jp.js delete mode 100644 JN/CATJS/lib/euc-kr.js delete mode 100644 JN/CATJS/lib/ffm3u8_open.js delete mode 100644 JN/CATJS/lib/gb18030.js delete mode 100644 JN/CATJS/lib/gbk_us.js delete mode 100644 JN/CATJS/lib/hls.js delete mode 100644 JN/CATJS/lib/iso-2022-jp.js delete mode 100644 JN/CATJS/lib/log.js delete mode 100644 JN/CATJS/lib/misc.js delete mode 100644 JN/CATJS/lib/nivid_object.js delete mode 100644 JN/CATJS/lib/pipiXiaObject.js delete mode 100644 JN/CATJS/lib/shift-jis.js delete mode 100644 JN/CATJS/lib/similarity.js delete mode 100644 JN/CATJS/lib/single-byte.js delete mode 100644 JN/CATJS/lib/table.js delete mode 100644 JN/CATJS/lib/tencentDanmu.js delete mode 100644 JN/CATJS/lib/text_decoder_index.js delete mode 100644 JN/CATJS/lib/text_decoder_indexes.js delete mode 100644 JN/CATJS/lib/text_decoder_utils.js delete mode 100644 JN/CATJS/lib/utf16.js delete mode 100644 JN/CATJS/lib/utf8.js delete mode 100644 JN/CATJS/lib/utils.js delete mode 100644 JN/CATJS/lib/vod.js delete mode 100644 JN/CATJS/lib/x-user-defined.js delete mode 100644 JN/CATJS/nodejs/.eslintrc.cjs delete mode 100644 JN/CATJS/nodejs/.gitignore delete mode 100644 JN/CATJS/nodejs/.prettierrc.json delete mode 100644 JN/CATJS/nodejs/babel.config.cjs delete mode 100644 JN/CATJS/nodejs/esbuild-config.js delete mode 100644 JN/CATJS/nodejs/esbuild.js delete mode 100644 JN/CATJS/nodejs/nodemon.json delete mode 100644 JN/CATJS/nodejs/package-lock.json delete mode 100644 JN/CATJS/nodejs/package.json delete mode 100644 JN/CATJS/nodejs/readme.md delete mode 100644 JN/CATJS/nodejs/rollup-config.js delete mode 100644 JN/CATJS/nodejs/rollup.js delete mode 100644 JN/CATJS/package-lock.json delete mode 100644 JN/CATJS/package.json delete mode 100644 JN/CATJS/requirements.txt delete mode 100644 JN/CATJS/resources/ali.jpg delete mode 100644 JN/CATJS/resources/alipay.jpg delete mode 100644 JN/CATJS/resources/cili.jpg delete mode 100644 JN/CATJS/resources/dygang.jpg delete mode 100644 JN/CATJS/resources/dytt.jpg delete mode 100644 JN/CATJS/resources/error.png delete mode 100644 JN/CATJS/resources/liangzi.jpg delete mode 100644 JN/CATJS/resources/push.jpg delete mode 100644 JN/CATJS/resources/wechat.jpg delete mode 100644 JN/CATJS/test.js delete mode 100644 JN/CATJS/test.json delete mode 100644 JN/CATJS/wrapper/index.js diff --git a/JN/CATJS/.github/workflows/release.yaml b/JN/CATJS/.github/workflows/release.yaml deleted file mode 100644 index 290959bf..00000000 --- a/JN/CATJS/.github/workflows/release.yaml +++ /dev/null @@ -1,186 +0,0 @@ -name: Spider -on: - workflow_dispatch: -jobs: - build: - name: TVSpider - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - os: [ "ubuntu-latest" ] - steps: - - name: Clone Base Repository - uses: actions/checkout@v3 - with: - repository: ${{ secrets.GH_PATH}} - fetch-depth: 0 - token: ${{ secrets.GH_TOKEN}} - - - name: Clone TVSpider Repository - uses: actions/checkout@v3 - with: - repository: jadehh/TVSpider - path: tmp - fetch-depth: 0 # 显示所有提交的日志 - - - name: Build JS Config - run: | - cp -r ./tmp ./code - cd code - pip install -r requirements.txt - python build.py --aliToken "${{ secrets.ALI_TOKEN }}" --biliCookie "${{ secrets.BILI_COOKIE}}" - python build.py --aliToken "${{ secrets.ALI_TOKEN }}" --biliCookie "${{ secrets.BILI_COOKIE}}" --is_18 True - - - name: Commit JS Config files - run: | - git config --global user.email "${{ secrets.GT_EMAIL }}" - git config --global user.name "${{ secrets.GT_ACTOR }}" - checkname=$(git rev-list --max-parents=0 HEAD) - git checkout $checkname -b js ##分支不存在用这个 - cp -r code/18_open_config.json ./ - cp -r code/18_tv_config.json ./ - cp -r code/open_config.json ./ - cp -r code/tv_config.json ./ - cp -r code/js/ ./ - cp -r code/lib ./ - cp -r code/README.md ./README.md - cp -r code/resources ./ - git add 18_open_config.json - git add 18_tv_config.json - git add open_config.json - git add tv_config.json - git add resources - git add js - git add lib - git add README.md - commit_msg="* 更新TVConfig和OpenConfig" - git commit -a -m "$commit_msg" - - - name: Push JS Config Changes To Gitee - uses: ad-m/github-push-action@master - with: - github_token: ${{ secrets.GE_TOKEN }} - repository: ${{ secrets.GE_PATH }} - directory: . - branch: js - force: true - github_url: https://gitee.com - env: - GITHUB_ACTOR: ${{ secrets.GH_ACTOR }} - - - name: Push JS Config Changes To Github - uses: ad-m/github-push-action@master - with: - github_token: ${{ secrets.GH_TOKEN }} - repository: ${{ secrets.GH_PATH }} - directory: . - branch: js - force: true - env: - GITHUB_ACTOR: ${{ secrets.GH_ACTOR }} - - - name: Build NodeJS Config files - run: | - rm -r ./code - cp -r ./tmp ./code - cd code/ - python build.py --aliToken "${{ secrets.ALI_TOKEN }}" --biliCookie "${{ secrets.BILI_COOKIE}}" - cd nodejs - npm install qs --save - npm install tunnel --save - npm install - npm run build - - - name: Commit NodeJS Config files - run: | - git config --global user.email "${{ secrets.GT_EMAIL }}" - git config --global user.name "${{ secrets.GT_ACTOR }}" - checkname=$(git rev-list --max-parents=0 HEAD) - git checkout $checkname -b dist ##分支不存在用这个 - cp -r code/nodejs/dist/* ./ - cp -r code/nodejs/readme.md ./README.md - git add index.config.js - git add index.config.js.md5 - git add index.js - git add index.js.md5 - git add README.md - commit_msg="* 发布 CatVodOpen新源" - git commit -a -m "$commit_msg" - - - name: Push NodelJS Config Changes To Gitee - uses: ad-m/github-push-action@master - with: - github_token: ${{ secrets.GE_TOKEN }} - repository: ${{ secrets.GE_PATH }} - directory: . - branch: dist - force: true - github_url: https://gitee.com - env: - GITHUB_ACTOR: ${{ secrets.GH_ACTOR }} - - - name: Push NodelJS Config Changes To Github - uses: ad-m/github-push-action@master - with: - github_token: ${{ secrets.GH_TOKEN }} - repository: ${{ secrets.GH_PATH }} - directory: . - branch: dist - force: true - env: - GITHUB_ACTOR: ${{ secrets.GH_ACTOR }} - - - - - name: Build 18+ NodeJS Config files - run: | - rm -r ./code - cp -r ./tmp ./code - cd code/ - python build.py --aliToken "${{ secrets.ALI_TOKEN }}" --biliCookie "${{ secrets.BILI_COOKIE}}" --is_18 True - cd nodejs - npm install qs --save - npm install tunnel --save - npm install - npm run build - - - name: Commit 18+ NodeJS Config files - run: | - git config --global user.email "${{ secrets.GT_EMAIL }}" - git config --global user.name "${{ secrets.GT_ACTOR }}" - checkname=$(git rev-list --max-parents=0 HEAD) - git checkout $checkname -b 18_dist ##分支不存在用这个 - cp -r code/nodejs/dist/* ./ - cp -r code/nodejs/readme.md ./README.md - git add index.config.js - git add index.config.js.md5 - git add index.js - git add index.js.md5 - git add README.md - commit_msg="* 发布 CatVodOpen 18+ 新源" - git commit -a -m "$commit_msg" - - - name: Push NodelJS Config Changes To Gitee - uses: ad-m/github-push-action@master - with: - github_token: ${{ secrets.GE_TOKEN }} - repository: ${{ secrets.GE_PATH }} - directory: . - branch: 18_dist - force: true - github_url: https://gitee.com - env: - GITHUB_ACTOR: ${{ secrets.GH_ACTOR }} - - - name: Push NodelJS Config Changes To Github - uses: ad-m/github-push-action@master - with: - github_token: ${{ secrets.GH_TOKEN }} - repository: ${{ secrets.GH_PATH }} - directory: . - branch: 18_dist - force: true - env: - GITHUB_ACTOR: ${{ secrets.GH_ACTOR }} - diff --git a/JN/CATJS/.gitignore b/JN/CATJS/.gitignore deleted file mode 100644 index 4a0f814d..00000000 --- a/JN/CATJS/.gitignore +++ /dev/null @@ -1,20 +0,0 @@ -local -node_modules -.idea -log -local -open_config.json -test.py -tv_config.json -nodejs/dist -nodejs/node_modules -nodejs/src -releases/日志上传服务V1.0.1/Windows/ - - - - - - - - diff --git a/JN/CATJS/.vscode/launch.json b/JN/CATJS/.vscode/launch.json deleted file mode 100644 index e1194256..00000000 --- a/JN/CATJS/.vscode/launch.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - // 使用 IntelliSense 了解相关属性。 - // 悬停以查看现有属性的描述。 - // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387 - "version": "0.2.0", - "configurations": [ - { - "name": "Python: 当前文件", - "type": "python", - "request": "launch", - "program": "${file}", - "console": "integratedTerminal", - "justMyCode": true - } - ] -} \ No newline at end of file diff --git a/JN/CATJS/CONTRIBUTING.md b/JN/CATJS/CONTRIBUTING.md deleted file mode 100644 index b1a74da0..00000000 --- a/JN/CATJS/CONTRIBUTING.md +++ /dev/null @@ -1,366 +0,0 @@ -### 更新日志 - -### V1.0.7.0 - 2024-04-23 -* 新增69书吧源 ----- - - -
- -### V1.0.6.9 - 2024-04-16 -* 修复bilibili登录失败,仍然显示历史记录的bug ----- - -### V1.0.6.8 - 2024-04-16 -* 解决豆瓣搜索问题,并支持翻页 ----- - - -### V1.0.6.7 - 2024-04-15 -* 支持哔哩哔哩搜索翻页 #45 ----- - -### V1.0.6.6 - 2024-04-15 -* 支持南瓜影视搜索翻页 #46 -* 优化南瓜搜索部分图片加载不出来的bug -* 新增格式化url的方法 ----- - -### V1.0.6.5 - 2024-04-15 -* 新增天天影视源 ----- - -### V1.0.6.4 - 2024-04-14 -* 修复SP360弹幕加载 -* 修复bilibili在TV无法播放的问题,并删除相关和DASH播放的视频链接 ----- - -### V1.0.6.3 - 2024-04-14 -* 修复360无法播放的bug,使用sniff解析URL ----- - -### V1.0.6.2 - 2024-04-14 -* 修复含羞草类别问题 ----- - - -### V1.0.6.1 - 2024-04-13 -* 新增含羞草源 -* 支持搜索页面的翻页 ----- - -### V1.0.6.0 - 2024-04-13 -* 新增磁力熊源 ----- - -### V1.0.5.9 - 2024-04-13 -* 支持Log日志上传 ----- - -### V1.0.5.8 - 2024-04-02 -* 修复玩偶姐姐和jable源 ----- - -### V1.0.5.7 - 2024-04-02 -* 完成哔哩哔哩爬虫,优化播放列表格式 ----- - -### V1.0.5.6 - 2024-04-02 -* 新增哔哩哔哩源 -* 支持哔哩哔哩登录,Cookie传入 ----- - - -### V1.0.5.5 - 2024-04-02 -* 解决玩偶哥哥无法登录阿里的bug ----- - - -### V1.0.5.4 - 2024-04-02 -* 修复阿里盘无法加载的bug ----- - -### V1.0.5.3 - 2024-04-02 -* 修复爱看机器人部分详情无法打开的bug ----- - - -### V1.0.5.2 - 2024-04-02 -* 修改海外看名称 ----- - -### V1.0.5.1 - 2024-04-02 -* 新增海外看 -* 解决采集网站搜索图片加载不出来的bug -* 去除log日志输出 ----- - - -### V1.0.5.0 - 2024-04-01 -* 解决动漫加载不出来的bug ----- - - -### V1.0.4.9 - 2024-04-01 -* 合并MX动漫分支到主分支中 ----- - -### V1.0.4.8 - 2024-04-01 -* 添加sniff方法 ----- - -### V1.0.4.7 - 2024-04-01 -* 新增MX动漫源 ----- - -### V1.0.4.6 - 2024-04-01 -* 优化nodejs Spider -* 解决拷贝漫画 ----- - -### V1.0.4.5 - 2024-03-29 -* 解决笔趣阁历史记录无法加载的bug ----- - -### V1.0.4.4 - 2024-03-29 -* 修复笔趣阁 ----- - -### V1.0.4.3 - 2024-03-29 -* 取消日志输出解决IOS上的问题 ----- - -### V1.0.4.2 - 2024-03-29 -* 支持小说和音乐代码转nodejs -* 支持push操作 ----- - -### V1.0.4.1 - 2024-03-29 -* 解决图书和音乐加载失败的bug ----- - -### V1.0.4.0 - 2024-03-27 -* 去除已失效链接 ----- - -### V1.0.3.9 - 2024-03-27 -* 解决电影港首页无法加载图片的bug -* 去除已失效链接 ----- - -### V1.0.3.8 - 2024-03-27 -* 切换到主分支,其他分支都是用来发布 ----- - - -### V1.0.3.7 - 2024-03-27 -* 解决豆瓣类别无法加载的bug -* 解决豆瓣无法加载第二页的bug -* 解决阿里盘搜无法播放的bug -* 解决阿里纸条无法加载的bug -* 解决爱看机器人分类加载不正常的bug,爱看机器人部分无法播放待解决 ----- - -### V1.0.3.6 - 2024-03-27 -* 解决酷云无法打开的bug ----- - - -### V1.0.3.5 - 2024-03-27 -* 解决proxy代理设置的bug #19 -* 使用db替代local所有的方法 -* 取消log日志的输出 ----- - -### V1.0.3.4 - 2024-03-27 -* 完成阿里类的资源 ----- - -### V1.0.3.3 - 2024-03-27 -* 日志正常输出,使用数据库管理阿里云盘的缓存信息 ----- - -### V1.0.3.2 - 2024-03-27 -* 使用数据库来存储阿里云盘的值 ----- - -### V1.0.3.1 - 2024-03-27 -* 取消文件写入的日志输出 ----- - -### V1.0.3.0 - 2024-03-27 -* 完成quick js 转 node js代码 ----- - -### V1.0.2.9 - 2024-03-27 -* 同步Gitee分支和Github分支 ----- - -### V1.0.2.8 - 2024-03-27 -* 自动发布支持新版本CatVodOpen源 ----- - -### V1.0.2.7 - 2024-03-18 -* 新增南瓜影视 ---- - - -### V1.0.2.6 - 2024-03-13 -* 修复详情界面,返回episodeUrl需要带上VodDetail和episodeId -* 播放页面,解析其他信息 ---- - - - -### V1.0.2.5 - 2024-03-07 -* 完成jable所有功能 -* 新增虎牙直播源 ---- - -### V1.0.2.4 - 2024-03-06 -* 修复阿里云盘分享网的详情图片无法加载的问题 -* 新增本地源推送 ---- - -### V1.0.2.4 - 2024-02-29 -* 新增磁力狗源 -* 新增Jable源 -* 更新荐片二级菜单 ---- - -### V1.0.2.3 - 2024-02-29 -* 修改影视车新地址 ---- - -### V1.0.2.2 - 2024-02-21 -* 支持星视界采集 -* 新增电影港采集 ---- - -### V1.0.2.1 - 2024-02-20 -* 支持6080采集 ---- - -### V1.0.2.0 - 2024-02-19 -* 支持Mp4电影采集 ---- - -### V1.0.1.9 - 2024-02-06 -* 以非凡采集作为采集的基础类,后续基于非凡采集开发 -* CatVodOpen无法解决皮皮虾M3u8跨域的问题 ---- - -### V1.0.1.8 - 2024-02-06 -* 新增加菲猫资源 ---- - - -### V1.0.1.7 - 2024-02-04 -* 厂长资源支持阿里云盘和磁力连接播放 ---- - - -### V1.0.1.6 - 2024-02-01 -* 去除玩偶哥哥介绍视频 ---- - -### V1.0.1.5 - 2024-02-01 -* 电影天堂详情页面解析 ---- - -### V1.0.1.4 - 2024-01-26 -* 添加Audiomack音乐爬虫 ---- - -### V1.0.1.3 - 2024-01-26 -* 阿里云盘分享首页和类别爬虫 ---- - -### V1.0.1.3 - 2024-01-24 -* 待完成色花堂和电影天堂爬虫 ---- - -### V1.0.1.2 - 2024-01-24 -* 新增4k资源网站 ---- - -### V1.0.1.1 - 2024-01-24 -* 新增量子资源网 ---- - -### V1.0.1.0 - 2024-01-22 -* freeok 搜索难点在与验证码的识别 ---- - - -### V1.0.0.9 - 2024-01-19 -* 新增OK资源源 ---- - - -### V1.0.0.8 - 2024-01-03 -* 阿里云盘分享链接带file id,导致会保存整个分享链接的文件 -* 如果有file id,只保存当前文件夹下的文件 ---- - -### V1.0.0.7 - 2024-01-03 -* 新增阿里纸条爬虫 ---- - -### V1.0.0.6 - 2024-01-03 -* 修复70看看无法播放的bug -* 解决搜索关键词因存在空格导致无法搜索不出结果的bug ---- - - -### V1.0.0.6 - 2024-01-03 -* 新增爱看机器人源 -* 新增爱影视源 ---- - -### V1.0.0.5 - 2024-01-03 -* 修复阿里字幕的问题 -* 阿里云盘初始化时,不在删除文件夹,使用默认的文件夹File ID ---- - - -### V1.0.0.4 - 2023-12-22 -* 完成泥巴的视频播放功能 -* 支持自动发布功能 ---- - -### V1.0.0.3 - 2023-12-21 -* 支持泥巴首页解析 -* ext区分TVBox和CatOpen -* 解决ext的数据类型的bug -* 泥巴二级菜单添加全部按钮 ---- - -### V1.0.0.3 - 2023-12-14 -* 支持玩偶二级菜单,支持分类页面下一页 -* 支持TVBox接口 -* 先初始化阿里云盘,在清空缓存文件 -* TV客户端使用requests请求,code为undefined的bug -* 根据Content内容自定义Code码 -* 分享文件字幕和视频文件去重复 ---- - -### V1.0.0.2 - 2023-12-14 -* 转存文件如果存在,无需在转存一遍 ---- - -### V1.0.0.1 - 2023-12-14 -* 完善阿里日志输出 -* 完善玩偶哥哥日志输出 ---- - -### V1.0.0.0 - 2023-12-13 -* 完成阿里Api的优化,不重复刷新Token -* 修改阿里玩偶的地址 -* 阿里玩偶使用req2来进行解析 -* 还原index.js内容 -* 解决阿里玩偶分类页加载不出来的bug -* 优化阿里Api -* 解决带字幕的bug ---- -
diff --git a/JN/CATJS/LICENSE.md b/JN/CATJS/LICENSE.md deleted file mode 100644 index e72bfdda..00000000 --- a/JN/CATJS/LICENSE.md +++ /dev/null @@ -1,674 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. \ No newline at end of file diff --git a/JN/CATJS/README.md b/JN/CATJS/README.md deleted file mode 100644 index ebb031bd..00000000 --- a/JN/CATJS/README.md +++ /dev/null @@ -1,80 +0,0 @@ -# CatVodOpen和TvBox - -## 食用前阅读 -  授人以鱼不如授人以渔,本仓意指在教会大家学会Spider,也欢迎大家提ISSUE,一起学习一起进步。
-  以下资源不能保证内容的合法性、准确性、完整性和有效性,请根据情况自行判断。 -仅用于测试和学习研究,禁止用于商业用途,不得将其用于违反国家、地区、组织等的法律法规或相关规定的其他用途。 -使用任何第三方硬件、软件、所造成的一切后果由使用的个人或组织承担,与本文内容无关。 -所有直接或间接使用本内容的个人和组织,应 24 小时内完成学习和研究,并及时删除本文内容。 -所有基于本内容的源代码,进行的任何修改,为其他个人或组织的自发行为,与本内容没有任何直接或间接的关系,所造成的一切后果亦与本内容和本管理者无关。 -本管理者保留随时更改或补充此免责声明的权利。一旦使用、复制、转载、发布、修改了本文内容,则视为您已接受此免责声明。否则后果自负。 -本接口无公众号、无盈利、无引流、免费分享给小白使用,请勿轻信他人,谨防上当受骗。 - -[使用教程见Wiki](https://github.com/jadehh/TVSpider/wiki) - -## TVBox互联网发布地址 -[TV发布地址](https://github.com/FongMi/Release/tree/main/apk/release) -```bash -https://gh.con.sh/https://raw.githubusercontent.com/jadehh/TVSpider/js/tv_config.json -``` -> 配置信息见js分支分支 - - -## CatVodOpen -[CatVodOpen发布地址](https://github.com/catvod/CatVodOpen/releases) - -> 注意使用Gitee或Github导入,并设置为私有仓库,CatVodOpen仅支持私有仓库 - -V1.1.3版本以上 -```bash -gitee://Token@gitee.com/jadehh_743/TVSpider/dist/index.js.md5 -``` -**改动** - -* quickjs改为nodejs,proxy设置修改 -* 在ios上无法使用local,使用db替换local所有方法 -* nodejs 的优势在于更加灵活 -> 配置信息见dist分支 - -V1.1.2版本以下 -```bash -gitee://Token@gitee.com/jadehh_743/TVSpider/js/open_config.json -``` -> 配置信息见js分支分支 - - -## config文件生成 -```bash -python build.py --aliToken aliToken -``` -> Token如果失效,需要重新获取阿里Token -> -> [阿里Token获取](https://alist.nn.ci/zh/guide/drivers/aliyundrive.html) -> -> nodejs 部分只生成代码,需要手动build,区分18+ - -## 直播源生成 -> 见[jadehh/LiveSpider](https://github.com/jadehh/LiveSpider) - - -## 遇到的问题 -* 玩偶姐姐播放不了,需要切换VPN节点 -* m3u8遇到跨域的问题可以尝试使用代理来进行加载,如果没有跨域使用代理会引起死循环 -* 虎牙弹幕功能无法实现,现在并不支持WebSocket来监听弹幕 -* SP360启用嗅探解析,CatVodOpen目前还不支持嗅探 -* CatVodOpen Windows无法预览Jable和Doll图片,需要手动开启代理加载。 -* TV影视暂不不支持哔哩哔哩DASH文件播放 -* 老版本的CatVodOpen cfg参数类型为:string,TV参数类型为[object],所有需要区分,初始化的时候还是用this.cfgObj - -## 特别说明 -* 近期CatVodOpen更新移除了quickjs,导致无法使用,请尝试使用旧版本 -* 或切换至nodejs目录下编译生成dist目录,dist目录发布到dist分支下 -* main分支用于代码测试(不包含任何配置信息),js分支发布支持quickjs爬虫配置信息,dist分支发布支持nodejs爬虫配置信息 -* 所有的配置信息都通过Github Actions发布,通过创建tag来生成新的配置信息并自动发布 -* fork仓库时去掉仅复制main分支的✔,这样就可以fork所有的分支了 - - -## 赞助 -如果觉得此项目有用,可以考虑赞助我喝杯咖啡,感谢star❤ - -微信 diff --git a/JN/CATJS/build.py b/JN/CATJS/build.py deleted file mode 100644 index d3df0302..00000000 --- a/JN/CATJS/build.py +++ /dev/null @@ -1,228 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -# @File : buildConfig.py -# @Author : jade -# @Date : 2024/4/22 10:53 -# @Email : jadehh@1ive.com -# @Software : Samples -# @Desc : 生成配置文件,包含Config,Dist分支 -import json -import os -from jade import str_to_bool, CreateSavePath, GetLastDir, GetTimeStamp -import argparse - - -class JSMoudle(): - def __init__(self, js_file): - self.js_file = js_file - self.js_name = GetLastDir(js_file).split(".")[0] - self.is_18 = False - self.getContent() - - def getContent(self): - with open(self.js_file, "rb") as f: - self.js_str = str(f.read(), encoding="utf-8") - if "🔞" in self.js_str: - self.is_18 = True - - def getName(self): - try: - name = (self.js_str.split("getName()")[-1].split("}")[0].split("return")[-1].split('"')[1]) - return name - except: - return None - - def getAppName(self): - try: - name = (self.js_str.split("getAppName()")[-1].split("}")[0].split("return")[-1].split('"')[1]) - return name - except Exception as e: - return None - - def getJSName(self): - try: - name = (self.js_str.split("getJSName()")[-1].split("}")[0].split("return")[-1].split('"')[1]) - return name - except: - return None - - def getType(self): - try: - name = (self.js_str.split("getType()")[-1].split("}")[0].split("return")[-1]) - return int(name.strip()) - except: - return None - - -class Build(): - def __init__(self, channelKey,aliToken, biliCookie, is_18="False"): - self.is_18 = str_to_bool(is_18) - self.aliToken = aliToken - self.biliCookie = biliCookie - self.jsMouleList = self.getJsFile(channelKey) - super().__init__() - - def getJsFile(self,channelKey): - jsMoudleList = [] - js_path = "js" - fileList = os.listdir(js_path) - for fileName in fileList: - jsMoudle = JSMoudle(js_path + "/" + fileName) - if jsMoudle.getName() is not None: - if len(channelKey): - if channelKey == jsMoudle.getJSName(): - jsMoudleList.append(jsMoudle) - else: - jsMoudleList.append(jsMoudle) - return jsMoudleList - - def getBaseConfig(self, baseObj, jsMoudle, tvType="TVBox"): - baseObj["key"] = jsMoudle.js_name - baseObj["name"] = jsMoudle.getName() - baseObj["ext"] = {"box": tvType} - baseObj["api"] = "./" + jsMoudle.js_file - baseObj["type"] = jsMoudle.getType() - return baseObj - - def getCustomConfig(self, baseObj, jsMoudle): - if "阿里" in jsMoudle.getAppName() or "厂长直连" in jsMoudle.getAppName(): - baseObj["ext"]["token"] = self.aliToken - elif jsMoudle.getAppName() == "泥视频": - baseObj["ext"]["code"] = int(self.is_18) - elif jsMoudle.getAppName() == "量子资源": - baseObj["ext"]["code"] = int(self.is_18) - elif jsMoudle.getAppName() == "哔哩哔哩": - baseObj["ext"]["cookie"] = self.biliCookie - return baseObj - - def getConfig(self, tyType="TVBox", type=3): - baseObj = {"key": "", "name": "", "api": "", "timeout": 30, "ext": {}} - if type == 3: - baseObj["playerType"] = 0 - siteList = [] - for jsMoudle in self.jsMouleList: - if jsMoudle.is_18 == self.is_18 and jsMoudle.getType() == type: - siteObj = baseObj.copy() - siteObj = self.getBaseConfig(siteObj, jsMoudle, tyType) - siteObj = self.getCustomConfig(siteObj, jsMoudle) - siteList.append(siteObj) - return siteList - - def getJsList(self, tyType="TVBox", type=3): - jsList = [] - for jsMoudle in self.jsMouleList: - if jsMoudle.is_18 == self.is_18 and jsMoudle.getType() == type: - jsList.append(jsMoudle) - return jsList - - def getConfigByTvType(self, tvType): - videoConfig = self.getConfig(tvType, 3) - bookConfig = self.getConfig(tvType, 10) - carToonConfig = self.getConfig(tvType, 20) - jsonConfig = self.getJsonConfigByTvType(tvType) - return videoConfig, bookConfig, carToonConfig, jsonConfig - - def getJsonConfigByTvType(self, tvType): - jsonPath = "json" - with open(os.path.join(jsonPath, "{}.json".format(tvType)), "rb") as f: - return json.load(f) - - def writeJsonConfig(self, tvType, jsonConfig): - config_name = "{}_config.json".format(tvType) - if self.is_18: - config_name = "18_" + config_name - with open(config_name, "wb") as f: - f.write(json.dumps(jsonConfig, indent=4, ensure_ascii=False).encode("utf-8")) - - def writeTVConfig(self): - print("Write TV Config") - tvType = "TVBox" - videoConfig, bookConfig, carToonConfig, jsonConfig = self.getConfigByTvType(tvType) - jsonConfig["sites"] = videoConfig - self.writeJsonConfig("tv", jsonConfig) - - def writeOpenConfig(self): - print("Write Open Config") - tvType = "CatOpen" - videoConfig, bookConfig, carToonConfig, jsonConfig = self.getConfigByTvType(tvType) - jsonConfig["video"]["sites"] = videoConfig - jsonConfig["read"]["sites"] = bookConfig - self.writeJsonConfig("open", jsonConfig) - - def jsToNodejs(self, jsList, typeName="video"): - nodejsPath = "nodejs/src/spider/" - savePath = CreateSavePath(os.path.join(nodejsPath, typeName)) - for jsMoudle in jsList: - write_content = "" - with open(os.path.join(nodejsPath, "tmpSpider.txt"), "rb") as f: - contentlist = f.readlines() - for content in contentlist: - write_content = write_content + str(content, encoding="utf-8").replace("temp", - jsMoudle.getJSName()).replace( - "updateTime", GetTimeStamp()) - saveJsPath = os.path.join(nodejsPath, typeName, GetLastDir(jsMoudle.js_file)) - with open(saveJsPath, "wb") as f: - f.write(write_content.encode("utf-8")) - fileList = [] - fileNameList = os.listdir(os.path.join(nodejsPath, typeName)) - for fileName in fileNameList: - fileList.append(fileName) - writeContent,spiderList = self.getImportNameByType(fileList,typeName) - return writeContent,spiderList - - def getImportNameByType(self,fileList,typeName="video"): - writeRoutersContent = "" - spiderList = [] - for fileName in fileList: - jsName = fileName.split(".")[0] - spiderList.append(jsName) - importStr = "import {} from './spider/{}/{}.js';\n".format(jsName, typeName, jsName) - writeRoutersContent = writeRoutersContent + importStr - return writeRoutersContent,spiderList - - - def writeRouterJs(self,writeRouterStr,spiderList): - writeRouterStr = writeRouterStr + "const spiders = [{}];".format(",".join(spiderList)) + "\n" - with open("nodejs/src/router.txt", "rb") as f: - contentlist = f.readlines() - for content in contentlist: - writeRouterStr = writeRouterStr + str(content, encoding="utf-8") - with open("nodejs/src/router.js", "wb") as f: - f.write(writeRouterStr.encode("utf-8")) - - def writeNodeConfig(self): - writeContent = "" - with open("nodejs/src/index.config.txt", "rb") as f: - contentlist = f.readlines() - for content in contentlist: - writeContent = writeContent + str(content, encoding="utf-8").replace("temp", self.aliToken).replace( - "bilitmep", self.biliCookie) + "\n" - with open("nodejs/src/index.config.js", "wb") as f: - f.write(writeContent.encode("utf-8")) - - def writeDistConfig(self): - tvType = "CatOpen" - videoWriteContent,videoSpiderList = self.jsToNodejs(self.getJsList(tvType, type=3), "video") - self.jsToNodejs(self.getJsList(tvType, type=10), "book") - bookWriteContent,bookSpiderList = self.jsToNodejs(self.getJsList(tvType, type=20), "book") - panWriteContent,panSpiderList = self.jsToNodejs([], "pan") - videoSpiderList.extend(bookSpiderList) - videoSpiderList.extend(panSpiderList) - self.writeRouterJs(videoWriteContent+bookWriteContent+panWriteContent,videoSpiderList) - self.writeNodeConfig() - def build(self): - self.writeTVConfig() - self.writeOpenConfig() - self.writeDistConfig() - - -if __name__ == '__main__': - parser = argparse.ArgumentParser() - parser.add_argument('--key', type=str, default="") ## 添加环境变量 - parser.add_argument('--aliToken', type=str, default="51427b95ab9d47a6921a27951ebd3f1e") ## 添加环境变量 - parser.add_argument('--is_18', type=str, default="False") ## 添加 - parser.add_argument('--biliCookie', type=str, - default="buvid3=02675249-8ED3-C418-87F5-59E18316459714816infoc; b_nut=1704421014; _uuid=5D435F74-F574-D9AB-62C1-B9294DE465D913102infoc; buvid_fp=e8c5650c749398e9b5cad3f3ddb5081e; buvid4=007E85D1-52C1-7E6E-07CF-837FFBC9349516677-024010502-J5vTDSZDCw4fNnXRejbSVg%3D%3D; rpdid=|()kYJmulRu0J'u~|RRJl)JR; PVID=1; SESSDATA=3be091d3%2C1720332009%2C699ed%2A11CjAcCdwXG5kY1umhCOpQHOn_WP7L9xFBfWO7KKd4BPweodpR6VyIfeNyPiRmkr5jCqsSVjg0R0dZOVVHRUo3RnhPRTZFc3JPbGdiUjFCdHpiRDhiTkticmdKTjVyS1VhbDdvNjFMSDJlbUJydUlRdjFUNGFBNkJlV2ZTa0N1Q1BEVi1QYTQzTUh3IIEC; bili_jct=b0ee7b5d3f27df893545d811d95506d4; DedeUserID=78014638; DedeUserID__ckMd5=4c8c5d65065e468a; enable_web_push=DISABLE; header_theme_version=CLOSE; home_feed_column=5; CURRENT_BLACKGAP=0; CURRENT_FNVAL=4048; b_lsid=75E916AA_18EA1A8D995; bsource=search_baidu; FEED_LIVE_VERSION=V_HEADER_LIVE_NO_POP; browser_resolution=1507-691; bili_ticket=eyJhbGciOiJIUzI1NiIsImtpZCI6InMwMyIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MTIzNjk5MTMsImlhdCI6MTcxMjExMDY1MywicGx0IjotMX0.8zQW_fNTCSBlK_JkHnzu3gDw62wuTK1qgKcbGec3swM; bili_ticket_expires=171236985") ## 添加 - args = parser.parse_args() - build = Build(channelKey=args.key,aliToken=args.aliToken, biliCookie=args.biliCookie, is_18=args.is_18) - build.build() diff --git a/JN/CATJS/jiguang.json b/JN/CATJS/jiguang.json deleted file mode 100644 index 1997b685..00000000 --- a/JN/CATJS/jiguang.json +++ /dev/null @@ -1,1214 +0,0 @@ -{ - "list": [ - { - "detailActor": ".actors[*].name@js:java.Fhtml(result)", - "detailArea": ".area.title", - "detailDesc": ".description", - "detailDirector": ".directors[*].name", - "detailPoster": "", - "detailRemark": "", - "detailYear": ".year.title", - "enable": false, - "enableFind": false, - "exclude": "", - "findActor": "", - "findArea": "", - "findDesc": "description", - "findDirector": "", - "findImg": "path", - "findList": "data[*]", - "findName": "title", - "findNoteUrl": "https://ownjpykxttjzuhy.jiesiwa.com/api/node/detail?token=&id={$.id}", - "findRemark": "score", - "findUrl": "https://gitcode.net/2301_77105001/zxmovie/-/raw/master/jp.zx", - "findYear": "playlist.title", - "httpHeader": "{\"JPAUTH\": \"ahet8ZaSpD4y6DboHXIOr2iDVz6j5ne7tvkSdbvmpWNw\",\r\n\"user-agent\": \"jianpian-android/350\"}", - "httpUserAgent": "", - "isServer": true, - "loginUrl": "", - "parserType": "5", - "parserUrl": "", - "play": "", - "playHeader": "", - "playList": ".btbo_downlist[*]", - "playName": "title", - "playUrl": "url", - "recoUrl": "", - "searchActor": "", - "searchArea": "", - "searchDesc": "", - "searchDirector": "", - "searchImg": "thumbnail", - "searchList": "data[*]", - "searchName": "title", - "searchNoteUrl": "https://ownjpykxttjzuhy.jiesiwa.com/api/node/detail?token=&id={$.id}", - "searchRemark": "mask", - "searchUrl": "https://ownjpykxttjzuhy.jiesiwa.com/api/video/search?key=searchKey&page=1", - "searchYear": "", - "serialNumber": 0, - "sortName": "", - "sortNameList": "", - "sortUrlList": "", - "sourceGroup": "aa", - "sourceName": "荐片", - "sourceType": "", - "sourceUrl": "https://ownjpykxttjzuhy.jiesiwa.com", - "weight": 0 - }, - { - "detailActor": "", - "detailArea": "", - "detailDesc": "", - "detailDirector": "", - "detailPoster": "", - "detailRemark": "", - "detailYear": "", - "enable": false, - "enableFind": false, - "exclude": "", - "findActor": "", - "findArea": "", - "findDesc": "", - "findDirector": "", - "findImg": "tag.img.0@data-original", - "findList": "//a[@class='module-poster-item module-item']", - "findName": "//@title", - "findNoteUrl": "tag.a.0@href", - "findRemark": "", - "findUrl": "电影::https://www.freeok.vip/vodshow/1--------searchPage---.html\r\n综艺::https://www.freeok.vip/vodshow/4--------searchPage---.html\r\n动漫::https://www.freeok.vip/vodshow/3--------searchPage---.html\r\n电视剧::https://www.freeok.vip/vodshow/2--------searchPage---.html", - "findYear": "", - "httpHeader": "", - "httpUserAgent": "", - "isServer": true, - "loginUrl": "", - "parserType": "4", - "parserUrl": "", - "play": "", - "playHeader": "", - "playList": "//a[@class='module-play-list-link']", - "playName": "tag.span.0@text", - "playUrl": "//@href'https://www.freeok.vip' + result", - "recoUrl": "", - "searchActor": "", - "searchArea": "", - "searchDesc": "", - "searchDirector": "", - "searchImg": "vod_pic", - "searchList": "Data.result[*]", - "searchName": "vod_name", - "searchNoteUrl": "vod_url", - "searchRemark": "", - "searchUrl": "http://123.207.150.253/zxapi/public/?service=App.F.Fetch&req_p=searchKey&type=okys", - "searchYear": "", - "serialNumber": 0, - "sortName": "tag.span.0@text", - "sortNameList": "//div[@id='y-playList']/div", - "sortUrlList": "//div[@class='module-list sort-list tab-list his-tab-list']", - "sourceGroup": "aa", - "sourceName": "OK资源", - "sourceType": "", - "sourceUrl": "https://www.freeok.vip", - "weight": 0 - }, - { - "detailActor": "", - "detailArea": "", - "detailDesc": " class.module-info-item video-info-content vod_content@tag.span@text", - "detailDirector": "", - "detailPoster": "", - "detailRemark": "", - "detailYear": "", - "enable": false, - "enableFind": false, - "exclude": "m3u8&next=https://www.", - "findActor": "", - "findArea": "", - "findDesc": "", - "findDirector": "", - "findImg": "tag.img.0@data-src", - "findList": "//div[@class='module-items']/div", - "findName": "tag.a.0@title", - "findNoteUrl": "tag.a.0@href", - "findRemark": "", - "findUrl": "电影::https://www.6080yy3.com/vodshow/1--------searchPage---.html\n动漫::https://www.6080yy3.com/vodshow/4--------searchPage---.html\n综艺::https://www.6080yy3.com/vodshow/3--------searchPage---.html\n电视剧::https://www.6080yy3.com/vodshow/2--------searchPage---.html", - "findYear": "", - "httpHeader": "", - "httpUserAgent": "", - "isServer": true, - "loginUrl": "", - "parserType": "4", - "parserUrl": "", - "play": "", - "playHeader": "", - "playList": "//div/a", - "playName": "tag.a.0@text", - "playUrl": "tag.a.0@href'https://www.6080yy3.com' + result", - "recoUrl": "", - "searchActor": "", - "searchArea": "", - "searchDesc": "", - "searchDirector": "", - "searchImg": "vod_pic", - "searchList": "Data.result[*]", - "searchName": "vod_name", - "searchNoteUrl": "vod_url", - "searchRemark": "", - "searchUrl": "http://123.207.150.253/zxapi/public/?service=App.F.Fetch&req_p=searchKey&type=6080", - "searchYear": "", - "serialNumber": 0, - "sortName": "tag.span.0@text", - "sortNameList": "//div[@class='module-tab-content']/div", - "sortUrlList": "//div[@class='module-blocklist scroll-box scroll-box-y']", - "sourceGroup": "aa", - "sourceName": "6080影视", - "sourceType": "", - "sourceUrl": "https://www.6080yy3.com", - "weight": 0 - }, - { - "detailActor": "", - "detailArea": "", - "detailDesc": "", - "detailDirector": "", - "detailPoster": "", - "detailRemark": "", - "detailYear": "", - "enable": false, - "enableFind": false, - "exclude": "", - "findActor": "", - "findArea": "", - "findDesc": "class.info@text", - "findDirector": "", - "findImg": "tag.img.0@data-original", - "findList": "//div[@id='list_all']/ul/li", - "findName": "tag.h2.0@text", - "findNoteUrl": "tag.a.0@hrefresult+''", - "findRemark": "", - "findUrl": "动作片::https://www.mp4us.com/list/1-searchPage.html\n科幻片::https://www.mp4us.com/list/2-searchPage.html\n爱情片::https://www.mp4us.com/list/3-searchPage.html\n喜剧片::https://www.mp4us.com/list/4-searchPage.html\n恐怖片::https://www.mp4us.com/list/5-searchPage.html\n战争片::https://www.mp4us.com/list/6-searchPage.html\n剧情片::https://www.mp4us.com/list/7-searchPage.html\n纪录片::https://www.mp4us.com/list/8-searchPage.html\n动画片::https://www.mp4us.com/list/9-searchPage.html", - "findYear": "", - "httpHeader": "{\"User-Agent\":\"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.93 Safari/537.36\"}", - "httpUserAgent": "", - "isServer": true, - "loginUrl": "", - "parserType": "5", - "parserUrl": "", - "play": "", - "playHeader": "", - "playList": "//ul/li", - "playName": "tag.a.0@title", - "playUrl": "tag.a.0@href", - "recoUrl": "", - "searchActor": "", - "searchArea": "", - "searchDesc": "//p[@class='info hidden-sm hidden-xs']/text()", - "searchDirector": "", - "searchImg": "tag.img.0@data-original", - "searchList": "//div[@id='list_all']/ul/li", - "searchName": "tag.h2.0@tag.a@text", - "searchNoteUrl": "tag.a.0@hrefresult+''", - "searchRemark": "", - "searchUrl": "https://www.mp4us.com/search/@wd=searchKey", - "searchYear": "", - "serialNumber": 0, - "sortName": "tag.h2@text", - "sortNameList": "//div[@class='article-related download_url']", - "sortUrlList": "//div[@class='article-related download_url']", - "sourceGroup": "aa", - "sourceName": "MP4kan", - "sourceType": "", - "sourceUrl": "https://www.mp4us.com", - "weight": 0 - }, - { - "detailActor": "//div[@class='stui-content__detail']/p[5]/text()", - "detailArea": "", - "detailDesc": "//span[@class='detail-content']/text()", - "detailDirector": "//div[@class='stui-content__detail']/p[6]/text()", - "detailPoster": "", - "detailRemark": "", - "detailYear": "", - "enable": false, - "enableFind": false, - "exclude": "player.html?s=", - "findActor": "", - "findArea": "", - "findDesc": "", - "findDirector": "", - "findImg": "", - "findList": "", - "findName": "", - "findNoteUrl": "", - "findRemark": "", - "findUrl": "", - "findYear": "", - "httpHeader": "", - "httpUserAgent": "", - "isServer": true, - "loginUrl": "", - "parserType": "4", - "parserUrl": "", - "play": "", - "playHeader": "", - "playList": "//li", - "playName": "tag.a.0@text", - "playUrl": "tag.a.0@href'https://dadagui.me' + result", - "recoUrl": "", - "searchActor": "", - "searchArea": "", - "searchDesc": "", - "searchDirector": "", - "searchImg": "tag.a.0@data-original", - "searchList": "//ul[@class='stui-vodlist clearfix']/li", - "searchName": "tag.a.0@title", - "searchNoteUrl": "tag.a.0@href", - "searchRemark": "", - "searchUrl": "https://dadagui.me/vodsearch/searchKey-------------.html", - "searchYear": "", - "serialNumber": 0, - "sortName": "", - "sortNameList": "", - "sortUrlList": "//ul[@class='stui-content__playlist clearfix']", - "sourceGroup": "aa", - "sourceName": "达达龟", - "sourceType": "", - "sourceUrl": "https://dadagui.me", - "weight": 0 - }, - { - "detailActor": "", - "detailArea": "", - "detailDesc": "", - "detailDirector": "", - "detailPoster": "", - "detailRemark": "", - "detailYear": "", - "enable": false, - "enableFind": false, - "exclude": "", - "findActor": "", - "findArea": "", - "findDesc": "", - "findDirector": "", - "findImg": "", - "findList": "", - "findName": "", - "findNoteUrl": "", - "findRemark": "", - "findUrl": "", - "findYear": "", - "httpHeader": "", - "httpUserAgent": "", - "isServer": true, - "loginUrl": "", - "parserType": "7", - "parserUrl": "", - "play": "", - "playHeader": "", - "playList": "", - "playName": "", - "playUrl": "", - "recoUrl": "", - "searchActor": "", - "searchArea": "", - "searchDesc": "", - "searchDirector": "", - "searchImg": "", - "searchList": "", - "searchName": "", - "searchNoteUrl": "", - "searchRemark": "", - "searchUrl": "http://cj.ffzyapi.com/api.php/provide/vod/at/xml/?ac=list", - "searchYear": "", - "serialNumber": 0, - "sortName": "", - "sortNameList": "", - "sortUrlList": "", - "sourceGroup": "aa", - "sourceName": "量子资源", - "sourceType": "", - "sourceUrl": "http://cj.ffzyapi.com/api.php/provide/vod/at/xml/", - "weight": 0 - }, - { - "detailActor": "", - "detailArea": "", - "detailDesc": "", - "detailDirector": "", - "detailPoster": "", - "detailRemark": "", - "detailYear": "", - "enable": false, - "enableFind": false, - "exclude": "", - "findActor": "", - "findArea": "", - "findDesc": "", - "findDirector": "", - "findImg": "", - "findList": "", - "findName": "", - "findNoteUrl": "", - "findRemark": "", - "findUrl": "", - "findYear": "", - "httpHeader": "", - "httpUserAgent": "", - "isServer": true, - "loginUrl": "", - "parserType": "4", - "parserUrl": "", - "play": "", - "playHeader": "", - "playList": "//ul/li", - "playName": "//a/text()", - "playUrl": "//a/@href'https://app.movie' + result", - "recoUrl": "", - "searchActor": "", - "searchArea": "", - "searchDesc": "", - "searchDirector": "", - "searchImg": "tag.a.0@data-original", - "searchList": "//ul[@class='stui-vodlist clearfix']/li", - "searchName": "tag.a.0@title", - "searchNoteUrl": "tag.a.0@hrefresult.replace('detail','play')", - "searchRemark": "", - "searchUrl": "https://app.movie/index.php/vod/search.html?wd=searchKey&submit=", - "searchYear": "", - "serialNumber": 0, - "sortName": "", - "sortNameList": "", - "sortUrlList": "//div[@class='content']/section", - "sourceGroup": "aa", - "sourceName": "App影视", - "sourceType": "", - "sourceUrl": "https://app.movie", - "weight": 0 - }, - { - "detailActor": "", - "detailArea": "", - "detailDesc": " class.module-info-introduction-content@tag.p@text", - "detailDirector": "", - "detailPoster": "", - "detailRemark": "", - "detailYear": "", - "enable": false, - "enableFind": false, - "exclude": "m3u8&next=https://www.", - "findActor": "", - "findArea": "", - "findDesc": "", - "findDirector": "", - "findImg": "", - "findList": "", - "findName": "", - "findNoteUrl": "", - "findRemark": "", - "findUrl": "", - "findYear": "", - "httpHeader": "", - "httpUserAgent": "", - "isServer": true, - "loginUrl": "", - "parserType": "4", - "parserUrl": "", - "play": "", - "playHeader": "", - "playList": "//div/a", - "playName": "tag.a.0@text", - "playUrl": "tag.a.0@href'https://www.3ayy.com' + result", - "recoUrl": "", - "searchActor": "", - "searchArea": "", - "searchDesc": "", - "searchDirector": "", - "searchImg": "tag.img.0@data-original", - "searchList": "class.module-card-item module-item", - "searchName": "tag.img.0@alt", - "searchNoteUrl": "tag.a.0@href", - "searchRemark": "", - "searchUrl": "https://www.3ayy.com/vod--search/searchKey-------------.html", - "searchYear": "", - "serialNumber": 0, - "sortName": "tag.span.0@text", - "sortNameList": "id.y-playList@tag.div", - "sortUrlList": "//div[@class='module-play-list']", - "sourceGroup": "aa", - "sourceName": "星辰影视", - "sourceType": "", - "sourceUrl": "https://www.3ayy.com/", - "weight": 0 - }, - { - "detailActor": "", - "detailArea": "", - "detailDesc": "", - "detailDirector": "", - "detailPoster": "", - "detailRemark": "", - "detailYear": "", - "enable": false, - "enableFind": false, - "exclude": "", - "findActor": "", - "findArea": "", - "findDesc": "", - "findDirector": "", - "findImg": "", - "findList": "", - "findName": "", - "findNoteUrl": "", - "findRemark": "", - "findUrl": "", - "findYear": "", - "httpHeader": "", - "httpUserAgent": "", - "isServer": true, - "loginUrl": "", - "parserType": "4", - "parserUrl": "", - "play": "", - "playHeader": "", - "playList": "tag.ul@tag.li", - "playName": "//a/text()", - "playUrl": "//a/@href'http://www.31kan.vip' + result", - "recoUrl": "", - "searchActor": "", - "searchArea": "", - "searchDesc": "", - "searchDirector": "", - "searchImg": "tag.a.0@data-original", - "searchList": "id.searchList@tag.li", - "searchName": "tag.h4@tag.a@text", - "searchNoteUrl": "tag.h4@tag.a@href", - "searchRemark": "", - "searchUrl": "http://www.31kan.vip/vodsearch/-------------.html?wd=searchKey&submit=", - "searchYear": "", - "serialNumber": 0, - "sortName": "//a/text()", - "sortNameList": "//ul[@class='nav nav-tabs active']/li", - "sortUrlList": "//div[@class='tab-content myui-panel_bd']/div", - "sourceGroup": "aa", - "sourceName": "看看影视", - "sourceType": "", - "sourceUrl": "http://www.31kan.vip", - "weight": 0 - }, - { - "detailActor": "", - "detailArea": "", - "detailDesc": "", - "detailDirector": "", - "detailPoster": "", - "detailRemark": "", - "detailYear": "", - "enable": false, - "enableFind": false, - "exclude": "", - "findActor": "", - "findArea": "", - "findDesc": "tag.td.4@text", - "findDirector": "", - "findImg": "tag.img.0@src", - "findList": "//table[@width='388']", - "findName": "tag.img.0@alt", - "findNoteUrl": "tag.a.0@href", - "findRemark": "", - "findUrl": "最近更新::https://www.dygang.cc/ys/index_searchPage^.htm|char=gb2312\n国剧::https://www.dygang.cc/dsj/index_searchPage^.htm|char=gb2312\n经典高清::https://www.dygang.cc/bd/index_searchPage^.htm|char=gb2312\n国配电影::https://www.dygang.cc/gy/index_searchPage^.htm|char=gb2312\n经典港片::https://www.dygang.cc/gp/index_searchPage^.htm|char=gb2312\n日韩剧::https://www.dygang.cc/dsj1/index_searchPage^.htm|char=gb2312\n美剧::https://www.dygang.cc/yx/index_searchPage^.htm|char=gb2312\n综艺::https://www.dygang.cc/zy/index_searchPage^.htm|char=gb2312\n动漫::https://www.dygang.cc/dmq/index_searchPage^.htm|char=gb2312\n纪录片::https://www.dygang.cc/jilupian/index_searchPage^.htm|char=gb2312\n高清原盘::https://www.dygang.cc/1080p/index_searchPage^.htm|char=gb2312\n4K高清区::https://www.dygang.cc/4K/index_searchPage^.htm|char=gb2312", - "findYear": "tag.td.2@text", - "httpHeader": " {\"User-Agent\":\"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36\"}", - "httpUserAgent": "", - "isServer": true, - "loginUrl": "", - "parserType": "5", - "parserUrl": "", - "play": "", - "playHeader": "", - "playList": "//a[contains(@href,'magnet')]", - "playName": "//text()", - "playUrl": "//@href", - "recoUrl": "", - "searchActor": "", - "searchArea": "", - "searchDesc": "", - "searchDirector": "", - "searchImg": "", - "searchList": "", - "searchName": "", - "searchNoteUrl": "", - "searchRemark": "", - "searchUrl": "", - "searchYear": "", - "serialNumber": 0, - "sortName": "", - "sortNameList": "", - "sortUrlList": "", - "sourceGroup": "aa", - "sourceName": "66影视", - "sourceType": "", - "sourceUrl": "https://www.dygang.cc", - "weight": 0 - }, - { - "detailActor": "", - "detailArea": "", - "detailDesc": "", - "detailDirector": "", - "detailPoster": "", - "detailRemark": "", - "detailYear": "", - "enable": false, - "enableFind": false, - "exclude": ".otf,https://auete.com/js/player/", - "findActor": "", - "findArea": "", - "findDesc": "", - "findDirector": "", - "findImg": "tag.img@src", - "findList": "class.threadlist@tag.li", - "findName": "tag.h2@text", - "findNoteUrl": "tag.a@href", - "findRemark": "class.hdtag@text", - "findUrl": "电影::https://auete.pro/Movie/indexsearchPage+1.html\n电视剧::https://auete.pro/Tv/indexsearchPage+1.html\n综艺::https://auete.pro/Zy/indexsearchPage+1.html\n动漫::https://auete.pro/Dm/indexsearchPage+1.html", - "findYear": "class.hidden-sm@text", - "httpHeader": "", - "httpUserAgent": "", - "isServer": true, - "loginUrl": "", - "parserType": "2", - "parserUrl": "", - "play": "(()=>{\nvar pn=result.match(/;var pn=\"(\\S*)\";/)[1];\r\nvar url=result.match(/now=base64decode\\(\"(\\S*)\"\\);/)[1];\nif (pn.indexOf(\"m3u8hd\")!=-1){\nvar str=java.getResponse('https://auete.pro/api/189yun.php?url='+java.bd64(url)).body();\n var urll=str.match(/var url='(\\S*)';/)[1];\nreturn 'https://auete.pro/api/9yun.php?url='+java.bd64(url).replace('9yun','');\n}\nreturn java.bd64(url);\r\n})()", - "playHeader": "", - "playList": "li", - "playName": "a@text", - "playUrl": "a@href@js:'https://auete.pro' + result", - "recoUrl": "", - "searchActor": "", - "searchArea": "", - "searchDesc": "", - "searchDirector": "", - "searchImg": "", - "searchList": "class.list-unstyled@class.threadlist@tag.li", - "searchName": "class.text-danger@text", - "searchNoteUrl": "tag.a@href", - "searchRemark": "", - "searchUrl": "https://auete.pro/search.php?searchword=searchKey", - "searchYear": "", - "serialNumber": 0, - "sortName": "text##』(.*):##$1###", - "sortNameList": "id.player_list", - "sortUrlList": "id.player_list", - "sourceGroup": "aa", - "sourceName": "AUE影院", - "sourceType": "", - "sourceUrl": "https://auete.pro", - "weight": 0 - }, - { - "detailActor": "", - "detailArea": "", - "detailDesc": "", - "detailDirector": "", - "detailPoster": "", - "detailRemark": "", - "detailYear": "", - "enable": false, - "enableFind": false, - "exclude": "", - "findActor": "actors", - "findArea": "", - "findDesc": "brief", - "findDirector": "", - "findImg": "image", - "findList": "data.list[*]", - "findName": "title", - "findNoteUrl": "https://api.cntv.cn/NewVideo/getVideoStreamByAlbumId?serviceId=tvcctv&id={$.id}&sort=asc&n=61", - "findRemark": "", - "findUrl": "https://gitcode.net/2301_77105001/zxmovie/-/raw/master/ct.json", - "findYear": "", - "httpHeader": "", - "httpUserAgent": "", - "isServer": true, - "loginUrl": "", - "parserType": "2", - "parserUrl": "https://vdn.apps.cntv.cn/api/getHttpVideoInfo.do?pid={$.guid}", - "play": "hls_urlresult.replace('main','2000').replace('main','2000')", - "playHeader": "", - "playList": "data.list[*]", - "playName": "title", - "playUrl": "https://vdn.apps.cntv.cn/api/getHttpVideoInfo.do?pid={$.guid}", - "recoUrl": "", - "searchActor": "", - "searchArea": "", - "searchDesc": "", - "searchDirector": "", - "searchImg": "", - "searchList": "", - "searchName": "", - "searchNoteUrl": "", - "searchRemark": "", - "searchUrl": "", - "searchYear": "", - "serialNumber": 0, - "sortName": "", - "sortNameList": "", - "sortUrlList": "", - "sourceGroup": "aa", - "sourceName": "CCTV", - "sourceType": "", - "sourceUrl": "http://www.cctv.com", - "weight": 0 - }, - { - "detailActor": "", - "detailArea": "", - "detailDesc": "class.detail-sketch@text", - "detailDirector": "", - "detailPoster": "", - "detailRemark": "", - "detailYear": "", - "enable": false, - "enableFind": false, - "exclude": "", - "findActor": "", - "findArea": "", - "findDesc": "", - "findDirector": "", - "findImg": "", - "findList": "", - "findName": "", - "findNoteUrl": "", - "findRemark": "", - "findUrl": "", - "findYear": "", - "httpHeader": "{\"Referer\":\"https://6d.zzdacou.com/\"}", - "httpUserAgent": "", - "isServer": true, - "loginUrl": "", - "parserType": "4", - "parserUrl": "", - "play": "", - "playHeader": "", - "playList": "tag.ul@tag.li", - "playName": "tag.a.0@text", - "playUrl": "tag.a.0@href'https://6d.zzdacou.com' + result", - "recoUrl": "", - "searchActor": "", - "searchArea": "", - "searchDesc": "", - "searchDirector": "", - "searchImg": "tag.a.0@data-original", - "searchList": "class.stui-vodlist__media col-pd clearfix@tag.li", - "searchName": "tag.a.0@title", - "searchNoteUrl": "tag.a.0@href", - "searchRemark": "", - "searchUrl": "https://6d.zzdacou.com/?c=search@cl=searchKey", - "searchYear": "", - "serialNumber": 0, - "sortName": "tag.a.0@text", - "sortNameList": "class.nav nav-tabs pull-right@tag.li", - "sortUrlList": "class.stui-content__playlist clearfix@tag.ul", - "sourceGroup": "aa", - "sourceName": "六度", - "sourceType": "", - "sourceUrl": "https://6d.zzdacou.com/", - "weight": 0 - }, - { - "detailActor": "", - "detailArea": "", - "detailDesc": "", - "detailDirector": "", - "detailPoster": "", - "detailRemark": "", - "detailYear": "", - "enable": false, - "enableFind": false, - "exclude": "url=http,http://v.gqyy8.com:7788/f/dpcomp.php?vid", - "findActor": "", - "findArea": "", - "findDesc": "", - "findDirector": "", - "findImg": "", - "findList": "", - "findName": "", - "findNoteUrl": "", - "findRemark": "", - "findUrl": "", - "findYear": "", - "httpHeader": "{\n\"Referer\":\"http://www.100fyy1.com/search.php\"\n}", - "httpUserAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.93 Safari/537.36", - "isServer": true, - "loginUrl": "", - "parserType": "4", - "parserUrl": "", - "play": "", - "playHeader": "", - "playList": "//div[@id='stab_1_71']/ul/li", - "playName": "//a/text()", - "playUrl": "//a/@href@js:'http://www.100fyy1.com' + result", - "recoUrl": "", - "searchActor": "", - "searchArea": "", - "searchDesc": "", - "searchDirector": "", - "searchImg": "thumb", - "searchList": "[*]", - "searchName": "title", - "searchNoteUrl": "url@js:'http://www.100fyy1.com' + result", - "searchRemark": "", - "searchUrl": "http://1_116_207_86_s.jiziyy.com:8856/ssszz.php?top=10&q=searchKey&dect=0", - "searchYear": "time", - "serialNumber": 0, - "sortName": "", - "sortNameList": "", - "sortUrlList": "", - "sourceGroup": "aa", - "sourceName": "100TV", - "sourceType": "", - "sourceUrl": "http://www.100fyy1.com/", - "weight": 0 - }, - { - "detailActor": "//meta[@name='description']@content##地区:(.*)年份:##$1###", - "detailArea": "", - "detailDesc": "//div[@class='ct-l']", - "detailDirector": "", - "detailPoster": "", - "detailRemark": "", - "detailYear": "", - "enable": false, - "enableFind": false, - "exclude": "", - "findActor": "", - "findArea": "", - "findDesc": "", - "findDirector": "", - "findImg": "", - "findList": "", - "findName": "", - "findNoteUrl": "", - "findRemark": "", - "findUrl": "", - "findYear": "", - "httpHeader": "", - "httpUserAgent": "", - "isServer": true, - "loginUrl": "", - "parserType": "5", - "parserUrl": "", - "play": "", - "playHeader": "", - "playList": "tag.table@tag.td", - "playName": "tag.a@text", - "playUrl": "tag.a@href", - "recoUrl": "", - "searchActor": "", - "searchArea": "", - "searchDesc": "", - "searchDirector": "", - "searchImg": "tag.a@tag.img@data-original", - "searchList": "class.index-area@tag.li", - "searchName": "tag.a@title", - "searchNoteUrl": "tag.a@href", - "searchRemark": "tag.a@tag.p.4@text", - "searchUrl": "https://www.dyg123.net/e/search/index.php@keyboard=searchKey&show=title", - "searchYear": "", - "serialNumber": 0, - "sortName": "", - "sortNameList": "", - "sortUrlList": "", - "sourceGroup": "aa", - "sourceName": "电影港", - "sourceType": "", - "sourceUrl": "https://www.dyg123.net", - "weight": 0 - }, - { - "detailActor": "", - "detailArea": "", - "detailDesc": "//div[@class='context']", - "detailDirector": "", - "detailPoster": "", - "detailRemark": "", - "detailYear": "", - "enable": false, - "enableFind": false, - "exclude": "", - "findActor": "", - "findArea": "", - "findDesc": "", - "findDirector": "", - "findImg": "tag.img.0@src", - "findList": "//ul[@id='post_container']/li", - "findName": "tag.h2@tag.a.0@text", - "findNoteUrl": "tag.a.0@href", - "findRemark": "", - "findUrl": "推荐::https://gaoqing.la/recommend/page/searchPage\n4K最高清::https://gaoqing.la/4k/page/searchPage\nBlueRay蓝光原盘::https://gaoqing.la/bluray/page/searchPage\n1080P超清::https://gaoqing.la/1080p/page/searchPage\n720P高清::https://gaoqing.la/720p/page/searchPage\nWEB-DL标清::https://gaoqing.la/webdl/page/searchPage", - "findYear": "", - "httpHeader": "", - "httpUserAgent": "", - "isServer": true, - "loginUrl": "", - "parserType": "5", - "parserUrl": "", - "play": "", - "playHeader": "", - "playList": "//a[contains(@href,'magnet')]", - "playName": "tag.a.0@text", - "playUrl": "tag.a.0@href", - "recoUrl": "", - "searchActor": "", - "searchArea": "", - "searchDesc": "", - "searchDirector": "", - "searchImg": "tag.img.0@src", - "searchList": "//ul[@id='post_container']/li", - "searchName": "tag.h2@tag.a.0@text", - "searchNoteUrl": "tag.a.0@href", - "searchRemark": "", - "searchUrl": "https://gaoqing.la/?s=searchKey", - "searchYear": "", - "serialNumber": 0, - "sortName": "", - "sortNameList": "", - "sortUrlList": "", - "sourceGroup": "aa", - "sourceName": "高清网", - "sourceType": "", - "sourceUrl": "https://gaoqing.la/", - "weight": 0 - }, - { - "detailActor": "", - "detailArea": "", - "detailDesc": "", - "detailDirector": "", - "detailPoster": "", - "detailRemark": "", - "detailYear": "", - "enable": false, - "enableFind": false, - "exclude": "", - "findActor": "", - "findArea": "", - "findDesc": "", - "findDirector": "", - "findImg": "", - "findList": "", - "findName": "", - "findNoteUrl": "", - "findRemark": "", - "findUrl": "", - "findYear": "", - "httpHeader": "", - "httpUserAgent": "", - "isServer": true, - "loginUrl": "", - "parserType": "5", - "parserUrl": "", - "play": "", - "playHeader": "", - "playList": "//div[@class='tinfo']", - "playName": "//a/p/text()", - "playUrl": "//a/@href", - "recoUrl": "", - "searchActor": "", - "searchArea": "", - "searchDesc": "", - "searchDirector": "", - "searchImg": "//div[@class='litpic']//img/@data-src", - "searchList": "//div[@class='item cl']", - "searchName": "//div/p/a/b//text()", - "searchNoteUrl": "//div[2]/a/@href", - "searchRemark": "", - "searchUrl": "https://www.jsr9.com/?s=searchKey", - "searchYear": "", - "serialNumber": 0, - "sortName": "", - "sortNameList": "", - "sortUrlList": "", - "sourceGroup": "aa", - "sourceName": "BT家园", - "sourceType": "", - "sourceUrl": "https://www.jsr9.com/", - "weight": 0 - }, - { - "detailActor": "", - "detailArea": "", - "detailDesc": "", - "detailDirector": "", - "detailPoster": "", - "detailRemark": "", - "detailYear": "", - "enable": false, - "enableFind": false, - "exclude": "", - "findActor": "", - "findArea": "", - "findDesc": "", - "findDirector": "", - "findImg": "", - "findList": "", - "findName": "", - "findNoteUrl": "", - "findRemark": "", - "findUrl": "", - "findYear": "", - "httpHeader": "{\"Referer\":\"https://www.bcys1.com\"}", - "httpUserAgent": "", - "isServer": true, - "loginUrl": "", - "parserType": "4", - "parserUrl": "", - "play": "", - "playHeader": "", - "playList": "tag.a", - "playName": "tag.a@title", - "playUrl": "tag.a@href'https://www.bcys1.com' + result", - "recoUrl": "", - "searchActor": "", - "searchArea": "", - "searchDesc": "", - "searchDirector": "", - "searchImg": "tag.img.0@data-original", - "searchList": "class.module-card-item module-item", - "searchName": "tag.img.0@alt", - "searchNoteUrl": "tag.a.0@href", - "searchRemark": "//div[@class='module-item-note']/text()", - "searchUrl": "https://www.bcys1.com/vodsearch/?wd=searchKey", - "searchYear": "", - "serialNumber": 0, - "sortName": "tag.span@text", - "sortNameList": "//div[@id='y-playList']/div", - "sortUrlList": "//div[@class='module-play-list']", - "sourceGroup": "aa", - "sourceName": "北川", - "sourceType": "", - "sourceUrl": "https://www.bcys1.com", - "weight": 0 - }, - { - "detailActor": "", - "detailArea": "", - "detailDesc": "class.movie_story3@text", - "detailDirector": "", - "detailPoster": "", - "detailRemark": "", - "detailYear": "", - "enable": false, - "enableFind": false, - "exclude": "", - "findActor": "", - "findArea": "", - "findDesc": "", - "findDirector": "", - "findImg": "", - "findList": "", - "findName": "", - "findNoteUrl": "", - "findRemark": "", - "findUrl": "", - "findYear": "", - "httpHeader": "", - "httpUserAgent": "", - "isServer": false, - "loginUrl": "", - "parserType": "5", - "parserUrl": "", - "play": "", - "playHeader": "", - "playList": "//ul[@class='down-list']/li", - "playName": "//div/span/a/text()", - "playUrl": "//div/span/a/@href", - "recoUrl": "", - "searchActor": "tag.li.1@text", - "searchArea": "tag.li.4@text", - "searchDesc": "", - "searchDirector": "", - "searchImg": "tag.a@tag.img@data-original", - "searchList": "class.movList4", - "searchName": "tag.a.1@text", - "searchNoteUrl": "tag.a.0@href", - "searchRemark": "tag.li.3@text", - "searchUrl": "https://www.xunleicang.in/vod-search-id-searchKey-p-1.html", - "searchYear": "tag.span@text", - "serialNumber": 0, - "sortName": "//a//text()", - "sortNameList": "//ul[@class='tab-header tab-info']/li", - "sortUrlList": "//div[@class='col-box col-infomation']/div/div/div/div", - "sourceGroup": "aa", - "sourceName": "迅雷仓", - "sourceType": "", - "sourceUrl": "https://www.xunleicang.in", - "weight": 0 - }, - { - "detailActor": "", - "detailArea": "", - "detailDesc": "content", - "detailDirector": "", - "detailPoster": "", - "detailRemark": "", - "detailYear": "", - "enable": false, - "enableFind": false, - "exclude": "", - "findActor": "", - "findArea": "", - "findDesc": "", - "findDirector": "", - "findImg": "", - "findList": "", - "findName": "", - "findNoteUrl": "", - "findRemark": "", - "findUrl": "", - "findYear": "", - "httpHeader": "", - "httpUserAgent": "", - "isServer": true, - "loginUrl": "", - "parserType": "5", - "parserUrl": "", - "play": "", - "playHeader": "", - "playList": "", - "playName": "", - "playUrl": "@T$.downloadUrl", - "recoUrl": "", - "searchActor": "", - "searchArea": "name##\\[(.*)\\]##$1###", - "searchDesc": "", - "searchDirector": "", - "searchImg": "", - "searchList": "rows[*]", - "searchName": "name##《(.*)》##$1###", - "searchNoteUrl": "http://m.dydytt.net:8080/adminapi/api/movieDetail.json?categoryId=9&movieDetailId={$.id}", - "searchRemark": "name##》(.*)##$1###", - "searchUrl": "http://m.dydytt.net:8080/adminapi/api/movieList.json?categoryId=0&page=1&searchContent=searchKey", - "searchYear": "name##(\\d{4})##$1###", - "serialNumber": 0, - "sortName": "", - "sortNameList": "", - "sortUrlList": "", - "sourceGroup": "aa", - "sourceName": "电影天堂", - "sourceType": "", - "sourceUrl": "http://m.dydytt.net", - "weight": 0 - }, - { - "detailActor": "class.line1@text##主演:(.*)导演:##$1###", - "detailArea": "class.data@text##地区:(.*)年份:##$1###", - "detailDesc": "class.stui-content__detail@tag.span.9@text", - "detailDirector": "class.data@text##导演:(.*)##", - "detailPoster": "", - "detailRemark": "class.info@tag.li.1@text##状态: ##@js:result.replace('清晰:','')", - "detailYear": "class.data@text##年份:(.*)##$1###", - "enable": false, - "enableFind": false, - "exclude": "", - "findActor": "", - "findArea": "", - "findDesc": "", - "findDirector": "tag.p@text", - "findImg": "tag.a.0@data-original", - "findList": "class.stui-vodlist@tag.li", - "findName": "tag.a@title", - "findNoteUrl": "tag.a.0@href", - "findRemark": "class.pic-text@text", - "findUrl": "电影::http://taoju.tv/list/1_searchPage.html\n电视剧::http://taoju.tv/list/2_searchPage.html\n动漫::http://taoju.tv/list/3_searchPage.html\n综艺::http://taoju.tv/list/4_searchPage.html\n", - "findYear": "class.score@text", - "httpHeader": "", - "httpUserAgent": "Mozilla/5.0 (Linux; U; Android 8.0.0; zh-cn; Mi Note 2 Build/OPR1.170623.032) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/61.0.3163.128 Mobile Safari/537.36 XiaoMi/MiuiBrowser/10.1.1", - "isServer": true, - "loginUrl": "", - "parserType": "4", - "parserUrl": "", - "play": "", - "playHeader": "", - "playList": "tag.li", - "playName": "tag.a@text", - "playUrl": "tag.a@href'http://taoju.tv' + result", - "recoUrl": "", - "searchActor": "class.details-info@tag.li.4@text##主演:##@js:result.replace('主持:','')", - "searchArea": "class.details-info@tag.li.7@text##国家/地区:##", - "searchDesc": "class.details-content-default@text##详细介绍:##", - "searchDirector": "class.details-info@tag.li.6@text##导演:##", - "searchImg": "tag.a.0@data-original", - "searchList": "class.container@class.box-main-content@class.details-info-min", - "searchName": "tag.a@title", - "searchNoteUrl": "tag.a.0@href", - "searchRemark": "class.details-info@tag.li.2@text##状态:##", - "searchUrl": "http://taoju.tv/search.php@searchword=serarchKey&verfify=vpnn", - "searchYear": "class.details-info@tag.li.10@text##([^-]+)##$1###@js:result.replace('首播时间:','').replace('年代:','').replace('上映时间:','')", - "serialNumber": 0, - "sortName": "tag.a@text", - "sortNameList": "class.nav-tabs@tag.li", - "sortUrlList": "class.stui-content__playlist@tag.ul", - "sourceGroup": "aa", - "sourceName": "奇优影视", - "sourceType": "", - "sourceUrl": "http://taoju.tv", - "weight": 0 - }, - { - "detailActor": "", - "detailArea": "", - "detailDesc": "", - "detailDirector": "", - "detailPoster": "", - "detailRemark": "", - "detailYear": "", - "enable": false, - "enableFind": false, - "exclude": "", - "findActor": "", - "findArea": "", - "findDesc": "", - "findDirector": "", - "findImg": "", - "findList": "", - "findName": "", - "findNoteUrl": "", - "findRemark": "", - "findUrl": "", - "findYear": "", - "httpHeader": "", - "httpUserAgent": "", - "isServer": true, - "loginUrl": "", - "parserType": "7", - "parserUrl": "", - "play": "", - "playHeader": "", - "playList": "", - "playName": "", - "playUrl": "", - "recoUrl": "", - "searchActor": "", - "searchArea": "", - "searchDesc": "", - "searchDirector": "", - "searchImg": "", - "searchList": "", - "searchName": "", - "searchNoteUrl": "", - "searchRemark": "", - "searchUrl": "https://collect.wolongzyw.com/api.php/provide/vod/at/xml/?ac=list", - "searchYear": "", - "serialNumber": 0, - "sortName": "", - "sortNameList": "", - "sortUrlList": "", - "sourceGroup": "aa", - "sourceName": "卧龙资源", - "sourceType": "", - "sourceUrl": "https://collect.wolongzyw.com/api.php/provide/vod/at/xml/", - "weight": 0 - } - ] -} \ No newline at end of file diff --git a/JN/CATJS/js/4kysxz.js b/JN/CATJS/js/4kysxz.js deleted file mode 100644 index fd80b2fa..00000000 --- a/JN/CATJS/js/4kysxz.js +++ /dev/null @@ -1,238 +0,0 @@ -/* -* @File : 4kysxz.js.js -* @Author : jade -* @Date : 2024/1/24 16:47 -* @Email : jadehh@1ive.com -* @Software : Samples -* @Desc : 4k高清网 (已失效) -*/ -import {_} from '../lib/cat.js'; -import {VodDetail, VodShort} from "../lib/vod.js" -import * as Utils from "../lib/utils.js"; -import {Spider} from "./spider.js"; - -class YSXZSpider extends Spider { - constructor() { - super(); - this.siteUrl = "https://4kysxz.top" - } - - getAppName() { - return `4K高清网` - } - - getName() { - return `🚄┃4K高清网┃🚄` - } - - getJSName() { - return "4kysxz" - } - - getType() { - return 3 - } - - async init(cfg) { - await super.init(cfg); - } - - async parseVodShortListFromDoc($) { - const cards = $('div.row.posts-wrapper >div > article > div.entry-media > div > a') - return _.map(cards, (n) => { - let id = n.attribs['href']; - let name = $($(n).find('img')[0]).attr('alt').replaceAll('', '').replaceAll('', '').split(' ')[0]; - let pic = $($(n).find('img')[0]).attr('data-src'); - return { - vod_id: id, vod_name: name, vod_pic: pic, vod_remarks: '', - }; - }); - } - - async parseVodDetailFromDoc($) { - let vodDetail = new VodDetail(); - let vodElement = $("[class=\"entry-content u-text-format u-clearfix\"]") - let text = ""; - for (const vodEle of vodElement) { - text = text + $(vodEle).text().replaceAll(":", ":") + "\n" - } - vodDetail.vod_name = $($("[class=\"article-title\"]")).text() - vodDetail.vod_pic = $($("[class=\"entry-content u-text-format u-clearfix\"]")).find("img")[0].attribs["src"] - vodDetail.vod_area = Utils.getStrByRegex(/上映地区(.*?)\n/, text).replaceAll(":", "") - vodDetail.vod_director = Utils.getStrByRegex(/导演(.*?)\n/, text).replaceAll(":", "") - vodDetail.vod_actor = Utils.getStrByRegex(/主演(.*?)\n/, text).replaceAll(":", "") - vodDetail.vod_content = Utils.getStrByRegex(/剧情简介(.*?)\n/, text).replaceAll(":", "").replaceAll("·", "") - let actors = _.map($('div.entry-content.u-text-format.u-clearfix > div:nth-child(10) > div > span > span'), (n) => { - return $(n).text().split(' ')[0]; - }); - vodDetail.vod_actor = actors.join('/'); - let directors = _.map($('div.entry-content.u-text-format.u-clearfix > div:nth-child(6) > div > span'), (n) => { - return $(n).text().split(' ')[0]; - }); - vodDetail.vod_director = directors.join('/'); - vodDetail.vod_name = $('div.site-content > section > div > header > h1').text().trim(); - let playUrlStr = ''; - let playFromStr = ''; - //高清直播 - const cards = $('div.entry-content.u-text-format.u-clearfix > custag > ul > li > a'); - if (cards.length > 0) { - let playUrls = _.map(cards, (n) => { - let playUrl = n.attribs['href']; - if (playUrl.indexOf('url=') > 0) { - playUrl = playUrl.split('url=')[1].split('&name')[0]; - } - return $(n).text() + '$' + playUrl; - }); - playUrlStr = playUrls.join('#'); - playFromStr = '高清直播'; - } - if (!this.catOpenStatus) { - //磁力链接 - const tbs = $('loginshow > table'); - let playFrom = ''; - let nameUrls = []; - for (let i = 0; i < tbs.length; i++) { - if (i % 2 == 0) { - playFrom = $(tbs[i]).find('tbody > tr >td').text().replaceAll('WEB', '磁力'); - } else if (i % 2 == 1) { - const tds = $(tbs[i]).find('tbody > tr >td'); - let nameUrl = ''; - for (let j = 0; j < tds.length; j++) { - if (j % 2 == 0) { - nameUrl = $(tds[j]).text().split('.')[0].split(' ')[0]; - } else if (j % 2 == 1) { - nameUrl = nameUrl + '$' + $(tds[j]).text().split('【')[0]; - nameUrls.push(nameUrl); - } - } - if (playFromStr.length > 0) { - playFromStr += '$$$'; - playUrlStr += '$$$'; - } - playFromStr += playFrom; - playUrlStr += nameUrls.join('#'); - } - } - } - vodDetail.vod_play_from = playFromStr - vodDetail.vod_play_url = playUrlStr - return vodDetail - } - - - async setClasses() { - this.classes = [] - this.classes.push(this.getTypeDic("首页", "/#")) - } - - async getFilter(typeElements) { - let value_list = [] - value_list.push({ - "n": "全部", "v": "全部", - }) - for (const typeElement of typeElements) { - value_list.push({ - "n": typeElement.attribs["title"], - "v": typeElement.attribs["href"].split("/").slice(-1)[0].split(".")[0], - }) - } - return [{"key": "1", "name": "类型", "value": value_list}] - } - - async setFilterObj() { - let $ = await this.getHtml() - let navElements = $("[class=\"navbar-item menu-item-has-children\"]") - let extent_list = [] - for (const navElement of navElements) { - let type_name = $($(navElement).find("a")[0]).text() - if (type_name.indexOf("影视") > -1) { - let extend_dic = {"key": "1", "name": type_name, "value": []} - let type_elements = $($(navElement).find("ul")).find("a") - for (const type_element of type_elements) { - extend_dic["value"].push({"n": $(type_element).text(), "v": type_element.attribs["href"]}) - } - extent_list.push(extend_dic) - } - } - this.filterObj["/#"] = extent_list - } - - async setCategory(tid, pg, filter, extend) { - let url; - if (extend["1"] === undefined) { - url = this.siteUrl + tid - } else { - if (extend["1"].indexOf("category") > -1) { - url = this.siteUrl + extend["1"].split(".")[0] + "_" + pg + ".html" - } else { - url = this.siteUrl + extend["1"] - } - } - let $ = await this.getHtml(url) - this.vodList = await this.parseVodShortListFromDoc($) - } - - async setHomeVod() { - let $ = await this.getHtml() - this.homeVodList = await this.parseVodShortListFromDoc($) - } - - async setDetail(id) { - const $ = await this.getHtml(id); - this.vodDetail = await this.parseVodDetailFromDoc($) - } - - async setSearch(wd, quick) { - let $ = await this.getHtml(this.siteUrl + '/search.php?q=' + wd) - this.vodList = await this.parseVodShortListFromDoc($) - } -} - -let spider = new YSXZSpider() - -async function init(cfg) { - await spider.init(cfg) -} - -async function home(filter) { - return await spider.home(filter) -} - -async function homeVod() { - return await spider.homeVod() -} - -async function category(tid, pg, filter, extend) { - return await spider.category(tid, pg, filter, extend) -} - -async function detail(id) { - return await spider.detail(id) -} - -async function play(flag, id, flags) { - return await spider.play(flag, id, flags) -} - -async function search(wd, quick) { - return await spider.search(wd, quick) -} - -async function proxy(segments, headers) { - return await spider.proxy(segments, headers) -} - -export function __jsEvalReturn() { - return { - init: init, - home: home, - homeVod: homeVod, - category: category, - detail: detail, - play: play, - search: search, - proxy: proxy - }; -} - -export {spider} \ No newline at end of file diff --git a/JN/CATJS/js/aiyingshi.js b/JN/CATJS/js/aiyingshi.js deleted file mode 100644 index b6a80cea..00000000 --- a/JN/CATJS/js/aiyingshi.js +++ /dev/null @@ -1,299 +0,0 @@ -/* - * @Author: samples jadehh@live.com - * @Date: 2023-12-14 11:03:04 - * @LastEditors: samples jadehh@live.com - * @LastEditTime: 2023-12-14 11:03:04 - * @FilePath: js/aiyingshi.js - * @Description: 爱影视爬虫类 - */ -import {_, load} from '../lib/cat.js'; -import {VodDetail, VodShort} from "../lib/vod.js" -import * as Utils from "../lib/utils.js"; -import {Spider} from "./spider.js"; - - -class AiYingShiSpider extends Spider { - constructor() { - super(); - this.siteUrl = 'https://aiyingshis.com'; - } - - getName() { - return "🚀‍┃爱影视┃🚀" - } - - getAppName() { - return "爱影视" - } - getJSName() { - return "aiyingshi" - } - - getType() { - return 3 - } - - async parseVodShortListFromDoc($) { - let items = $('.module-item'); - let vod_list = []; - for (const item of items) { - let vodShort = new VodShort() - let oneA = $(item).find('.module-item-cover .module-item-pic a').first(); - vodShort.vod_id = oneA.attr('href'); - vodShort.vod_name = oneA.attr('title'); - let pic = $(item).find('.module-item-cover .module-item-pic img').first().attr('data-src') - if (pic.indexOf("img.php?url=") > 0) { - pic = pic.split("img.php?url=")[1] - }else if (pic.indexOf("https:") === -1 && pic.indexOf("http:") === -1){ - pic = "https:" + pic - } - vodShort.vod_pic = pic - vodShort.vod_remarks = $(item).find('.module-item-text').first().text(); - if (vodShort.vod_name !== undefined){ - vod_list.push(vodShort) - } - - } - return vod_list - } - - async parseVodDetailFromDoc($) { - let vodDetail = new VodDetail() - vodDetail.vod_name = $('.page-title')[0].children[0].data - vodDetail.vod_pic = $($("[class=\"video-cover\"]")).find(".lazyload")[0].attribs["data-src"] - let video_info_list = $($(".video-info-aux")).text().replaceAll("\t","").split("\n") - let type_list = [] - for (const video_info of video_info_list){ - if (!_.isEmpty(video_info.replaceAll(" ","").replaceAll("/",""))){ - type_list.push(video_info.replaceAll(" ","").replaceAll("/","")) - } - } - vodDetail.type_name = type_list.slice(0,2).join("*") - let video_items = $("[class=\"video-info-items\"]") - vodDetail.vod_director = $(video_items[0]).find("a")[0].children[0].data - let vidoe_info_actor_list = $(video_items[1]).find("a") - let actor_list = [] - for (const vidoe_info_actor of vidoe_info_actor_list) { - actor_list.push(vidoe_info_actor.children[0].data) - } - vodDetail.vod_actor = actor_list.join(" * ") - vodDetail.vod_year = type_list[2] - vodDetail.vod_remarks = $($(video_items[3]).find(".video-info-item")).text() - vodDetail.vod_content = $($(video_items[5]).find(".video-info-item")).text() - vodDetail.vod_area = type_list[3] - vodDetail.vod_content = vodDetail.vod_content.replace("[收起部分]", "").replace("[展开全部]", "").replaceAll("\t","").replaceAll("\n","") - - let playElements = $($("[class=\"module-tab-content\"]")[0]).find("span") - let urlElements = $("[class=\"module-list module-player-list tab-list sort-list \"]") - let form_list = [] - for (const playerElement of playElements){ - form_list.push($(playerElement).text()) - } - let play_url_list = [] - for (const urlElement of urlElements){ - let playUrlElements = $($(urlElement).find("[class=\"sort-item\"]")).find("a") - let vodItems = [] - for (const playUrlElement of playUrlElements){ - let name = $(playUrlElement).text() - let url = playUrlElement.attribs["href"] - let play_url = name + "$" + url - vodItems.push(play_url) - } - play_url_list.push(vodItems.join("#")) - } - vodDetail.vod_play_from = form_list.join('$$$'); - vodDetail.vod_play_url = _.values(play_url_list).join('$$$'); - return vodDetail - } - - async parseVodShortListFromDocBySearch($) { - let items = $('.module-search-item'); - let vod_list = []; - for (const item of items) { - let vodShort = new VodShort() - vodShort.vod_id = $(item).find(".video-serial")[0].attribs.href; - vodShort.vod_name = $(item).find(".video-serial")[0].attribs.title; - vodShort.vod_pic = $(item).find(".module-item-pic > img")[0].attribs['data-src'] - vodShort.vod_remarks = $($(item).find(".video-serial")[0]).text(); - vod_list.push(vodShort); - } - return vod_list - } - - async setClasses() { - let con = await this.fetch(this.siteUrl, null, this.getHeader()); - if (!_.isEmpty(con)) { - const $ = load(con); - let elements = $($("[class=\"nav-menu-items\"]")[0]).find("li") - for (const element of elements.slice(0,6)) { - let type_name = $($(element).find("span")).text() - if (type_name !== "首页"){ - let type_id = $(element).find("a")[0].attribs["href"].split("/").slice(-1)[0].split(".")[0] - let type_dic = {"type_id": type_id, "type_name": type_name} - this.classes.push(type_dic) - } - } - } - } - - async getFilter($) { - let elements = $("[class=\"scroll-content\"]").slice(1) - let extend_list = [] - for (let i = 0; i < elements.length; i++) { - let extend_dic = {"key": (i + 1).toString(), "name": "", "value": []} - if (i < elements.length - 1) { - extend_dic["name"] = $($(elements[i]).find("a")[0]).text() - extend_dic["value"].push({"n": "全部", "v": "0"}) - for (const ele of $(elements[i]).find("a").slice(1)) { - if ($($(elements[i]).find("a")[0]).text() === "全部类型"){ - extend_dic["value"].push({"n": $(ele).text(), "v":ele.attribs["href"].split("/").slice(-1)[0].split(".")[0]}) - }else{ - extend_dic["value"].push({"n": $(ele).text(), "v":$(ele).text()}) - - } - } - extend_list.push(extend_dic) - } else { - extend_dic["name"] = $($(elements[i]).find("a")[0]).text() - extend_dic["value"] = [{"n": "全部", "v": "0"}, { - "n": $($(elements[i]).find("a")[1]).text(), - "v": "hits" - }, {"n": $($(elements[i]).find("a")[2]).text(), "v": "score"}] - - extend_list.push(extend_dic) - } - - } - return extend_list - } - - async setFilterObj() { - for (const type_dic of this.classes) { - let type_id = type_dic["type_id"] - if (type_id !== "/" && type_id !== "最近更新") { - let url = this.siteUrl + `/vodshow/id/${type_id}.html` - let html = await this.fetch(url, null, this.getHeader()) - if (html != null) { - let $ = load(html) - this.filterObj[type_id] = await this.getFilter($) - } - } - } - } - async setHomeVod() { - let con = await this.fetch(this.siteUrl, null, this.getHeader()); - if (!_.isEmpty(con)) { - const $ = load(con); - this.homeVodList = await this.parseVodShortListFromDoc($) - } - } - - getExtend(value,defaultvalue,key = ""){ - if (value !== undefined && value !== "0"){ - return key + value - }else{ - return defaultvalue - } - - } - - async getCateUrl(tid,pg,extend){ - tid = this.getExtend(extend["1"],tid) - let area = this.getExtend(extend["2"],"","/area/") - let lanuage = this.getExtend(extend["3"],"","/lang/") - let year = this.getExtend(extend["4"],"","/year/") - let letter = this.getExtend(extend["5"],"","/letter/") - let time = this.getExtend(extend['6'],"","/by/") - return this.siteUrl + `/vodshow${time}${area}/id/${tid}${lanuage}${letter}${year}/page/${pg}.html` - } - - async setCategory(tid, pg, filter, extend) { - let reqUrl = await this.getCateUrl(tid,pg,extend) - let html = await this.fetch(reqUrl, null, this.getHeader()) - if (!_.isEmpty(html)) { - let $ = load(html) - this.vodList = await this.parseVodShortListFromDoc($) - let total = Utils.getStrByRegex(/\$\("\.mac_total"\)\.text\('(\d+)'\)/, html) - this.limit = 72; - if (total.length > 0) { - this.total = parseInt(total) - } - if (this.total <= this.limit) { - this.count = 1 - } else { - this.count = Math.ceil(this.total / this.limit) - } - } - } - - async setDetail(id) { - let detailUrl = this.siteUrl + id; - let html = await this.fetch(detailUrl, null, this.getHeader()); - if (!_.isEmpty(html)) { - let $ = load(html) - this.vodDetail = await this.parseVodDetailFromDoc($) - } - } - - - async setPlay(flag, id, flags) { - let html = await this.fetch(this.siteUrl + id,null,this.getHeader()) - if (!_.isEmpty(html)){ - let player_str = Utils.getStrByRegex(/