StreamingCommunity WS - Sottotitoli e banner "Prossimamente"

This commit is contained in:
Alhaziel01
2023-06-17 16:41:49 +02:00
parent 58e01dc49d
commit b7e28501a7
+54 -42
View File
@@ -1,63 +1,75 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import urllib.parse import urllib.parse
import ast
import xbmc
from core import httptools, support, filetools from core import httptools, support, filetools
from platformcode import logger, config from platformcode import logger, config
import ast from concurrent import futures
UA = httptools.get_user_agent() from urllib.parse import urlparse
vttsupport = False if int(xbmc.getInfoLabel('System.BuildVersion').split('.')[0]) < 20 else True
def test_video_exists(page_url): def test_video_exists(page_url):
global scws_id global iframe
# logger.debug('page url=', page_url) global iframeParams
# scws_id = ''
# iframe = support.scrapertools.decodeHtmlentities(support.match(page_url, patron='<iframe [^>]+src="([^"]+)').match)
# if page_url.isdigit(): iframeParams = support.match(iframe, patron='window\.masterPlaylistParams\s=\s({.*?})').match
# scws_id = page_url
# else: if not iframeParams:
# page = httptools.downloadpage(page_url) return 'StreamingCommunity', 'Prossimamente'
# if page.url == page_url: # se non esiste, reindirizza all'ultimo url chiamato esistente
# scws_id = support.scrapertools.find_single_match(page.data, r'scws_id[^:]+:(\d+)')
# else:
# return 'StreamingCommunity', 'Prossimamente'
#
# if not scws_id:
# return False, config.get_localized_string(70449) % 'StreamingCommunityWS'
return True, "" return True, ""
def get_video_url(page_url, premium=False, user="", password="", video_password=""): def get_video_url(page_url, premium=False, user="", password="", video_password=""):
from urllib.parse import urlparse urls = list()
subs = list()
composed_subs = list()
local_subs = list()
video_urls = list() video_urls = list()
iframe = support.scrapertools.decodeHtmlentities(support.match(page_url, patron='<iframe [^>]+src="([^"]+)').match)
scws_id = urlparse(iframe).path.split('/')[-1] scws_id = urlparse(iframe).path.split('/')[-1]
masterPlaylistParams = ast.literal_eval(support.match(iframe, patron='window\.masterPlaylistParams\s=\s({.*?})').match) masterPlaylistParams = ast.literal_eval(iframeParams)
url = 'https://scws.work/v2/playlist/{}?{}&n=1'.format(scws_id, urllib.parse.urlencode(masterPlaylistParams)) url = 'https://scws.work/v2/playlist/{}?{}&n=1'.format(scws_id, urllib.parse.urlencode(masterPlaylistParams))
video_urls.append(['m3u8', '{}|User-Agent={}'.format(url, UA)])
return video_urls info = support.match(url, patron=r'LANGUAGE="([^"]+)",\s*URI="([^"]+)|RESOLUTION=\d+x(\d+).*?(http[^"\s]+)').matches
if info:
def compose(url):
subs = []
video_urls = []
info = support.match(url, patron=r'LANGUAGE="([^"]+)",\s*URI="([^"]+)|RESOLUTION=\d+x(\d+).*?(http[^"\s]+)', headers={'User-Agent':UA}).matches
if info and not logger.testMode: # ai test non piace questa parte
for lang, sub, res, url in info: for lang, sub, res, url in info:
if sub: if sub:
while True:
match = support.match(sub, patron=r'(http[^\s\n]+)').match
if match:
sub = httptools.downloadpage(match).data
else:
break
if lang == 'auto': lang = 'ita-forced' if lang == 'auto': lang = 'ita-forced'
s = config.get_temp_file(lang +'.srt') subs.append([lang, sub])
subs.append(s) elif res != '1080':
filetools.write(s, support.vttToSrt(sub)) urls.append([res, url])
elif url:
video_urls.append(['m3u8 [{}]'.format(res), '{}|User-Agent={}'.format(url, UA), 0, subs]) if subs:
else: with futures.ThreadPoolExecutor() as executor:
video_urls.append(['m3u8', '{}|User-Agent={}'.format(url, UA)]) itlist = [executor.submit(subs_downloader, n, s) for n, s in enumerate(subs)]
for res in futures.as_completed(itlist):
if res.result():
composed_subs.append(res.result())
local_subs = [s[1] for s in sorted(composed_subs, key=lambda n: n[0])]
video_urls = [['m3u [{}]'.format(res), url, 0, local_subs] for res, url in urls]
return video_urls return video_urls
def subs_downloader(n, s):
lang, url = s
match = support.match(url, patron=r'(http[^\s\n]+)').match
if match:
data = httptools.downloadpage(match).data
if lang == 'auto': lang = 'ita-forced'
sub = config.get_temp_file('{}.{}'.format(lang, 'vtt' if vttsupport else 'str'))
filetools.write(sub, data if vttsupport else support.vttToSrt(data))
return n, sub