py_yytv.py 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. #coding=utf-8
  2. #!/usr/bin/python
  3. import sys
  4. sys.path.append('..')
  5. from base.spider import Spider
  6. import json
  7. class Spider(Spider):
  8. def getName(self):
  9. return "体育直播"
  10. def init(self,extend=""):
  11. pass
  12. def isVideoFormat(self,url):
  13. pass
  14. def manualVideoCheck(self):
  15. pass
  16. def homeContent(self,filter):
  17. result = {}
  18. cateManual = {
  19. "全部": "0",
  20. "足球": "1",
  21. "篮球": "2",
  22. "其他": "5"
  23. }
  24. classes = []
  25. for k in cateManual:
  26. classes.append({
  27. 'type_name': k,
  28. 'type_id': cateManual[k]
  29. })
  30. result['class'] = classes
  31. if (filter):
  32. result['filters'] = self.config['filter']
  33. return result
  34. def homeVideoContent(self):
  35. result = {}
  36. return result
  37. def categoryContent(self,tid,pg,filter,extend):
  38. result = {}
  39. url = 'https://json.cranemarsh.com/all_live_rooms.json'
  40. rsp = self.fetch(url)
  41. pat = 'all_live_rooms\\((.*)\\)'
  42. Root = self.regStr(rsp.text, pat)
  43. jRoot = json.loads(Root)
  44. videos = []
  45. vodList = jRoot['data'][tid]
  46. for vod in vodList:
  47. aid = vod['roomNum']
  48. title = vod['title'].strip()
  49. img = vod['cover'].strip()
  50. remark = vod['anchor']['nickName'].strip()
  51. videos.append({
  52. "vod_id":aid,
  53. "vod_name":title,
  54. "vod_pic":img,
  55. "vod_remarks":remark
  56. })
  57. result['list'] = videos
  58. result['page'] = pg
  59. result['pagecount'] = 9999
  60. result['limit'] = 90
  61. result['total'] = 999999
  62. return result
  63. def detailContent(self,array):
  64. aid = array[0]
  65. url = "https://json.cranemarsh.com/room/{0}/detail.json".format(aid)
  66. rsp = self.fetch(url,headers=self.header)
  67. pat = 'detail\\((.*)\\)'
  68. Root = self.regStr(rsp.text, pat)
  69. jRoot = json.loads(Root)
  70. jo = jRoot['data']['room']
  71. id = jo['roomNum']
  72. title = jo['title']
  73. pic = jo['cover']
  74. vod = {
  75. "vod_id":id,
  76. "vod_name":title,
  77. "vod_pic":pic,
  78. "type_name":'',
  79. "vod_year":"",
  80. "vod_area":'',
  81. "vod_remarks":'',
  82. "vod_actor":"",
  83. "vod_director":"",
  84. "vod_content":''
  85. }
  86. ja = jRoot['data']['stream']
  87. flv = ja['flv']
  88. hdFlv = ja['hdFlv']
  89. m3u8 = ja['m3u8']
  90. hdM3u8 = ja['hdM3u8']
  91. playUrl = 'FLV' + '$' + flv + '#' + '高清FLV' + '$' + hdFlv + '#' + 'M3U8' + '$' + m3u8 + '#' + '高清M3U8' + '$' + hdM3u8 + '#'
  92. vod['vod_play_from'] = '体育直播'
  93. vod['vod_play_url'] = playUrl
  94. result = {
  95. 'list':[
  96. vod
  97. ]
  98. }
  99. return result
  100. def searchContent(self,key,quick):
  101. result = {}
  102. return result
  103. def playerContent(self,flag,id,vipFlags):
  104. result = {}
  105. url = id
  106. result["parse"] = 0
  107. result["playUrl"] = ''
  108. result["url"] = url
  109. result["header"] = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36"}
  110. return result
  111. config = {
  112. "player": {},
  113. "filter": {}
  114. }
  115. header = {}
  116. config = {
  117. "player": {},
  118. "filter": {}
  119. }
  120. header = {}
  121. def localProxy(self,param):
  122. action = {
  123. 'url':'',
  124. 'header':'',
  125. 'param':'',
  126. 'type':'string',
  127. 'after':''
  128. }
  129. return [200, "video/MP2T", action, ""