Prechádzať zdrojové kódy

Merge remote-tracking branch 'origin/master'

hjdhnx 2 mesiacov pred
rodič
commit
84e3fa3e4d
1 zmenil súbory, kde vykonal 18 pridanie a 1 odobranie
  1. 18 1
      app/t4/spiders/cntv央视.py

+ 18 - 1
app/t4/spiders/cntv央视.py

@@ -1,6 +1,7 @@
 # coding=utf-8
 # !/usr/bin/python
 import os.path
+import random
 import sys
 
 sys.path.append('..')
@@ -816,6 +817,21 @@ class Spider(BaseSpider):  # 元类 默认的元类 type
         txt = soup.sub('', txt)
         return txt.replace(" ", " ")
 
+    def hookM3u8(self, url):
+        """
+        https://www.52pojie.cn/thread-1932358-1-1.html
+        JavaScript:$.ajaxSettings.async = false; var s = ""; let a = $.get(vodh5player.playerList[0].ads.contentSrc); for (var m = 0; m < a.responseText.match(/asp.*?m3u8/g).length; m++) { s = s + "https://hls.cntv.myalicdn.com//asp" + a.responseText.match(/asp.*?m3u8/g)[m].slice(7) + "\n\n" }; var blob = new Blob([s], { type: "text/plain" }); var url = URL.createObjectURL(blob); window.open(url);
+        @param url:
+        @return:
+        """
+        url = url or ''
+        hook1 = lambda x: x.replace('asp/', 'asp//', 1)
+        hook2 = lambda x: x.replace('hls/', 'hls//', 1)
+        hook3 = lambda x: x.replace('https://newcntv.qcloudcdn.com', 'https://hls.cntv.myalicdn.com/', 1)
+        hooks = [hook1, hook2, hook3]
+        hook = random.choice(hooks)
+        return hook(url)
+
     # 取m3u8
     def get_m3u8(self, urlTxt):
         """
@@ -854,6 +870,7 @@ class Spider(BaseSpider):  # 元类 默认的元类 type
         hdRsp = self.TestWebPage(urlStr=hdUrl, header=self.header)
         if hdRsp == 200:
             url = hdUrl.split('?')[0]
+            url = self.hookM3u8(url)
             self.log(f'视频链接: {url}')
         else:
             url = ''
@@ -1031,7 +1048,7 @@ if __name__ == '__main__':
     print(vod_play_from, vod_play_url)
     _url = vod_play_url.split('#')[0].split('$')[1]
     print(_url)
-    print('vod_play_from:',vod_play_from,' vod_play_url:',_url)
+    print('vod_play_from:', vod_play_from, ' vod_play_url:', _url)
     play = spider.playerContent(vod_play_from, _url, None)
     print(play)