diff --git a/js/version.txt b/js/version.txt index d7a63a4..4e11386 100644 --- a/js/version.txt +++ b/js/version.txt @@ -1 +1 @@ -3.9.49beta21 \ No newline at end of file +3.9.49beta22 \ No newline at end of file diff --git a/txt/hipy/base_java_loader.py b/txt/hipy/base_java_loader.py index 05a29a5..d255a34 100644 --- a/txt/hipy/base_java_loader.py +++ b/txt/hipy/base_java_loader.py @@ -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 diff --git a/txt/hipy/base_spider.py b/txt/hipy/base_spider.py index 83ea4ee..97a4826 100644 --- a/txt/hipy/base_spider.py +++ b/txt/hipy/base_spider.py @@ -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): diff --git a/txt/hipy/cntv央视.py b/txt/hipy/cntv央视.py index 2949815..dfd8414 100644 --- a/txt/hipy/cntv央视.py +++ b/txt/hipy/cntv央视.py @@ -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", ""] # -----------------------------------------------自定义函数----------------------------------------------- # 访问网页 diff --git a/txt/hipy/两个BT.py b/txt/hipy/两个BT.py index d5ac8a8..39a624e 100644 --- a/txt/hipy/两个BT.py +++ b/txt/hipy/两个BT.py @@ -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文件 diff --git a/txt/hipy/哔滴影视.py b/txt/hipy/哔滴影视.py index 2921ad3..c13d651 100644 --- a/txt/hipy/哔滴影视.py +++ b/txt/hipy/哔滴影视.py @@ -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)) diff --git a/txt/hipy/新浪资源.py b/txt/hipy/新浪资源.py index b91bba0..a8682d1 100644 --- a/txt/hipy/新浪资源.py +++ b/txt/hipy/新浪资源.py @@ -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)) diff --git a/txt/hipy/樱花动漫.py b/txt/hipy/樱花动漫.py index 32f3a31..2bb436d 100644 --- a/txt/hipy/樱花动漫.py +++ b/txt/hipy/樱花动漫.py @@ -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))