更新py
This commit is contained in:
parent
51bb2e6d73
commit
96e85aefd8
@ -1 +1 @@
|
||||
3.9.49beta21
|
||||
3.9.49beta22
|
||||
@ -6,9 +6,6 @@
|
||||
# Date : 2024/1/11
|
||||
|
||||
import os
|
||||
import jpype
|
||||
from jpype.types import *
|
||||
|
||||
import sys
|
||||
|
||||
sys.path.append('..')
|
||||
@ -18,21 +15,38 @@ try:
|
||||
except ImportError:
|
||||
from t4.base.spider import BaseSpider
|
||||
|
||||
# 全局变量
|
||||
gParam = {
|
||||
# JVM已经启用过某个jar文件
|
||||
"JVM": {'xx.jar': False},
|
||||
}
|
||||
|
||||
|
||||
class Spider(BaseSpider): # 元类 默认的元类 type
|
||||
def _prepare_env(self):
|
||||
jar_path: str = ''
|
||||
jClass = None
|
||||
|
||||
def _prepare_env(self, jpype):
|
||||
global gParam
|
||||
if gParam['JVM'].get(self.jar_path):
|
||||
return
|
||||
try:
|
||||
jpype.startJVM(classpath=[self.jar_path], convertStrings=False)
|
||||
except:
|
||||
pass
|
||||
gParam['JVM'][self.jar_path] = True
|
||||
except Exception as e:
|
||||
self.log(f'jpype.startJVM发生了错误:{e}')
|
||||
|
||||
def init_jar(self, jar_path="./bdys.jar"):
|
||||
self.log(f'base_java_loader 初始化jar文件:{jar_path}')
|
||||
if not os.path.exists(jar_path):
|
||||
raise FileNotFoundError
|
||||
self.jar_path = jar_path
|
||||
self._prepare_env()
|
||||
self.jClass = jpype.JClass
|
||||
if self.ENV.lower() == 't4':
|
||||
import jpype
|
||||
self._prepare_env(jpype)
|
||||
self.jClass = jpype.JClass
|
||||
elif self.ENV.lower() == 't3':
|
||||
self.jClass = None
|
||||
|
||||
def init(self, extend=""):
|
||||
pass
|
||||
|
||||
@ -317,8 +317,32 @@ class Spider(BaseSpider): # 元类 默认的元类 type
|
||||
"Referer": "https://www.baidu.com/"
|
||||
}
|
||||
|
||||
def localProxy(self, param):
|
||||
return [200, "video/MP2T", action, ""]
|
||||
def localProxy(self, params):
|
||||
# http://192.168.31.49:5707/api/v1/vod/哔滴影视?proxy=1&do=py&type=1.m3u8
|
||||
print(params)
|
||||
content = """
|
||||
#EXTM3U
|
||||
#EXT-X-VERSION:3
|
||||
#EXT-X-ALLOW-CACHE:YES
|
||||
#EXT-X-MEDIA-SEQUENCE:170471784
|
||||
#EXT-X-TARGETDURATION:10
|
||||
#EXT-X-PROGRAM-DATE-TIME:2024-01-11T20:43:53+08:00
|
||||
#EXTINF:10.000, no desc
|
||||
http://gctxyc.liveplay.myqcloud.com/gc/gllj01_1_md-170471784.ts
|
||||
#EXT-X-PROGRAM-DATE-TIME:2024-01-11T20:44:03+08:00
|
||||
#EXTINF:10.000, no desc
|
||||
http://gctxyc.liveplay.myqcloud.com/gc/gllj01_1_md-170471785.ts
|
||||
#EXT-X-PROGRAM-DATE-TIME:2024-01-11T20:44:13+08:00
|
||||
#EXTINF:10.000, no desc
|
||||
http://gctxyc.liveplay.myqcloud.com/gc/gllj01_1_md-170471786.ts
|
||||
#EXT-X-PROGRAM-DATE-TIME:2024-01-11T20:44:23+08:00
|
||||
#EXTINF:10.000, no desc
|
||||
http://gctxyc.liveplay.myqcloud.com/gc/gllj01_1_md-170471787.ts
|
||||
""".strip()
|
||||
return [200, 'text/plain', content]
|
||||
# return [404, 'text/plain', 'Not Found']
|
||||
# return [200, "video/MP2T", content]
|
||||
# return [200, "video/MP2T", ""]
|
||||
|
||||
# -----------------------------------------------自定义函数-----------------------------------------------
|
||||
def eval_computer(self, text):
|
||||
|
||||
@ -675,8 +675,8 @@ class Spider(BaseSpider): # 元类 默认的元类 type
|
||||
"Referer": "https://tv.cctv.com/"
|
||||
}
|
||||
|
||||
def localProxy(self, param):
|
||||
return [200, "video/MP2T", action, ""]
|
||||
def localProxy(self, params):
|
||||
return [200, "video/MP2T", ""]
|
||||
|
||||
# -----------------------------------------------自定义函数-----------------------------------------------
|
||||
# 访问网页
|
||||
|
||||
@ -422,8 +422,8 @@ class Spider(BaseSpider): # 元类 默认的元类 type
|
||||
"Referer": "https://www.bttwo.net/"
|
||||
}
|
||||
|
||||
def localProxy(self, param):
|
||||
return [200, "video/MP2T", action, ""]
|
||||
def localProxy(self, params):
|
||||
return [200, "video/MP2T", ""]
|
||||
|
||||
# -----------------------------------------------自定义函数-----------------------------------------------
|
||||
def eval_computer(self, text):
|
||||
@ -497,6 +497,7 @@ class Spider(BaseSpider): # 元类 默认的元类 type
|
||||
|
||||
if __name__ == '__main__':
|
||||
from t4.core.loader import t4_spider_init
|
||||
|
||||
spider = Spider()
|
||||
t4_spider_init(spider)
|
||||
spider.init_api_ext_file() # 生成筛选对应的json文件
|
||||
|
||||
@ -190,7 +190,7 @@ class Spider(BaseSpider): # 元类 默认的元类 type
|
||||
ret = r.json()
|
||||
data = self.decode(ret['data'])
|
||||
# print(data)
|
||||
page_count = 24 # 默认赋值一页列表24条数据
|
||||
page_count = 12 # 默认赋值一页列表12条数据|这个值一定要写正确看他默认一页多少条
|
||||
|
||||
d = [{
|
||||
'vod_name': vod['movieName'],
|
||||
@ -219,7 +219,7 @@ class Spider(BaseSpider): # 元类 默认的元类 type
|
||||
r = self.fetch(url, headers=self.headers)
|
||||
ret = r.json()
|
||||
data = self.decode(ret['data'])
|
||||
print(data)
|
||||
# print(self.json2str(data))
|
||||
|
||||
vod = data['movie']
|
||||
playlist = data['playlist']
|
||||
@ -230,16 +230,10 @@ class Spider(BaseSpider): # 元类 默认的元类 type
|
||||
titles.append(title)
|
||||
if not plays.get(title):
|
||||
plays[title] = []
|
||||
# print(p)
|
||||
if p.get('tosId') and len(playlist) < 2:
|
||||
|
||||
if p.get('tosId'):
|
||||
purl = self.api + '/playurl/' + str(p['id']) + '?type=' + str(p.get('tosId') or '0')
|
||||
print(purl)
|
||||
r = self.fetch(purl, headers=self.headers)
|
||||
ret = r.json()
|
||||
data = self.decode(ret['data'])
|
||||
print(data)
|
||||
url = data['url']
|
||||
plays[title].append({'name': '至尊线路', 'url': url})
|
||||
plays[title].append({'name': '至尊线路', 'url': f'vip://{purl}'})
|
||||
|
||||
if p.get('url'):
|
||||
for p0 in p['url'].split(','):
|
||||
@ -300,7 +294,7 @@ class Spider(BaseSpider): # 元类 默认的元类 type
|
||||
r = self.fetch(url, headers=self.headers)
|
||||
ret = r.json()
|
||||
data = self.decode(ret['data'])
|
||||
print(data)
|
||||
# print(data)
|
||||
d = []
|
||||
for li in data['list']:
|
||||
d.append({
|
||||
@ -313,7 +307,7 @@ class Spider(BaseSpider): # 元类 默认的元类 type
|
||||
result = {
|
||||
'list': d
|
||||
}
|
||||
print(result)
|
||||
# print(result)
|
||||
return result
|
||||
|
||||
def playerContent(self, flag, id, vipFlags):
|
||||
@ -324,20 +318,35 @@ class Spider(BaseSpider): # 元类 默认的元类 type
|
||||
@param vipFlags: vip标识
|
||||
@return:
|
||||
"""
|
||||
url = id
|
||||
url = str(id)
|
||||
# 至尊线路
|
||||
if url.startswith('vip://'):
|
||||
purl = url.split('vip://')[1]
|
||||
# print(purl)
|
||||
r = self.fetch(purl, headers=self.headers)
|
||||
ret = r.json()
|
||||
data = self.decode(ret['data'])
|
||||
# print(data)
|
||||
url = data.get('url') or ''
|
||||
if not url:
|
||||
self.log(data)
|
||||
|
||||
headers = {
|
||||
'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1'
|
||||
}
|
||||
if 'm3u8' not in url:
|
||||
parse = 0
|
||||
else:
|
||||
parse = 1
|
||||
parse = 0
|
||||
if 'm3u8' in url:
|
||||
proxyUrl = self.getProxyUrl()
|
||||
if proxyUrl:
|
||||
url = proxyUrl + '&url=' + url + '&name=1.m3u8'
|
||||
result = {
|
||||
'parse': parse, # 1=嗅探,0=播放
|
||||
'playUrl': '', # 解析链接
|
||||
'url': url, # 直链或待嗅探地址
|
||||
'header': headers, # 播放UA
|
||||
}
|
||||
|
||||
# print(result)
|
||||
return result
|
||||
|
||||
config = {
|
||||
@ -349,8 +358,27 @@ class Spider(BaseSpider): # 元类 默认的元类 type
|
||||
"token": ""
|
||||
}
|
||||
|
||||
def localProxy(self, param):
|
||||
return [200, "video/MP2T", action, ""]
|
||||
def localProxy(self, params):
|
||||
# print(params)
|
||||
url = params.get('url')
|
||||
name = params.get('name') or 'm3u8'
|
||||
burl = 'https://www.bdys03.com'
|
||||
new_url = url.replace("www.bde4.cc", "www.bdys03.com")
|
||||
self.log(f'原始url:{url},替换域名后url:{new_url}')
|
||||
headers = {
|
||||
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3947.100 Safari/537.36",
|
||||
"Referer": burl,
|
||||
"Origin": burl,
|
||||
}
|
||||
r = self.fetch(new_url, headers=headers)
|
||||
pdata = self.process_data(r.content).decode('utf-8')
|
||||
# pdata = re.sub(r'(.*?ts)', r'https://www.bdys03.com/\1', pdata)
|
||||
pdata = self.replaceAll(pdata, r'(.*?ts)', r'https://www.bdys03.com/\1')
|
||||
content = pdata.strip()
|
||||
|
||||
media_type = 'text/plain' if 'txt' in name else 'video/MP2T'
|
||||
|
||||
return [200, media_type, content]
|
||||
|
||||
# -----------------------------------------------自定义函数-----------------------------------------------
|
||||
def decode(self, text):
|
||||
@ -358,12 +386,23 @@ class Spider(BaseSpider): # 元类 默认的元类 type
|
||||
res = self.class1.dec(bt)
|
||||
return self.str2json(str(res))
|
||||
|
||||
def process_data(self, req_bytes):
|
||||
"""
|
||||
个性化方法:跳过req返回的content 3354之前的字节并进行gzip解压
|
||||
@param req_bytes:
|
||||
@return:
|
||||
"""
|
||||
stream = self.skip_bytes(req_bytes, 3354)
|
||||
decrypted_data = self.gzipCompress(stream)
|
||||
return decrypted_data
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
from t4.core.loader import t4_spider_init
|
||||
|
||||
spider = Spider()
|
||||
t4_spider_init(spider)
|
||||
print(spider.ENV)
|
||||
# spider.init_api_ext_file() # 生成筛选对应的json文件
|
||||
# spider.log({'key': 'value'})
|
||||
# spider.log('====文本内容====')
|
||||
@ -371,4 +410,8 @@ if __name__ == '__main__':
|
||||
# print(spider.homeVideoContent())
|
||||
# print(spider.categoryContent('0', 1, False, None))
|
||||
# print(spider.detailContent([24420]))
|
||||
spider.searchContent('斗罗大陆')
|
||||
# spider.searchContent('斗罗大陆')
|
||||
# print(spider.playerContent('至尊线路', 'vip://https://www.bdys03.com/api/v1/playurl/174296?type=1', None))
|
||||
print(spider.playerContent('需要解析',
|
||||
'https://www.bde4.cc/10E79044B82A84F70BE1308FFA5232E4DC3D0CA9EC2BF6B1D4EF56B2CE5B67CF238965CCAE17F859665B7E166720986D.m3u8',
|
||||
None))
|
||||
|
||||
@ -237,8 +237,8 @@ class Spider(BaseSpider): # 元类 默认的元类 type
|
||||
}
|
||||
header = {}
|
||||
|
||||
def localProxy(self, param):
|
||||
return [200, "video/MP2T", action, ""]
|
||||
def localProxy(self, params):
|
||||
return [200, "video/MP2T", ""]
|
||||
|
||||
# -----------------------------------------------自定义函数-----------------------------------------------
|
||||
# 正则取文本
|
||||
@ -381,8 +381,10 @@ class Spider(BaseSpider): # 元类 默认的元类 type
|
||||
print("'{0}':'{1}',".format(value.text, value.attrib['id']))
|
||||
return temporaryClass
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
from t4.core.loader import t4_spider_init
|
||||
|
||||
spider = Spider()
|
||||
t4_spider_init(spider)
|
||||
print(spider.homeContent(True))
|
||||
|
||||
@ -219,7 +219,7 @@ class Spider(BaseSpider): # 元类 默认的元类 type
|
||||
@param extend: 当前筛选数据
|
||||
@return:
|
||||
"""
|
||||
page_count = 21 # 默认赋值一页列表21条数据
|
||||
page_count = 21 # 默认赋值一页列表21条数据|这个值一定要写正确看他默认一页多少条
|
||||
fls = extend.keys() # 哪些刷新数据
|
||||
# ?type_id=1&area=&lang=&year=&order=time&type_name=&page=1&pageSize=21
|
||||
params = {'page': pg, 'pageSize': page_count, 'tid': tid, 'type_name': gParam['TypeDict'].get(str(tid)) or ''}
|
||||
@ -345,8 +345,8 @@ class Spider(BaseSpider): # 元类 默认的元类 type
|
||||
"Referer": "https://www.baidu.com/"
|
||||
}
|
||||
|
||||
def localProxy(self, param):
|
||||
return [200, "video/MP2T", action, ""]
|
||||
def localProxy(self, params):
|
||||
return [200, "video/MP2T", ""]
|
||||
|
||||
# -----------------------------------------------自定义函数-----------------------------------------------
|
||||
def decode(self, text):
|
||||
@ -361,8 +361,9 @@ if __name__ == '__main__':
|
||||
# 分类页:http://60.204.185.245:7090/appto/v1/home/cateData?id=1
|
||||
# 推荐页:http://60.204.185.245:7090/appto/v1/config/get?p=android
|
||||
from t4.core.loader import t4_spider_init
|
||||
|
||||
spider = Spider()
|
||||
t4_spider_init(spider,'https://jihulab.com/qiaoji/open/-/raw/main/yinghua')
|
||||
t4_spider_init(spider, 'https://jihulab.com/qiaoji/open/-/raw/main/yinghua')
|
||||
# spider.init_api_ext_file() # 生成筛选对应的json文件
|
||||
|
||||
# print(spider.homeContent(True))
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user