上传文件至「lib」
This commit is contained in:
+343
@@ -0,0 +1,343 @@
|
|||||||
|
# coding = utf-8
|
||||||
|
# !/usr/bin/python
|
||||||
|
|
||||||
|
"""
|
||||||
|
"""
|
||||||
|
|
||||||
|
from Crypto.Util.Padding import unpad
|
||||||
|
from Crypto.Util.Padding import pad
|
||||||
|
from urllib.parse import unquote
|
||||||
|
from Crypto.Cipher import ARC4
|
||||||
|
from urllib.parse import quote
|
||||||
|
from base.spider import Spider
|
||||||
|
from Crypto.Cipher import AES
|
||||||
|
from bs4 import BeautifulSoup
|
||||||
|
from base64 import b64decode
|
||||||
|
import urllib.request
|
||||||
|
import urllib.parse
|
||||||
|
import binascii
|
||||||
|
import requests
|
||||||
|
import base64
|
||||||
|
import json
|
||||||
|
import time
|
||||||
|
import sys
|
||||||
|
import re
|
||||||
|
import os
|
||||||
|
|
||||||
|
sys.path.append('..')
|
||||||
|
|
||||||
|
xurl = "https://app.whjzjx.cn"
|
||||||
|
|
||||||
|
headers = {
|
||||||
|
'User-Agent': 'Linux; Android 12; Pixel 3 XL) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.101 Mobile Safari/537.36'
|
||||||
|
}
|
||||||
|
|
||||||
|
headerf = {
|
||||||
|
"platform": "1",
|
||||||
|
"user_agent": "Mozilla/5.0 (Linux; Android 9; V1938T Build/PQ3A.190705.08211809; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/91.0.4472.114 Safari/537.36",
|
||||||
|
"content-type": "application/json; charset=utf-8"
|
||||||
|
}
|
||||||
|
|
||||||
|
times = int(time.time() * 1000)
|
||||||
|
|
||||||
|
data = {
|
||||||
|
"device": "2a50580e69d38388c94c93605241fb306",
|
||||||
|
"package_name": "com.jz.xydj",
|
||||||
|
"android_id": "ec1280db12795506",
|
||||||
|
"install_first_open": True,
|
||||||
|
"first_install_time": 1752505243345,
|
||||||
|
"last_update_time": 1752505243345,
|
||||||
|
"report_link_url": "",
|
||||||
|
"authorization": "",
|
||||||
|
"timestamp": times
|
||||||
|
}
|
||||||
|
|
||||||
|
plain_text = json.dumps(data, separators=(',', ':'), ensure_ascii=False)
|
||||||
|
|
||||||
|
key = "B@ecf920Od8A4df7"
|
||||||
|
key_bytes = key.encode('utf-8')
|
||||||
|
plain_bytes = plain_text.encode('utf-8')
|
||||||
|
cipher = AES.new(key_bytes, AES.MODE_ECB)
|
||||||
|
padded_data = pad(plain_bytes, AES.block_size)
|
||||||
|
ciphertext = cipher.encrypt(padded_data)
|
||||||
|
encrypted = base64.b64encode(ciphertext).decode('utf-8')
|
||||||
|
|
||||||
|
response = requests.post("https://u.shytkjgs.com/user/v3/account/login", headers=headerf, data=encrypted)
|
||||||
|
response_data = response.json()
|
||||||
|
Authorization = response_data['data']['token']
|
||||||
|
|
||||||
|
headerx = {
|
||||||
|
'authorization': Authorization,
|
||||||
|
'platform': '1',
|
||||||
|
'version_name': '3.8.3.1'
|
||||||
|
}
|
||||||
|
|
||||||
|
class Spider(Spider):
|
||||||
|
global xurl
|
||||||
|
global headerx
|
||||||
|
global headers
|
||||||
|
|
||||||
|
def getName(self):
|
||||||
|
return "首页"
|
||||||
|
|
||||||
|
def init(self, extend):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def isVideoFormat(self, url):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def manualVideoCheck(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def extract_middle_text(self, text, start_str, end_str, pl, start_index1: str = '', end_index2: str = ''):
|
||||||
|
if pl == 3:
|
||||||
|
plx = []
|
||||||
|
while True:
|
||||||
|
start_index = text.find(start_str)
|
||||||
|
if start_index == -1:
|
||||||
|
break
|
||||||
|
end_index = text.find(end_str, start_index + len(start_str))
|
||||||
|
if end_index == -1:
|
||||||
|
break
|
||||||
|
middle_text = text[start_index + len(start_str):end_index]
|
||||||
|
plx.append(middle_text)
|
||||||
|
text = text.replace(start_str + middle_text + end_str, '')
|
||||||
|
if len(plx) > 0:
|
||||||
|
purl = ''
|
||||||
|
for i in range(len(plx)):
|
||||||
|
matches = re.findall(start_index1, plx[i])
|
||||||
|
output = ""
|
||||||
|
for match in matches:
|
||||||
|
match3 = re.search(r'(?:^|[^0-9])(\d+)(?:[^0-9]|$)', match[1])
|
||||||
|
if match3:
|
||||||
|
number = match3.group(1)
|
||||||
|
else:
|
||||||
|
number = 0
|
||||||
|
if 'http' not in match[0]:
|
||||||
|
output += f"#{match[1]}${number}{xurl}{match[0]}"
|
||||||
|
else:
|
||||||
|
output += f"#{match[1]}${number}{match[0]}"
|
||||||
|
output = output[1:]
|
||||||
|
purl = purl + output + "$$$"
|
||||||
|
purl = purl[:-3]
|
||||||
|
return purl
|
||||||
|
else:
|
||||||
|
return ""
|
||||||
|
else:
|
||||||
|
start_index = text.find(start_str)
|
||||||
|
if start_index == -1:
|
||||||
|
return ""
|
||||||
|
end_index = text.find(end_str, start_index + len(start_str))
|
||||||
|
if end_index == -1:
|
||||||
|
return ""
|
||||||
|
|
||||||
|
if pl == 0:
|
||||||
|
middle_text = text[start_index + len(start_str):end_index]
|
||||||
|
return middle_text.replace("\\", "")
|
||||||
|
|
||||||
|
if pl == 1:
|
||||||
|
middle_text = text[start_index + len(start_str):end_index]
|
||||||
|
matches = re.findall(start_index1, middle_text)
|
||||||
|
if matches:
|
||||||
|
jg = ' '.join(matches)
|
||||||
|
return jg
|
||||||
|
|
||||||
|
if pl == 2:
|
||||||
|
middle_text = text[start_index + len(start_str):end_index]
|
||||||
|
matches = re.findall(start_index1, middle_text)
|
||||||
|
if matches:
|
||||||
|
new_list = [f'{item}' for item in matches]
|
||||||
|
jg = '$$$'.join(new_list)
|
||||||
|
return jg
|
||||||
|
|
||||||
|
def homeContent(self, filter):
|
||||||
|
result = {}
|
||||||
|
result = {"class": [{"type_id": "1", "type_name": "剧场"},
|
||||||
|
{"type_id": "3", "type_name": "新剧"},
|
||||||
|
{"type_id": "2", "type_name": "热播"},
|
||||||
|
{"type_id": "7", "type_name": "星选"},
|
||||||
|
{"type_id": "5", "type_name": "阳光"}],
|
||||||
|
}
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
||||||
|
def homeVideoContent(self):
|
||||||
|
videos = []
|
||||||
|
|
||||||
|
url= f'{xurl}/v1/theater/home_page?theater_class_id=1&class2_id=4&page_num=1&page_size=24'
|
||||||
|
detail = requests.get(url=url, headers=headerx)
|
||||||
|
detail.encoding = "utf-8"
|
||||||
|
if detail.status_code == 200:
|
||||||
|
data = detail.json()
|
||||||
|
|
||||||
|
for vod in data['data']['list']:
|
||||||
|
|
||||||
|
name = vod['theater']['title']
|
||||||
|
|
||||||
|
id = vod['theater']['id']
|
||||||
|
|
||||||
|
pic = vod['theater']['cover_url']
|
||||||
|
|
||||||
|
remark = vod['theater']['play_amount_str']
|
||||||
|
|
||||||
|
video = {
|
||||||
|
"vod_id": id,
|
||||||
|
"vod_name": name,
|
||||||
|
"vod_pic": pic,
|
||||||
|
"vod_remarks": remark
|
||||||
|
}
|
||||||
|
videos.append(video)
|
||||||
|
|
||||||
|
result = {'list': videos}
|
||||||
|
return result
|
||||||
|
|
||||||
|
def categoryContent(self, cid, pg, filter, ext):
|
||||||
|
result = {}
|
||||||
|
videos = []
|
||||||
|
|
||||||
|
url = f'{xurl}/v1/theater/home_page?theater_class_id={cid}&page_num={pg}&page_size=24'
|
||||||
|
detail = requests.get(url=url,headers=headerx)
|
||||||
|
detail.encoding = "utf-8"
|
||||||
|
if detail.status_code == 200:
|
||||||
|
data = detail.json()
|
||||||
|
|
||||||
|
for vod in data['data']['list']:
|
||||||
|
|
||||||
|
name = vod['theater']['title']
|
||||||
|
|
||||||
|
id = vod['theater']['id']
|
||||||
|
|
||||||
|
pic = vod['theater']['cover_url']
|
||||||
|
|
||||||
|
remark = vod['theater']['theme']
|
||||||
|
|
||||||
|
video = {
|
||||||
|
"vod_id": id,
|
||||||
|
"vod_name": name,
|
||||||
|
"vod_pic": pic,
|
||||||
|
"vod_remarks": remark
|
||||||
|
}
|
||||||
|
videos.append(video)
|
||||||
|
|
||||||
|
result = {'list': videos}
|
||||||
|
result['page'] = pg
|
||||||
|
result['pagecount'] = 9999
|
||||||
|
result['limit'] = 90
|
||||||
|
result['total'] = 999999
|
||||||
|
return result
|
||||||
|
|
||||||
|
def detailContent(self, ids):
|
||||||
|
did = ids[0]
|
||||||
|
result = {}
|
||||||
|
videos = []
|
||||||
|
xianlu = ''
|
||||||
|
bofang = ''
|
||||||
|
|
||||||
|
url = f'{xurl}/v2/theater_parent/detail?theater_parent_id={did}'
|
||||||
|
detail = requests.get(url=url, headers=headerx)
|
||||||
|
detail.encoding = "utf-8"
|
||||||
|
if detail.status_code == 200:
|
||||||
|
data = detail.json()
|
||||||
|
|
||||||
|
url = 'https://fs-im-kefu.7moor-fs1.com/ly/4d2c3f00-7d4c-11e5-af15-41bf63ae4ea0/1732707176882/jiduo.txt'
|
||||||
|
response = requests.get(url)
|
||||||
|
response.encoding = 'utf-8'
|
||||||
|
code = response.text
|
||||||
|
name = self.extract_middle_text(code, "s1='", "'", 0)
|
||||||
|
Jumps = self.extract_middle_text(code, "s2='", "'", 0)
|
||||||
|
|
||||||
|
content = '剧情:' + data['data']['introduction']
|
||||||
|
|
||||||
|
area = data['data']['desc_tags'][0]
|
||||||
|
|
||||||
|
remarks = data['data']['filing']
|
||||||
|
|
||||||
|
# 修复剧集只有一集的问题 - 检查theaters数据是否存在且不为空
|
||||||
|
if 'theaters' in data['data'] and data['data']['theaters']:
|
||||||
|
for sou in data['data']['theaters']:
|
||||||
|
id = sou['son_video_url']
|
||||||
|
name = sou['num']
|
||||||
|
bofang = bofang + str(name) + '$' + id + '#'
|
||||||
|
|
||||||
|
bofang = bofang[:-1] if bofang.endswith('#') else bofang
|
||||||
|
xianlu = '星芽'
|
||||||
|
else:
|
||||||
|
# 如果没有theaters数据,检查是否有单个视频URL
|
||||||
|
if 'video_url' in data['data'] and data['data']['video_url']:
|
||||||
|
bofang = '1$' + data['data']['video_url']
|
||||||
|
xianlu = '星芽'
|
||||||
|
else:
|
||||||
|
bofang = Jumps
|
||||||
|
xianlu = '1'
|
||||||
|
|
||||||
|
videos.append({
|
||||||
|
"vod_id": did,
|
||||||
|
"vod_content": content,
|
||||||
|
"vod_remarks": remarks,
|
||||||
|
"vod_area": area,
|
||||||
|
"vod_play_from": xianlu,
|
||||||
|
"vod_play_url": bofang
|
||||||
|
})
|
||||||
|
|
||||||
|
result['list'] = videos
|
||||||
|
return result
|
||||||
|
|
||||||
|
def playerContent(self, flag, id, vipFlags):
|
||||||
|
|
||||||
|
result = {}
|
||||||
|
result["parse"] = 0
|
||||||
|
result["playUrl"] = ''
|
||||||
|
result["url"] = id
|
||||||
|
result["header"] = headers
|
||||||
|
return result
|
||||||
|
|
||||||
|
def searchContentPage(self, key, quick, page):
|
||||||
|
result = {}
|
||||||
|
videos = []
|
||||||
|
|
||||||
|
payload = {
|
||||||
|
"text": key
|
||||||
|
}
|
||||||
|
|
||||||
|
url = f"{xurl}/v3/search"
|
||||||
|
detail = requests.post(url=url, headers=headerx, json=payload)
|
||||||
|
if detail.status_code == 200:
|
||||||
|
detail.encoding = "utf-8"
|
||||||
|
data = detail.json()
|
||||||
|
|
||||||
|
for vod in data['data']['theater']['search_data']:
|
||||||
|
|
||||||
|
name = vod['title']
|
||||||
|
|
||||||
|
id = vod['id']
|
||||||
|
|
||||||
|
pic = vod['cover_url']
|
||||||
|
|
||||||
|
remark = vod['score_str']
|
||||||
|
|
||||||
|
video = {
|
||||||
|
"vod_id": id,
|
||||||
|
"vod_name": name,
|
||||||
|
"vod_pic": pic,
|
||||||
|
"vod_remarks": remark
|
||||||
|
}
|
||||||
|
videos.append(video)
|
||||||
|
|
||||||
|
result['list'] = videos
|
||||||
|
result['page'] = page
|
||||||
|
result['pagecount'] = 9999
|
||||||
|
result['limit'] = 90
|
||||||
|
result['total'] = 999999
|
||||||
|
return result
|
||||||
|
|
||||||
|
def searchContent(self, key, quick, pg="1"):
|
||||||
|
return self.searchContentPage(key, quick, '1')
|
||||||
|
|
||||||
|
def localProxy(self, params):
|
||||||
|
if params['type'] == "m3u8":
|
||||||
|
return self.proxyM3u8(params)
|
||||||
|
elif params['type'] == "media":
|
||||||
|
return self.proxyMedia(params)
|
||||||
|
elif params['type'] == "ts":
|
||||||
|
return self.proxyTs(params)
|
||||||
|
return None
|
||||||
Binary file not shown.
Vendored
+1
@@ -0,0 +1 @@
|
|||||||
|
<html><head><title>Loading...</title></head><body><script type='text/javascript'>window.location.replace('https://gh-proxy.net/https://raw.githubusercontent.com/fantaiying7/EXT/refs/heads/main/drpy2.min.js?ch=1&js=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJKb2tlbiIsImV4cCI6MTc4MzQzMDMxNSwiaWF0IjoxNzgzNDIzMTE1LCJpc3MiOiJKb2tlbiIsImpzIjoxLCJqdGkiOiIzMnZ2cm52bDRzaGkwcTI3ZDg1YnZhMG8iLCJuYmYiOjE3ODM0MjMxMTUsInRzIjoxNzgzNDIzMTE1Nzk0NDcxfQ.0ImREzOR7JWnStWEfuR8gZzy6p3VeGAvHZQiqxpXSQ4&sid=98840e3e-79f5-11f1-ac52-7c989e67c67f');</script></body></html>
|
||||||
BIN
Binary file not shown.
+34
@@ -0,0 +1,34 @@
|
|||||||
|
var rule = {
|
||||||
|
title:'百忙无果',
|
||||||
|
host:'https://pianku.api.%6d%67%74%76.com',
|
||||||
|
homeUrl:'',
|
||||||
|
searchUrl:'https://mobileso.bz.%6d%67%74%76.com/msite/search/v2?q=**&pn=fypage&pc=10',
|
||||||
|
detailUrl:'https://pcweb.api.mgtv.com/episode/list?page=1&size=50&video_id=fyid',
|
||||||
|
searchable:2,
|
||||||
|
quickSearch:0,
|
||||||
|
filterable:1,
|
||||||
|
multi:1,
|
||||||
|
// 分类链接fypage参数支持1个()表达式
|
||||||
|
// https://www.mgtv.com/lib/3?lastp=list_index&kind=a1&year=all&chargeInfo=a1&sort=c2
|
||||||
|
url:'/rider/list/pcweb/v3?platform=pcweb&channelId=fyclass&pn=fypage&pc=80&hudong=1&_support=10000000&kind=a1&area=a1',
|
||||||
|
filter_url:'year={{fl.year or "all"}}&sort={{fl.sort or "all"}}&chargeInfo={{fl.chargeInfo or "all"}}',
|
||||||
|
headers:{
|
||||||
|
'User-Agent':'PC_UA'
|
||||||
|
},
|
||||||
|
timeout:5000,
|
||||||
|
class_name:'电视剧&电影&综艺&动漫&纪录片&教育&少儿',
|
||||||
|
class_url:'2&3&1&50&51&115&10',
|
||||||
|
filter:{'2': [{'key': 'chargeInfo', 'name': '付费类型', 'value': [{'n': '全部', 'v': 'all'}, {'n': '免费', 'v': 'b1'}, {'n': 'vip', 'v': 'b2'}, {'n': 'VIP用券', 'v': 'b3'}, {'n': '付费点播', 'v': 'b4'}]}, {'key': 'sort', 'name': '排序', 'value': [{'n': '最新', 'v': 'c1'}, {'n': '最热', 'v': 'c2'}, {'n': '知乎高分', 'v': 'c4'}]}, {'key': 'year', 'name': '年代', 'value': [{'n': '全部', 'v': 'all'}, {'n': '2023', 'v': '2023'}, {'n': '2022', 'v': '2022'}, {'n': '2021', 'v': '2021'}, {'n': '2020', 'v': '2020'}, {'n': '2019', 'v': '2019'}, {'n': '2018', 'v': '2018'}, {'n': '2017', 'v': '2017'}, {'n': '2016', 'v': '2016'}, {'n': '2015', 'v': '2015'}, {'n': '2014', 'v': '2014'}, {'n': '2013', 'v': '2013'}, {'n': '2012', 'v': '2012'}, {'n': '2011', 'v': '2011'}, {'n': '2010', 'v': '2010'}, {'n': '2009', 'v': '2009'}, {'n': '2008', 'v': '2008'}, {'n': '2007', 'v': '2007'}, {'n': '2006', 'v': '2006'}, {'n': '2005', 'v': '2005'}, {'n': '2004', 'v': '2004'}]}], '3': [{'key': 'chargeInfo', 'name': '付费类型', 'value': [{'n': '全部', 'v': 'all'}, {'n': '免费', 'v': 'b1'}, {'n': 'vip', 'v': 'b2'}, {'n': 'VIP用券', 'v': 'b3'}, {'n': '付费点播', 'v': 'b4'}]}, {'key': 'sort', 'name': '排序', 'value': [{'n': '最新', 'v': 'c1'}, {'n': '最热', 'v': 'c2'}, {'n': '知乎高分', 'v': 'c4'}]}, {'key': 'year', 'name': '年代', 'value': [{'n': '全部', 'v': 'all'}, {'n': '2023', 'v': '2023'}, {'n': '2022', 'v': '2022'}, {'n': '2021', 'v': '2021'}, {'n': '2020', 'v': '2020'}, {'n': '2019', 'v': '2019'}, {'n': '2018', 'v': '2018'}, {'n': '2017', 'v': '2017'}, {'n': '2016', 'v': '2016'}, {'n': '2015', 'v': '2015'}, {'n': '2014', 'v': '2014'}, {'n': '2013', 'v': '2013'}, {'n': '2012', 'v': '2012'}, {'n': '2011', 'v': '2011'}, {'n': '2010', 'v': '2010'}, {'n': '2009', 'v': '2009'}, {'n': '2008', 'v': '2008'}, {'n': '2007', 'v': '2007'}, {'n': '2006', 'v': '2006'}, {'n': '2005', 'v': '2005'}, {'n': '2004', 'v': '2004'}]}], '1': [{'key': 'chargeInfo', 'name': '付费类型', 'value': [{'n': '全部', 'v': 'all'}, {'n': '免费', 'v': 'b1'}, {'n': 'vip', 'v': 'b2'}, {'n': 'VIP用券', 'v': 'b3'}, {'n': '付费点播', 'v': 'b4'}]}, {'key': 'sort', 'name': '排序', 'value': [{'n': '最新', 'v': 'c1'}, {'n': '最热', 'v': 'c2'}, {'n': '知乎高分', 'v': 'c4'}]}, {'key': 'year', 'name': '年代', 'value': [{'n': '全部', 'v': 'all'}, {'n': '2023', 'v': '2023'}, {'n': '2022', 'v': '2022'}, {'n': '2021', 'v': '2021'}, {'n': '2020', 'v': '2020'}, {'n': '2019', 'v': '2019'}, {'n': '2018', 'v': '2018'}, {'n': '2017', 'v': '2017'}, {'n': '2016', 'v': '2016'}, {'n': '2015', 'v': '2015'}, {'n': '2014', 'v': '2014'}, {'n': '2013', 'v': '2013'}, {'n': '2012', 'v': '2012'}, {'n': '2011', 'v': '2011'}, {'n': '2010', 'v': '2010'}, {'n': '2009', 'v': '2009'}, {'n': '2008', 'v': '2008'}, {'n': '2007', 'v': '2007'}, {'n': '2006', 'v': '2006'}, {'n': '2005', 'v': '2005'}, {'n': '2004', 'v': '2004'}]}], '50': [{'key': 'chargeInfo', 'name': '付费类型', 'value': [{'n': '全部', 'v': 'all'}, {'n': '免费', 'v': 'b1'}, {'n': 'vip', 'v': 'b2'}, {'n': 'VIP用券', 'v': 'b3'}, {'n': '付费点播', 'v': 'b4'}]}, {'key': 'sort', 'name': '排序', 'value': [{'n': '最新', 'v': 'c1'}, {'n': '最热', 'v': 'c2'}, {'n': '知乎高分', 'v': 'c4'}]}, {'key': 'year', 'name': '年代', 'value': [{'n': '全部', 'v': 'all'}, {'n': '2023', 'v': '2023'}, {'n': '2022', 'v': '2022'}, {'n': '2021', 'v': '2021'}, {'n': '2020', 'v': '2020'}, {'n': '2019', 'v': '2019'}, {'n': '2018', 'v': '2018'}, {'n': '2017', 'v': '2017'}, {'n': '2016', 'v': '2016'}, {'n': '2015', 'v': '2015'}, {'n': '2014', 'v': '2014'}, {'n': '2013', 'v': '2013'}, {'n': '2012', 'v': '2012'}, {'n': '2011', 'v': '2011'}, {'n': '2010', 'v': '2010'}, {'n': '2009', 'v': '2009'}, {'n': '2008', 'v': '2008'}, {'n': '2007', 'v': '2007'}, {'n': '2006', 'v': '2006'}, {'n': '2005', 'v': '2005'}, {'n': '2004', 'v': '2004'}]}], '51': [{'key': 'chargeInfo', 'name': '付费类型', 'value': [{'n': '全部', 'v': 'all'}, {'n': '免费', 'v': 'b1'}, {'n': 'vip', 'v': 'b2'}, {'n': 'VIP用券', 'v': 'b3'}, {'n': '付费点播', 'v': 'b4'}]}, {'key': 'sort', 'name': '排序', 'value': [{'n': '最新', 'v': 'c1'}, {'n': '最热', 'v': 'c2'}, {'n': '知乎高分', 'v': 'c4'}]}, {'key': 'year', 'name': '年代', 'value': [{'n': '全部', 'v': 'all'}, {'n': '2023', 'v': '2023'}, {'n': '2022', 'v': '2022'}, {'n': '2021', 'v': '2021'}, {'n': '2020', 'v': '2020'}, {'n': '2019', 'v': '2019'}, {'n': '2018', 'v': '2018'}, {'n': '2017', 'v': '2017'}, {'n': '2016', 'v': '2016'}, {'n': '2015', 'v': '2015'}, {'n': '2014', 'v': '2014'}, {'n': '2013', 'v': '2013'}, {'n': '2012', 'v': '2012'}, {'n': '2011', 'v': '2011'}, {'n': '2010', 'v': '2010'}, {'n': '2009', 'v': '2009'}, {'n': '2008', 'v': '2008'}, {'n': '2007', 'v': '2007'}, {'n': '2006', 'v': '2006'}, {'n': '2005', 'v': '2005'}, {'n': '2004', 'v': '2004'}]}], '115': [{'key': 'chargeInfo', 'name': '付费类型', 'value': [{'n': '全部', 'v': 'all'}, {'n': '免费', 'v': 'b1'}, {'n': 'vip', 'v': 'b2'}, {'n': 'VIP用券', 'v': 'b3'}, {'n': '付费点播', 'v': 'b4'}]}, {'key': 'sort', 'name': '排序', 'value': [{'n': '最新', 'v': 'c1'}, {'n': '最热', 'v': 'c2'}, {'n': '知乎高分', 'v': 'c4'}]}, {'key': 'year', 'name': '年代', 'value': [{'n': '全部', 'v': 'all'}, {'n': '2023', 'v': '2023'}, {'n': '2022', 'v': '2022'}, {'n': '2021', 'v': '2021'}, {'n': '2020', 'v': '2020'}, {'n': '2019', 'v': '2019'}, {'n': '2018', 'v': '2018'}, {'n': '2017', 'v': '2017'}, {'n': '2016', 'v': '2016'}, {'n': '2015', 'v': '2015'}, {'n': '2014', 'v': '2014'}, {'n': '2013', 'v': '2013'}, {'n': '2012', 'v': '2012'}, {'n': '2011', 'v': '2011'}, {'n': '2010', 'v': '2010'}, {'n': '2009', 'v': '2009'}, {'n': '2008', 'v': '2008'}, {'n': '2007', 'v': '2007'}, {'n': '2006', 'v': '2006'}, {'n': '2005', 'v': '2005'}, {'n': '2004', 'v': '2004'}]}]},
|
||||||
|
limit:20,
|
||||||
|
play_parse:true,
|
||||||
|
// 手动调用解析请求json的url,此lazy不方便
|
||||||
|
// lazy:'js:print(input);fetch_params.headers["user-agent"]=MOBILE_UA;let html=request(input);let rurl=html.match(/window\\.open\\(\'(.*?)\',/)[1];rurl=urlDeal(rurl);input={parse:1,url:rurl};',
|
||||||
|
// 推荐:'.list_item;img&&alt;img&&src;a&&Text;a&&data-float',
|
||||||
|
一级:'json:data.hitDocs;title;img;updateInfo||rightCorner.text;playPartId',
|
||||||
|
// 一级:'json:data.hitDocs;title;img;updateInfo;playPartId',
|
||||||
|
二级:'',
|
||||||
|
二级:'js:log(input);',
|
||||||
|
二级:'js:fetch_params.headers.Referer="https://www.mgtv.com";fetch_params.headers["User-Agent"]=UA;pdfh=jsp.pdfh;pdfa=jsp.pdfa;pd=jsp.pd;VOD={};let d=[];let html=request(input);let json=JSON.parse(html);let host="https://www.mgtv.com";let ourl=json.data.list.length>0?json.data.list[0].url:json.data.series[0].url;if(!/^http/.test(ourl)){ourl=host+ourl}fetch_params.headers["User-Agent"]=MOBILE_UA;html=request(ourl);if(html.includes("window.location =")){print("开始获取ourl");ourl=pdfh(html,"meta[http-equiv=refresh]&&content").split("url=")[1];print("获取到ourl:"+ourl);html=request(ourl)}try{let details=pdfh(html,".m-details&&Html").replace(/h1>/,"h6>").replace(/div/g,"br");print(details);let actor="",director="",time="";if(/播出时间/.test(details)){actor=pdfh(html,"p:eq(5)&&Text").substr(0,25);director=pdfh(html,"p:eq(4)&&Text");time=pdfh(html,"p:eq(3)&&Text")}else{actor=pdfh(html,"p:eq(4)&&Text").substr(0,25);director=pdfh(html,"p:eq(3)&&Text");time="已完结"}let _img=pd(html,".video-img&&img&&src");let JJ=pdfh(html,".desc&&Text").split("简介:")[1];let _desc=time;VOD.vod_name=pdfh(html,".vt-txt&&Text");VOD.type_name=pdfh(html,"p:eq(0)&&Text").substr(0,6);VOD.vod_area=pdfh(html,"p:eq(1)&&Text");VOD.vod_actor=actor;VOD.vod_director=director;VOD.vod_remarks=_desc;VOD.vod_pic=_img;VOD.vod_content=JJ}catch(e){log("获取影片信息发生错误:"+e.message)}function getRjpg(imgUrl,xs){xs=xs||3;let picSize=/jpg_/.test(imgUrl)?imgUrl.split("jpg_")[1].split(".")[0]:false;let rjpg=false;if(picSize){let a=parseInt(picSize.split("x")[0])*xs;let b=parseInt(picSize.split("x")[1])*xs;rjpg=a+"x"+b+".jpg"}let img=/jpg_/.test(imgUrl)&&rjpg?imgUrl.replace(imgUrl.split("jpg_")[1],rjpg):imgUrl;return img}if(json.data.total===1&&json.data.list.length===1){let data=json.data.list[0];let url="https://www.mgtv.com"+data.url;d.push({title:data.t4,desc:data.t2,pic_url:getRjpg(data.img),url:url})}else if(json.data.list.length>1){for(let i=1;i<=json.data.total_page;i++){if(i>1){json=JSON.parse(fetch(input.replace("page=1","page="+i),{}))}json.data.list.forEach(function(data){let url="https://www.mgtv.com"+data.url;if(data.isIntact=="1"){d.push({title:data.t4,desc:data.t2,pic_url:getRjpg(data.img),url:url})}})}}else{print(input+"暂无片源")}VOD.vod_play_from="mgtv";VOD.vod_play_url=d.map(function(it){return it.title+"$"+it.url}).join("#");setResult(d);',
|
||||||
|
搜索:'',
|
||||||
|
搜索:"js:fetch_params.headers.Referer='https://www.mgtv.com';fetch_params.headers['User-Agent']=MOBILE_UA;let d=[];let html=request(input);let json=JSON.parse(html);json.data.contents.forEach(function(data){if(data.type&&data.type=='media'){let item=data.data[0];let desc=item.desc.join(',');let fyclass='';if(item.source==='imgo'){let img=item.img?item.img:'';try{fyclass=item.rpt.match(/idx=(.*?)&/)[1]+'$'}catch(e){fyclass=''}d.push({title:item.title.replace(/<B>|<\\/B>/g,''),img:img,content:'',desc:desc,url:fyclass+item.url.match(/.*\\/(.*?)\\.html/)[1]})}}});setResult(d);",
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user