From dc2eeea1ff3e5b0b295ab241d75e4f9a1806594c Mon Sep 17 00:00:00 2001 From: yulong Date: Mon, 23 Feb 2026 03:44:57 +0000 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=20ceshi/ceshi2/lib/XYDJ.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ceshi/ceshi2/lib/XYDJ.py | 343 --------------------------------------- 1 file changed, 343 deletions(-) delete mode 100644 ceshi/ceshi2/lib/XYDJ.py diff --git a/ceshi/ceshi2/lib/XYDJ.py b/ceshi/ceshi2/lib/XYDJ.py deleted file mode 100644 index 8a7d540..0000000 --- a/ceshi/ceshi2/lib/XYDJ.py +++ /dev/null @@ -1,343 +0,0 @@ -# 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 \ No newline at end of file