mirror of
				https://github.com/qist/tvbox.git
				synced 2025-10-31 04:02:22 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			148 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			148 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from base.spider import Spider
 | |
| import re,sys,json
 | |
| sys.path.append('..')
 | |
| 
 | |
| class Spider(Spider):
 | |
|     api_host = 'https://api.jinlidj.com'
 | |
|     origin = 'https://www.jinlidj.com'
 | |
|     api_path = '/api/search'
 | |
|     headers = {
 | |
|         'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36",
 | |
|         'Content-Type': "application/json",
 | |
|         'accept-language': "zh-CN,zh;q=0.9",
 | |
|         'cache-control': "no-cache",
 | |
|         'origin': origin,
 | |
|         'pragma': "no-cache",
 | |
|         'priority': "u=1, i",
 | |
|         'referer': origin+'/',
 | |
|         'sec-ch-ua': "\"Not)A;Brand\";v=\"8\", \"Chromium\";v=\"138\", \"Google Chrome\";v=\"138\"",
 | |
|         'sec-ch-ua-mobile': "?0",
 | |
|         'sec-ch-ua-platform': "\"Windows\"",
 | |
|         'sec-fetch-dest': "empty",
 | |
|         'sec-fetch-mode': "cors",
 | |
|         'sec-fetch-site': "same-site"
 | |
|     }
 | |
| 
 | |
|     def homeContent(self, filter):
 | |
|         return {'class': [{'type_id': 1, 'type_name': '情感关系'}, {'type_id': 2, 'type_name': '成长逆袭'}, {'type_id': 3, 'type_name': '奇幻异能'}, {'type_id': 4, 'type_name': '战斗热血'}, {'type_id': 5, 'type_name': '伦理现实'}, {'type_id': 6, 'type_name': '时空穿越'}, {'type_id': 7, 'type_name': '权谋身份'}]}
 | |
| 
 | |
|     def homeVideoContent(self):
 | |
|         payload = {
 | |
|             "page": 1,
 | |
|             "limit": 24,
 | |
|             "type_id": "",
 | |
|             "year": "",
 | |
|             "keyword": ""
 | |
|         }
 | |
|         response = self.post(f"{self.api_host}{self.api_path}", data=json.dumps(payload), headers=self.headers).json()
 | |
|         data = response['data']
 | |
|         videos = []
 | |
|         for i in data['list']:
 | |
|             videos.append({
 | |
|                     'vod_id': i.get('vod_id'),
 | |
|                     'vod_name': i.get('vod_name'),
 | |
|                     'vod_class': i.get('vod_class'),
 | |
|                     'vod_pic': i.get('vod_pic'),
 | |
|                     'vod_year': i.get('vod_year'),
 | |
|                     'vod_remarks': i.get('vod_total')+'集',
 | |
|                     'vod_score': i.get('vod_score')
 | |
|                     })
 | |
|         return {'list': videos}
 | |
| 
 | |
|     def detailContent(self, ids):
 | |
|         response = self.post(f'{self.api_host}/api/detail/{ids[0]}', data=json.dumps({}), headers=self.headers).json()
 | |
|         data = response['data']
 | |
|         videos = []
 | |
|         vod_play_url = ''
 | |
|         for name,url in data['player'].items():
 | |
|             vod_play_url += f'{name}${url}#'
 | |
|         vod_play_url.rstrip('#')
 | |
|         videos.append({
 | |
|             'vod_id': data.get('vod_id'),
 | |
|             'vod_name': data.get('vod_name'),
 | |
|             'vod_content': data.get('vod_blurb'),
 | |
|             'vod_remarks': '集数:' + data.get('vod_total'),
 | |
|             "vod_director": data.get('vod_director'),
 | |
|             "vod_actor": data.get('vod_actor'),
 | |
|             'vod_year': data.get('vod_year'),
 | |
|             'vod_area': data.get('vod_area'),
 | |
|             'vod_play_from': '锦鲤短剧',
 | |
|             'vod_play_url': vod_play_url
 | |
|         })
 | |
|         return {'list': videos}
 | |
| 
 | |
|     def searchContent(self, key, quick, pg="1"):
 | |
|         payload = {
 | |
|             "page": pg,
 | |
|             "limit": 24,
 | |
|             "type_id": "",
 | |
|             "keyword": key
 | |
|         }
 | |
|         response = self.post(f'{self.api_host}{self.api_path}', data=json.dumps(payload), headers=self.headers).json()
 | |
|         data = response['data']
 | |
|         videos = []
 | |
|         for i in data['list']:
 | |
|                 videos.append({
 | |
|                     "vod_id": i['vod_id'],
 | |
|                     "vod_name": i['vod_name'],
 | |
|                     "vod_class": i['vod_class'],
 | |
|                     "vod_pic": i['vod_pic'],
 | |
|                     'vod_year': i.get('vod_year'),
 | |
|                     "vod_remarks": i['vod_total'] + '集'
 | |
|                 })
 | |
|         return {'list': videos, 'page': pg, 'total': data['total'], 'limit': 24}
 | |
| 
 | |
|     def categoryContent(self, tid, pg, filter, extend):
 | |
|         payload = {
 | |
|             "page": pg,
 | |
|             "limit": 24,
 | |
|             "type_id": tid,
 | |
|             "year": "",
 | |
|             "keyword": ""
 | |
|         }
 | |
|         response = self.post(f'{self.api_host}{self.api_path}', data=json.dumps(payload), headers=self.headers).json()
 | |
|         data = response['data']
 | |
|         videos = []
 | |
|         for i in data['list']:
 | |
|             videos.append({
 | |
|                     'vod_id': i.get('vod_id'),
 | |
|                     'vod_name': i.get('vod_name'),
 | |
|                     'vod_class': i.get('vod_class'),
 | |
|                     'vod_pic': i.get('vod_pic'),
 | |
|                     'vod_remarks': i.get('vod_total')+'集',
 | |
|                     'vod_year': i.get('vod_year'),
 | |
|                     'vod_score': i.get('vod_score')
 | |
|                     })
 | |
|         return {'list': videos}
 | |
| 
 | |
|     def playerContent(self, flag, id, vipflags):
 | |
|         parse = 0
 | |
|         header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36'}
 | |
|         try:
 | |
|             response = self.fetch(id, headers=self.headers).text
 | |
|             match = re.search(r'let\s+data\s*=\s*(\{[^}]*http[^}]*\});', response, re.IGNORECASE)
 | |
|             data = match.group(1)
 | |
|             data2 = json.loads(data)
 | |
|             url = data2['url']
 | |
|         except Exception:
 | |
|             url, parse, header = id, 1, self.headers
 | |
|         return {'parse': parse, 'url': url,'header': header}
 | |
| 
 | |
|     def init(self, extend=''):
 | |
|         pass
 | |
| 
 | |
|     def getName(self):
 | |
|         pass
 | |
| 
 | |
|     def isVideoFormat(self, url):
 | |
|         pass
 | |
| 
 | |
|     def manualVideoCheck(self):
 | |
|         pass
 | |
| 
 | |
|     def destroy(self):
 | |
|         pass
 | |
| 
 | |
|     def localProxy(self, param):
 | |
|         pass
 |