mirror of
				https://github.com/qist/tvbox.git
				synced 2025-10-28 18:52:23 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			98 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			98 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # -*- coding: utf-8 -*-
 | |
| # by @嗷呜
 | |
| import sys
 | |
| sys.path.append('..')
 | |
| from base.spider import Spider
 | |
| 
 | |
| class Spider(Spider):
 | |
| 
 | |
|     def init(self, extend=""):
 | |
|         '''
 | |
|         example:
 | |
|         {
 | |
|             "key": "py_appV2",
 | |
|             "name": "xxx",
 | |
|             "type": 3,
 | |
|             "searchable": 1,
 | |
|             "quickSearch": 1,
 | |
|             "filterable": 1,
 | |
|             "api": "./py/APPV2.py",
 | |
|             "ext": "http://cmsyt.lyyytv.cn"
 | |
|         }
 | |
|         
 | |
|         '''
 | |
|         self.host=extend
 | |
|         pass
 | |
| 
 | |
|     def getName(self):
 | |
|         pass
 | |
| 
 | |
|     def isVideoFormat(self, url):
 | |
|         pass
 | |
| 
 | |
|     def manualVideoCheck(self):
 | |
|         pass
 | |
| 
 | |
|     def destroy(self):
 | |
|         pass
 | |
| 
 | |
|     headers = {
 | |
|         'User-Agent': 'okhttp/4.12.0',
 | |
|     }
 | |
| 
 | |
|     def homeContent(self, filter):
 | |
|         data = self.fetch(f"{self.host}//api.php/app/nav?token=",headers=self.headers).json()
 | |
|         keys = ["class", "area", "lang", "year", "letter", "by", "sort"]
 | |
|         filters = {}
 | |
|         classes = []
 | |
|         for item in data['list']:
 | |
|             has_non_empty_field = False
 | |
|             jsontype_extend = item["type_extend"]
 | |
|             classes.append({"type_name": item["type_name"], "type_id": item["type_id"]})
 | |
|             for key in keys:
 | |
|                 if key in jsontype_extend and jsontype_extend[key].strip() != "":
 | |
|                     has_non_empty_field = True
 | |
|                     break
 | |
|             if has_non_empty_field:
 | |
|                 filters[str(item["type_id"])] = []
 | |
|             for dkey in jsontype_extend:
 | |
|                 if dkey in keys and jsontype_extend[dkey].strip() != "":
 | |
|                     values = jsontype_extend[dkey].split(",")
 | |
|                     value_array = [{"n": value.strip(), "v": value.strip()} for value in values if
 | |
|                                    value.strip() != ""]
 | |
|                     filters[str(item["type_id"])].append({"key": dkey, "name": dkey, "value": value_array})
 | |
|         result = {}
 | |
|         result["class"] = classes
 | |
|         result["filters"] = filters
 | |
|         return result
 | |
| 
 | |
|     def homeVideoContent(self):
 | |
|         data=self.fetch(f"{self.host}/api.php/app/index_video?token=",headers=self.headers).json()
 | |
|         videos=[]
 | |
|         for item in data['list']:videos.extend(item['vlist'])
 | |
|         return {'list':videos}
 | |
| 
 | |
|     def categoryContent(self, tid, pg, filter, extend):
 | |
|         params = {'tid':tid,'class':extend.get('class',''),'area':extend.get('area',''),'lang':extend.get('lang',''),'year':extend.get('year',''),'limit':'18','pg':pg}
 | |
|         data=self.fetch(f"{self.host}/api.php/app/video",params=params,headers=self.headers).json()
 | |
|         return data
 | |
| 
 | |
|     def detailContent(self, ids):
 | |
|         data=self.fetch(f"{self.host}/api.php/app/video_detail?id={ids[0]}",headers=self.headers).json()
 | |
|         return  {'list':[data['data']]}
 | |
| 
 | |
|     def searchContent(self, key, quick, pg="1"):
 | |
|         data=self.fetch(f"{self.host}/api.php/app/search?text={key}&pg={pg}",headers=self.headers).json()
 | |
|         videos=data['list']
 | |
|         for item in data['list']:
 | |
|             item.pop('type', None)
 | |
|         return {'list':videos,'page':pg}
 | |
| 
 | |
|     def playerContent(self, flag, id, vipFlags):
 | |
|         return  {'jx':1,'playUrl':'','parse': 1, 'url': id, 'header': self.headers}
 | |
| 
 | |
|     def localProxy(self, param):
 | |
|         pass
 | |
| 
 | |
| 
 |