hitv_emby.py 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. # coding=utf-8
  2. # !/usr/bin/python
  3. # 嗷呜
  4. import os
  5. import sys
  6. sys.path.append('..')
  7. from base.spider import Spider
  8. import requests
  9. class Spider(Spider):
  10. def init(self, extend=""):
  11. pass
  12. def getName(self):
  13. return "hitv"
  14. def isVideoFormat(self, url):
  15. pass
  16. def manualVideoCheck(self):
  17. pass
  18. def destroy(self):
  19. pass
  20. def homeContent(self, filter):
  21. result = {}
  22. cateManual = {
  23. # "直播": "live",
  24. '排行榜': 'rank',
  25. "电影": "1",
  26. "剧集": "2",
  27. "综艺": "3",
  28. "动画": "4",
  29. "短片": "5"
  30. }
  31. classes = []
  32. for k in cateManual:
  33. classes.append({
  34. 'type_name': k,
  35. 'type_id': cateManual[k]
  36. })
  37. result['class'] = classes
  38. return result
  39. host = "https://wys.upfuhn.com"
  40. headers = {
  41. "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
  42. "Chrome/80.0.3987.149 Safari/537.36"
  43. }
  44. def list(self, list):
  45. videos = []
  46. for it in list:
  47. videos.append({
  48. "vod_id": it['video_site_id'],
  49. "vod_name": it['video_name'],
  50. "vod_pic": it['video_horizontal_url'] or it['video_vertical_url'],
  51. "vod_remarks": it['newest_series_num'],
  52. "vod_year": it['years'],
  53. })
  54. return videos
  55. def homeVideoContent(self):
  56. url = f'{self.host}/v1/ys_video_sites/hot?t=1'
  57. data = self.fetch(url, headers=self.headers).json()
  58. videos = self.list(data['data']['data'])
  59. result = {'list': videos}
  60. return result
  61. def categoryContent(self, tid, pg, filter, extend):
  62. path = f'/v1/ys_video_sites?t={tid}&s_t=0&a&y&o=0&ps=21&pn={pg}'
  63. rank = False
  64. if tid == 'rank':
  65. if pg == 1:
  66. path = f'/v1/ys_video_sites/ranking'
  67. rank = True
  68. else:
  69. path = ''
  70. # elif tid == 'live' and pg == 1:
  71. # path = f'/v1/ys_live_tvs'
  72. videos = []
  73. result = {}
  74. try:
  75. data = self.fetch(self.host + path, headers=self.headers).json()
  76. print(data)
  77. if rank:
  78. for video in data['data']:
  79. videos.extend(data['data'][video])
  80. else:
  81. videos = data['data']['data']
  82. result = {}
  83. result['list'] = self.list(videos)
  84. result['page'] = pg
  85. result['pagecount'] = 9999
  86. result['limit'] = 90
  87. result['total'] = 999999
  88. except:
  89. result['list'] = []
  90. return result
  91. def detailContent(self, ids):
  92. tid = ids[0]
  93. url = f'{self.host}/v1/ys_video_series/by_vid/{tid}'
  94. data = self.fetch(url, headers=self.headers).json()
  95. data1 = data['data']['ys_video_site']
  96. urls = []
  97. for it in data['data']['data']:
  98. urls.append(it['series_num'] + '$' + it['video_url'])
  99. vod = {
  100. 'vod_name': data1['video_name'],
  101. 'type_name': data1['tag'],
  102. 'vod_year': data1['years'],
  103. 'vod_area': data1['area'],
  104. 'vod_director': data1['main_actor'],
  105. 'vod_content': data1['video_desc'],
  106. 'vod_play_from': '嗷呜在线',
  107. 'vod_play_url': '#'.join(urls),
  108. }
  109. result = {
  110. 'list': [
  111. vod
  112. ]
  113. }
  114. return result
  115. def searchContent(self, key, quick, pg=1):
  116. url = f'{self.host}/v1/ys_video_sites/search?s={key}&o=0&ps=200&pn={pg}'
  117. data = self.fetch(url, headers=self.headers).json()
  118. videos = data['data']['video_sites']
  119. if data['data']['first_video_series'] is not None:
  120. videos = [data['data']['first_video_series']] + videos
  121. result = {}
  122. result['list'] = self.list(videos)
  123. result['page'] = pg
  124. return result
  125. def playerContent(self, flag, id, vipFlags):
  126. result = {
  127. 'url': id,
  128. 'parse': 0,
  129. 'header': self.headers
  130. }
  131. return result
  132. def localProxy(self, param):
  133. pass