From 352cba2fddecfac48a2e223c9b855a9969653665 Mon Sep 17 00:00:00 2001 From: savokiss Date: Fri, 9 Jun 2023 18:44:50 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20mp4kan=20=E7=BD=91=E9=A1=B5=E6=94=B9?= =?UTF-8?q?=E7=89=88=E9=97=AE=E9=A2=98=20(#12645)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/v2/domp4/detail.js | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/lib/v2/domp4/detail.js b/lib/v2/domp4/detail.js index 56ebfc58c..050adda6b 100644 --- a/lib/v2/domp4/detail.js +++ b/lib/v2/domp4/detail.js @@ -2,10 +2,36 @@ const cheerio = require('cheerio'); const got = require('@/utils/got'); const { baseUrl, decodeCipherText, composeMagnetUrl, getUrlType } = require('./utils'); +// 兼容没有 script 标签的情况,直接解析 dom +function getDomList($, detailUrl) { + const list = $('.down-list li') + .toArray() + .map((item) => { + item = $(item); + const title = item.find('a').attr('title'); + const downurl = item.find('a').attr('href'); + const urlType = getUrlType(downurl); + const enclosureUrl = urlType === 'magnet' ? composeMagnetUrl(downurl) : downurl; + return { + enclosure_url: enclosureUrl, + enclosure_length: '', + enclosure_type: 'application/x-bittorrent', + title, + link: detailUrl, + guid: `${title}-${urlType}`, + }; + }); + return list; +} + function getItemList($, detailUrl) { const encoded = $('.article script[type]') .text() .match(/return p}\('(.*)',(\d+),(\d+),'(.*)'.split\(/); + // 若 script 标签没有内容,直接解析 dom + if (!encoded) { + return getDomList($, detailUrl); + } const data = JSON.parse( decodeCipherText(encoded[1], encoded[2], encoded[3], encoded[4].split('|'), 0, {}) .match(/var down_urls=\\'(.*)\\'/)[1]