Fix Cinemalibero e StreamingCommunity

This commit is contained in:
Alhaziel01
2022-04-02 10:17:27 +02:00
parent 75d83f423c
commit 49e609b4e0
6 changed files with 48 additions and 28 deletions
+31 -22
View File
@@ -8,8 +8,10 @@ import re
from core import httptools, support, scrapertools from core import httptools, support, scrapertools
from core.item import Item from core.item import Item
from core.support import typo from core.support import typo
from platformcode import config from platformcode import config, logger
import sys import sys
from platformcode.logger import debug
if sys.version_info[0] >= 3: if sys.version_info[0] >= 3:
from concurrent import futures from concurrent import futures
else: else:
@@ -97,15 +99,16 @@ def episodios(item):
data = item.data data = item.data
# debugBlock = True # debugBlock = True
if item.args == 'anime': if item.args == 'anime':
support.info("Anime :", item) logger.debug("Anime :", item)
# blacklist = ['Clipwatching', 'Verystream', 'Easybytez', 'Flix555', 'Cloudvideo'] # blacklist = ['Clipwatching', 'Verystream', 'Easybytez', 'Flix555', 'Cloudvideo']
patron = r'<a target=(?P<url>[^>]+>(?P<title>Episodio\s(?P<episode>\d+))(?::)?(?:(?P<title2>[^<]+))?.*?(?:<br|</p))' patron = r'<a target=(?P<url>[^>]+>(?P<title>Episodio\s(?P<episode>\d+))(?::)?(?:(?P<title2>[^<]+))?.*?(?:<br|</p))'
patronBlock = r'(?:Stagione (?P<season>\d+))?(?:</span><br />|</span></p>|strong></p>)(?P<block>.*?)(?:<div style="margin-left|<span class="txt_dow">)' patronBlock = r'(?:Stagione (?P<season>\d+))?(?:</span><br />|</span></p>|strong></p>)(?P<block>.*?)(?:<div style="margin-left|<span class="txt_dow">)'
item.contentType = 'tvshow' item.contentType = 'tvshow'
elif item.args == 'serie' or item.contentType == 'tvshow': elif item.args == 'serie' or item.contentType == 'tvshow':
support.info("Serie :", item) logger.debug("Serie :", item)
patron = r'(?:>| )(?P<episode>\d+(?:x|×|&#215;)\d+|Puntata \d+)[;]?[ ]?(?:(?P<title>[^<-]+)?(?P<data>.*?)|(\2[ ])(?:<(\3.*?)))(?:</a><br /|</a></p|$)|(?P<stagione>.+)' # debugBlock = True
patronBlock = r'>(?:[^<]+[Ss]tagione\s|[Ss]tagione [Uu]nica)(?:(?P<lang>iTA|ITA|Sub-ITA|Sub-iTA))?.*?</strong>(?P<block>.+?)(?:<strong|<div class="at-below)' patron = r'(?:/>|<p>)\s*(?:(?P<episode>\d+(?:x|×|&#215;)\d+|Puntata \d+)[;]?[ ]?(?P<title>[^<-]+))?(?P<data>.*?)(?:<br|</p)'
patronBlock = r'Stagione\s(?:[Uu]nica)?(?:(?P<lang>iTA|ITA|Sub-ITA|Sub-iTA))?.*?</strong>(?P<block>.+?)(?:strong>|<div class="at-below)'
item.contentType = 'tvshow' item.contentType = 'tvshow'
else: else:
patron = r'(?P<title>\s*[0-9]{2}/[0-9]{2}/[0-9]{4})(?P<data>.*?)(?:<br|</p)' patron = r'(?P<title>\s*[0-9]{2}/[0-9]{2}/[0-9]{4})(?P<data>.*?)(?:<br|</p)'
@@ -118,7 +121,10 @@ def episodios(item):
def itemlistHook(itl): def itemlistHook(itl):
ret = [] ret = []
for it in itl: for it in itl:
if it.stagione: # stagione intera ep = scrapertools.find_single_match(it.title, r'(\d+x\d+)')
if not ep and 'http' in it.data: # stagione intera
from lib import unshortenit
data = unshortenit.findlinks(it.data)
def get_ep(s): def get_ep(s):
srv_mod = __import__('servers.%s' % s.server, None, None, ["servers.%s" % s.server]) srv_mod = __import__('servers.%s' % s.server, None, None, ["servers.%s" % s.server])
if hasattr(srv_mod, 'get_filename'): if hasattr(srv_mod, 'get_filename'):
@@ -128,15 +134,18 @@ def episodios(item):
if ep not in episodes: if ep not in episodes:
episodes[ep] = [] episodes[ep] = []
episodes[ep].append(s) episodes[ep].append(s)
servers = support.server(item, it.stagione, CheckLinks=False, Download=False, Videolibrary=False)
episodes = {}
servers = support.server(item, data, CheckLinks=False, Download=False, Videolibrary=False)
episodes = {}
for s in servers:
get_ep(s)
# ottengo l'episodio dal nome del file # ottengo l'episodio dal nome del file
with futures.ThreadPoolExecutor() as executor: # with futures.ThreadPoolExecutor() as executor:
for s in servers: # for s in servers:
executor.submit(get_ep, s) # executor.submit(get_ep, s)
ret.extend([it.clone(title=ep+typo(it.contentLanguage, '_ [] color kod'), contentSeason=int(ep.split('x')[0]), contentEpisodeNumber=int(ep.split('x')[1]), servers=[srv.tourl() for srv in episodes[ep]]) for ep in episodes]) # logger.debug(it.contentLanguage)
else: ret.extend([it.clone(title=typo(ep, 'bold')+typo(it.contentLanguage, '_ [] color kod bold'), contentSeason=int(ep.split('x')[0]), contentEpisodeNumber=int(ep.split('x')[1]), servers=[srv.tourl() for srv in episodes[ep]]) for ep in episodes])
elif ep:
ret.append(it) ret.append(it)
return sorted(ret, key=lambda i: i.title) return sorted(ret, key=lambda i: i.title)
@@ -153,7 +162,7 @@ def genres(item):
def search(item, texto): def search(item, texto):
support.info(item.url,texto) logger.debug(item.url,texto)
texto = texto.replace(' ', '+') texto = texto.replace(' ', '+')
item.url = host + "/?s=" + texto item.url = host + "/?s=" + texto
# item.contentType = 'tv' # item.contentType = 'tv'
@@ -164,12 +173,12 @@ def search(item, texto):
except: except:
import sys import sys
for line in sys.exc_info(): for line in sys.exc_info():
support.info("%s" % line) logger.error("%s" % line)
return [] return []
def newest(categoria): def newest(categoria):
support.info('newest ->', categoria) logger.debug('newest ->', categoria)
itemlist = [] itemlist = []
item = Item() item = Item()
item.args = 'newest' item.args = 'newest'
@@ -183,14 +192,14 @@ def newest(categoria):
except: except:
import sys import sys
for line in sys.exc_info(): for line in sys.exc_info():
support.info('newest log: ', (line)) logger.error('newest log: ', (line))
return [] return []
return itemlist return itemlist
def check(item): def check(item):
support.info() logger.debug()
data = support.match(item.url, headers=headers).data data = support.match(item.url, headers=headers).data
if data: if data:
ck = support.match(data, patron=r'Supportaci condividendo quest[oa] ([^:]+)').match.lower() ck = support.match(data, patron=r'Supportaci condividendo quest[oa] ([^:]+)').match.lower()
@@ -208,13 +217,13 @@ def check(item):
itemlist = episodios(item) itemlist = episodios(item)
if not itemlist: if not itemlist:
item.data = data item.data = data
item.action = 'findvideos' # item.action = 'findvideos'
return findvideos(item) return findvideos(item)
elif ck == 'film': elif ck == 'film':
item.contentType = 'movie' item.contentType = 'movie'
item.data = data item.data = data
item.action = 'findvideos' # item.action = 'findvideos'
return findvideos(item) return findvideos(item)
else: else:
@@ -224,7 +233,7 @@ def check(item):
if not itemlist: if not itemlist:
item.contentType = 'movie' item.contentType = 'movie'
item.data = data item.data = data
item.action = 'findvideos' # item.action = 'findvideos'
return findvideos(item) return findvideos(item)
@@ -238,7 +247,7 @@ def findvideos(item):
if scrapertools.get_season_and_episode(title) == str(item.contentSeason) + "x" + str( if scrapertools.get_season_and_episode(title) == str(item.contentSeason) + "x" + str(
item.contentEpisodeNumber).zfill(2): item.contentEpisodeNumber).zfill(2):
servers.append(s) servers.append(s)
support.info() logger.debug()
if item.servers: if item.servers:
return support.server(item, itemlist=[Item().fromurl(s) for s in item.servers]) return support.server(item, itemlist=[Item().fromurl(s) for s in item.servers])
if not item.data: if not item.data:
+3 -1
View File
@@ -92,8 +92,10 @@ def newest(category):
item.args = 1 item.args = 1
item.newest = True item.newest = True
if category == 'peliculas': if category == 'peliculas':
item.contentType == 'movie'
item.url = host + '/film' item.url = host + '/film'
else: else:
item.contentType == 'tvshow'
item.url = host + '/serie-tv' item.url = host + '/serie-tv'
try: try:
@@ -213,7 +215,7 @@ def episodios(item):
season=episodes['number'], season=episodes['number'],
contentSeason=episodes['number'], contentSeason=episodes['number'],
contentEpisodeNumber=it['number'], contentEpisodeNumber=it['number'],
thumbnail=it['images'][0]['original_url'] if 'images' in it and 'original_url' in it['images'][0] else item.thumbnail, thumbnail=it['images'][0].get('original_url', item.thumbnail) if it['images'] else item.thumbnail,
contentThumbnail=item.thumbnail, contentThumbnail=item.thumbnail,
fanart=item.fanart, fanart=item.fanart,
contentFanart=item.fanart, contentFanart=item.fanart,
+1 -1
View File
@@ -61,7 +61,7 @@ class UnshortenIt(object):
def unshorten(self, uri, type=None): def unshorten(self, uri, type=None):
code = 0 code = 0
originalUri = uri originalUri = uri.replace('%0A', '\n')
while True: while True:
uri = uri.strip() uri = uri.strip()
oldUri = uri oldUri = uri
+1 -1
View File
@@ -4,7 +4,7 @@
"ignore_urls": [], "ignore_urls": [],
"patterns": [ "patterns": [
{ {
"pattern": "(?:streamsb|sbembed|sbembed1|sbplay1|sbplay|pelistop|tubesb|playersb|embedsb|watchsb|streamas).\\w{2,5}/(?:embed-|d/|e/)?([A-z0-9]+)", "pattern": "(?:streamsb|sbembed|sbembed1|sbplay1|sbplay|pelistop|tubesb|playersb|embedsb|watchsb|streamas|sbfast).\\w{2,5}/(?:embed-|d/|e/)?([A-z0-9]+)",
"url": "https://streamsb.net/d/\\1" "url": "https://streamsb.net/d/\\1"
}, },
{ {
+3 -2
View File
@@ -40,8 +40,9 @@ def get_video_url(page_url, premium=False, user="", password="", video_password=
def get_filename(page_url): def get_filename(page_url):
title = httptools.downloadpage(page_url).data.split('<title>')[1].split('</title>')[0] # from core.support import dbg;dbg()
prefix = 'Watch ' title = httptools.downloadpage(page_url).data.split('<h3>')[1].split('</h3>')[0]
prefix = 'Download '
if title.startswith(prefix): if title.startswith(prefix):
return title[len(prefix):] return title[len(prefix):]
return "" return ""
+8
View File
@@ -38,3 +38,11 @@ def get_video_url(page_url, video_password=""):
video_urls.append(["mp4 [streamZ]", url]) video_urls.append(["mp4 [streamZ]", url])
return video_urls return video_urls
def get_filename(page_url):
# support.dbg()
title = httptools.downloadpage(page_url).data.split('<title>')[1].split('</title>')[0]
prefix = 'StreamZZ.to '
if title.startswith(prefix):
return title[len(prefix):]
return ""