|
| 1 | +var rule = { |
| 2 | + 类型: '影视',//影视|听书|漫画|小说 |
| 3 | + title: 'PTT[优]', |
| 4 | + host: 'https://ptt.red', |
| 5 | + homeUrl: '/zh-cn', |
| 6 | + url: '/zh-cn/p/fyclassfyfilter', |
| 7 | + searchUrl: '/zh-cn/q/**?page=fypage', |
| 8 | + searchable: 2, |
| 9 | + quickSearch: 0, |
| 10 | + filterable: 1, |
| 11 | + filter: 'H4sIAAAAAAAAAO2X32saQRDH/5d76JMQ74d3Z8C/pIRytD6UpimYtBCCYCIGY9qoIbWVSltIqia1UUkQf+TSf8bdPf+Luml0ZtcsBFqf9HH3M+vOznxnvNnRdG316Y72Kr6trWqk0iLv+1pI2/Bex/H6nbf+Nn5nuMG3M/VRus63xwstGbrfPauNyvv3u0+8RNx79vJFzJjyUbVMu02ZR+B8vkV7tzK34Py3c/LFl7nuTA3opx+00pgxcMGgUWO3R7KBDfyq9dANYXDxQ4v0qzMG4CPJdIaDkmxgask1bvE3yKw9IF8PIcjT9WOCPLypssIkyCvPV0wT7s7Vh34FEIpsqUIOakDgxSzbpukMEAgmqxVJbwAERXG3QFMlIFE4k2sy/wIIihzNfh72DxDSsd/05idCIJmx14J7OryW9S+I/xEFAt2112ClIkIWvoudoFeZkYdTN0YWvDionQbNa3TKEBJKetfDgY+qZrJ+TEKNsGFN9LId9xKxuw1ETZmamBoyNTDVZapjGpZpGFE9KlE9iqkrUxdTR6YOprZMbUwjMo1gKseK1x5KBT06Jv08pGK6FlPB9tv0+JecClpJ0VJrcsHmm8RWbN3b3OIXrIU0Yy59kota0QJ50UHMhe7JESpI3Pd4QUIehZ7JEQhAaIbcDVdZCjxBS70vmN7NueldLWqUkZlS0JV6d02l3l1DqXekHOF/n1eJoSwFw1yWwsKVgjWvUjBstahttagdtagdtXLdpXIXTrkR3MX/afAIOleskEbTBeSbNS9FBI+n3S7N5hGCfIwbvHDKRt/2flFEigGLt+plP148Vdv2/1I1y/riZAzRCeopYfa0Iazs/HfQyQFy1LOng+bc/Flwimdt9NmS9kl3D3V4+EF2UiGX3xECRQblAt09REg9zDrWskwWrEySfwAneSZu2xMAAA==', |
| 12 | + filter_url: '{% if fyclass !="1" %}{{fl.地区}}?page=fypage{% else %}{{fl.类型}}?page=fypage{{fl.地区|safe}}{% endif %}{{fl.年份|safe}}{{fl.排序|safe}}', |
| 13 | + filter_def: {}, |
| 14 | + headers: { |
| 15 | + 'User-Agent': 'MOBILE_UA', |
| 16 | + }, |
| 17 | + timeout: 5000, |
| 18 | + // class_parse: '.nav-tabs&&a;a&&Text;a&&href;(\\d+)', |
| 19 | + cate_exclude: '', |
| 20 | + play_parse: true, |
| 21 | + class_parse: async function () { |
| 22 | + let {input, pdfa, pdfh, pd} = this; |
| 23 | + let html = await request(input); |
| 24 | + let d = []; |
| 25 | + let data = pdfa(html, '.nav-tabs&&a'); |
| 26 | + data.forEach((it) => { |
| 27 | + d.push({ |
| 28 | + type_name: pdfh(it, 'a&&Text'), |
| 29 | + type_id: pd(it, 'a&&href').match(/(\d+)/)[1], |
| 30 | + }) |
| 31 | + }); |
| 32 | + return { |
| 33 | + class: d |
| 34 | + } |
| 35 | + }, |
| 36 | + lazy: async function () { |
| 37 | + let {input} = this; |
| 38 | + let html = await request(input); |
| 39 | + let sdata = pdfh(html, '.container-fluid&&script&&Html'); |
| 40 | + let json = JSON.parse(sdata); |
| 41 | + if (json.contentUrl) { |
| 42 | + return {parse: 0, url: json.contentUrl, js: ''}; |
| 43 | + } |
| 44 | + return input |
| 45 | + }, |
| 46 | + double: false, |
| 47 | + 推荐: async function () { |
| 48 | + let {input, pdfa, pdfh, pd} = this; |
| 49 | + let html = await request(input); |
| 50 | + let d = []; |
| 51 | + let data = pdfa(html, '#videos&&.card:not(:has(.badge-success:contains(广告)))'); |
| 52 | + data.forEach((it) => { |
| 53 | + d.push({ |
| 54 | + title: pdfh(it, 'a:eq(-1)&&Text'), |
| 55 | + pic_url: pd(it, 'img&&src'), |
| 56 | + desc: pdfh(it, '.badge-success&&Text'), |
| 57 | + url: pd(it, 'a:eq(-1)&&href'), |
| 58 | + }) |
| 59 | + }); |
| 60 | + return setResult(d) |
| 61 | + }, |
| 62 | + 一级: async function () { |
| 63 | + let {input, pdfa, pdfh, pd} = this; |
| 64 | + let html = await request(input); |
| 65 | + let d = []; |
| 66 | + let data = pdfa(html, '#videos&&.card:not(:has(.badge-success:contains(广告)))'); |
| 67 | + data.forEach((it) => { |
| 68 | + d.push({ |
| 69 | + title: pdfh(it, 'a:eq(-1)&&Text'), |
| 70 | + pic_url: pd(it, 'img&&src'), |
| 71 | + desc: pdfh(it, '.badge-success&&Text'), |
| 72 | + url: pd(it, 'a:eq(-1)&&href'), |
| 73 | + }) |
| 74 | + }); |
| 75 | + return setResult(d) |
| 76 | + }, |
| 77 | + 二级: async function () { |
| 78 | + let {input, pdfh, pd} = this; |
| 79 | + let html = await request(input); |
| 80 | + let data = html.split('node:')[1].split('},')[0] + '}'; |
| 81 | + data = data.trim(); |
| 82 | + let json = JSON.parse(data); |
| 83 | + let VOD = {}; |
| 84 | + VOD.vod_name = json.title; |
| 85 | + VOD.type_name = json.type; |
| 86 | + VOD.vod_id = input; |
| 87 | + VOD.vod_pic = urljoin(input, json.thumbnail); |
| 88 | + VOD.vod_year = json.year; |
| 89 | + VOD.vod_area = json._area; |
| 90 | + VOD.vod_remarks = json.note; |
| 91 | + VOD.vod_content = json.description; |
| 92 | + VOD.vod_director = json.director; |
| 93 | + VOD.vod_actor = json.actors; |
| 94 | + let v_tabs = pdfa(html, '.nav-tabs&&li'); |
| 95 | + let v_tab_urls = v_tabs.map(it => pd(it, 'a&&href', input)); |
| 96 | + v_tabs = v_tabs.map(it => pdfh(it, 'a&&title')); |
| 97 | + VOD.vod_play_from = v_tabs.join('$$$'); |
| 98 | + let lists = []; |
| 99 | + let list1 = pdfa(html, '.mb-2.fullwidth&&a').map(it => pdfh(it, 'a&&Text') + '$' + pd(it, 'a&&href', input)); |
| 100 | + // log(list1); |
| 101 | + lists.push(list1); |
| 102 | + // log(v_tab_urls); |
| 103 | + if (v_tab_urls.length > 1) { |
| 104 | + let reqUrls = v_tab_urls.slice(1).map(it => { |
| 105 | + return { |
| 106 | + url: it, |
| 107 | + options: { |
| 108 | + timeout: 5000, |
| 109 | + headers: rule.headers |
| 110 | + } |
| 111 | + } |
| 112 | + }); |
| 113 | + let htmls = await batchFetch(reqUrls); |
| 114 | + htmls.forEach((ht) => { |
| 115 | + if (ht) { |
| 116 | + let list0 = pdfa(ht, '.mb-2.fullwidth&&a').map(it => pdfh(it, 'a&&Text') + '$' + pd(it, 'a&&href', input)); |
| 117 | + lists.push(list0); |
| 118 | + } else { |
| 119 | + lists.push([]); |
| 120 | + } |
| 121 | + }); |
| 122 | + } |
| 123 | + let playUrls = lists.map(it => it.join('#')); |
| 124 | + VOD.vod_play_url = playUrls.join('$$$'); |
| 125 | + return VOD |
| 126 | + }, |
| 127 | + 搜索: async function () { |
| 128 | + let {input, pdfa, pdfh, pd} = this; |
| 129 | + let html = await request(input); |
| 130 | + let d = []; |
| 131 | + let data = pdfa(html, '#videos&&.card:not(:has(.badge-success:contains(广告)))'); |
| 132 | + data.forEach((it) => { |
| 133 | + d.push({ |
| 134 | + title: pdfh(it, 'a:eq(-1)&&Text'), |
| 135 | + pic_url: pd(it, 'img&&src'), |
| 136 | + desc: pdfh(it, '.badge-success&&Text'), |
| 137 | + url: pd(it, 'a:eq(-1)&&href'), |
| 138 | + }) |
| 139 | + }); |
| 140 | + return setResult(d) |
| 141 | + } |
| 142 | +} |
0 commit comments