Fix Streaming Community
This commit is contained in:
@@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
import json, requests, sys
|
import json, requests, sys
|
||||||
from core import support, channeltools
|
from core import support, channeltools
|
||||||
from platformcode import logger
|
from platformcode import logger, platformtools
|
||||||
if sys.version_info[0] >= 3:
|
if sys.version_info[0] >= 3:
|
||||||
from concurrent import futures
|
from concurrent import futures
|
||||||
else:
|
else:
|
||||||
@@ -205,14 +205,19 @@ def episodios(item):
|
|||||||
|
|
||||||
|
|
||||||
def findvideos(item):
|
def findvideos(item):
|
||||||
|
itemlist = [item.clone(title = channeltools.get_channel_parameters(item.channel)['title'], server='directo')]
|
||||||
|
return support.server(item, itemlist=itemlist)
|
||||||
|
|
||||||
|
def play(item):
|
||||||
video_urls = []
|
video_urls = []
|
||||||
|
from time import time
|
||||||
|
from base64 import b64encode as b64
|
||||||
|
import hashlib
|
||||||
|
|
||||||
data = support.match(item.url + item.episodeid, headers=headers).data.replace('"','"').replace('\\','')
|
data = support.match(item.url + item.episodeid, headers=headers).data.replace('"','"').replace('\\','')
|
||||||
url = support.match(data, patron=r'video_url"\s*:\s*"([^"]+)"').match
|
url = support.match(data, patron=r'video_url"\s*:\s*"([^"]+)"').match + 'm3u8'
|
||||||
|
|
||||||
def calculateToken():
|
def calculateToken():
|
||||||
from time import time
|
|
||||||
from base64 import b64encode as b64
|
|
||||||
import hashlib
|
|
||||||
o = 48
|
o = 48
|
||||||
n = support.match(host + '/client-address').data
|
n = support.match(host + '/client-address').data
|
||||||
i = 'Yc8U6r8KjAKAepEA'
|
i = 'Yc8U6r8KjAKAepEA'
|
||||||
@@ -221,18 +226,16 @@ def findvideos(item):
|
|||||||
md5 = hashlib.md5(l.encode())
|
md5 = hashlib.md5(l.encode())
|
||||||
s = '?token={}&expires={}'.format(b64(md5.digest()).decode().replace('=', '').replace('+', "-").replace('\\', "_"), t)
|
s = '?token={}&expires={}'.format(b64(md5.digest()).decode().replace('=', '').replace('+', "-").replace('\\', "_"), t)
|
||||||
return s
|
return s
|
||||||
|
|
||||||
|
|
||||||
token = calculateToken()
|
token = calculateToken()
|
||||||
|
code = support.httptools.downloadpage(url + token).code
|
||||||
|
count = 0
|
||||||
|
while not code == 200:
|
||||||
|
token = calculateToken()
|
||||||
|
code = support.httptools.downloadpage(url + token).code
|
||||||
|
count +=1
|
||||||
|
if count == 30:
|
||||||
|
break
|
||||||
|
|
||||||
def videourls(res):
|
return [item.clone(title = channeltools.get_channel_parameters(item.channel)['title'], server='directo', url=url + token)]
|
||||||
newurl = '{}/{}{}'.format(url, res, token)
|
|
||||||
if requests.head(newurl, headers=headers).status_code == 200:
|
|
||||||
video_urls.append(["m3u8 {} [StreamingCommunity]".format(res), newurl])
|
|
||||||
|
|
||||||
with futures.ThreadPoolExecutor() as executor:
|
|
||||||
for res in ['480p', '720p', '1080p']:
|
|
||||||
executor.submit(videourls, res)
|
|
||||||
|
|
||||||
if not video_urls: video_urls = [["m3u8 [StreamingCommunity]", url + token]]
|
|
||||||
else: video_urls.sort(key=lambda url: int(support.match(url[0], patron=r'(\d+)p').match))
|
|
||||||
itemlist = [item.clone(title = channeltools.get_channel_parameters(item.channel)['title'], server='directo', video_urls=video_urls, thumbnail=channeltools.get_channel_parameters(item.channel)["thumbnail"], forcethumb=True)]
|
|
||||||
return support.server(item, itemlist=itemlist)
|
|
||||||
|
|||||||
Reference in New Issue
Block a user