You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

APPV2.py 3.3 kB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. # -*- coding: utf-8 -*-
  2. # by @嗷呜
  3. import sys
  4. sys.path.append('..')
  5. from base.spider import Spider
  6. class Spider(Spider):
  7. def init(self, extend=""):
  8. '''
  9. example:
  10. {
  11. "key": "py_appV2",
  12. "name": "xxx",
  13. "type": 3,
  14. "searchable": 1,
  15. "quickSearch": 1,
  16. "filterable": 1,
  17. "api": "./py/APPV2.py",
  18. "ext": "http://cmsyt.lyyytv.cn"
  19. }
  20. '''
  21. self.host=extend
  22. pass
  23. def getName(self):
  24. pass
  25. def isVideoFormat(self, url):
  26. pass
  27. def manualVideoCheck(self):
  28. pass
  29. def destroy(self):
  30. pass
  31. headers = {
  32. 'User-Agent': 'okhttp/4.12.0',
  33. }
  34. def homeContent(self, filter):
  35. data = self.fetch(f"{self.host}//api.php/app/nav?token=",headers=self.headers).json()
  36. keys = ["class", "area", "lang", "year", "letter", "by", "sort"]
  37. filters = {}
  38. classes = []
  39. for item in data['list']:
  40. has_non_empty_field = False
  41. jsontype_extend = item["type_extend"]
  42. classes.append({"type_name": item["type_name"], "type_id": item["type_id"]})
  43. for key in keys:
  44. if key in jsontype_extend and jsontype_extend[key].strip() != "":
  45. has_non_empty_field = True
  46. break
  47. if has_non_empty_field:
  48. filters[str(item["type_id"])] = []
  49. for dkey in jsontype_extend:
  50. if dkey in keys and jsontype_extend[dkey].strip() != "":
  51. values = jsontype_extend[dkey].split(",")
  52. value_array = [{"n": value.strip(), "v": value.strip()} for value in values if
  53. value.strip() != ""]
  54. filters[str(item["type_id"])].append({"key": dkey, "name": dkey, "value": value_array})
  55. result = {}
  56. result["class"] = classes
  57. result["filters"] = filters
  58. return result
  59. def homeVideoContent(self):
  60. data=self.fetch(f"{self.host}/api.php/app/index_video?token=",headers=self.headers).json()
  61. videos=[]
  62. for item in data['list']:videos.extend(item['vlist'])
  63. return {'list':videos}
  64. def categoryContent(self, tid, pg, filter, extend):
  65. params = {'tid':tid,'class':extend.get('class',''),'area':extend.get('area',''),'lang':extend.get('lang',''),'year':extend.get('year',''),'limit':'18','pg':pg}
  66. data=self.fetch(f"{self.host}/api.php/app/video",params=params,headers=self.headers).json()
  67. return data
  68. def detailContent(self, ids):
  69. data=self.fetch(f"{self.host}/api.php/app/video_detail?id={ids[0]}",headers=self.headers).json()
  70. return {'list':[data['data']]}
  71. def searchContent(self, key, quick, pg="1"):
  72. data=self.fetch(f"{self.host}/api.php/app/search?text={key}&pg={pg}",headers=self.headers).json()
  73. videos=data['list']
  74. for item in data['list']:
  75. item.pop('type', None)
  76. return {'list':videos,'page':pg}
  77. def playerContent(self, flag, id, vipFlags):
  78. return {'jx':1,'playUrl':'','parse': 1, 'url': id, 'header': self.headers}
  79. def localProxy(self, param):
  80. pass

No Description