From aa6427ff64d908d39534f393ea2325aa550a8184 Mon Sep 17 00:00:00 2001 From: Alhaziel Date: Fri, 20 Dec 2019 20:05:22 +0100 Subject: [PATCH] Fix Cinemalibero --- channels/cinemalibero.py | 86 ++++++++++++++++++++++++++++++---------- core/support.py | 8 ++-- 2 files changed, 70 insertions(+), 24 deletions(-) diff --git a/channels/cinemalibero.py b/channels/cinemalibero.py index 5bb7ebcd..df6ede32 100644 --- a/channels/cinemalibero.py +++ b/channels/cinemalibero.py @@ -39,8 +39,7 @@ def mainlist(item): tvshow = ['/category/serie-tv/' ] -## Anime = [(support.typo('Anime', 'bullet bold'),['/category/anime-giapponesi/', 'peliculas', 'anime', 'tvshow']) -## ] + anime = ['/category/anime-giapponesi/'] ## Sport = [(support.typo('Sport', 'bullet bold'), ['/category/sport/', 'peliculas', 'sport', 'tvshow']) ## ] @@ -53,7 +52,7 @@ def mainlist(item): @support.scrape def peliculas(item): - + action = 'check' patronBlock = r'
.*?class="col-md-12[^"]*?">(?P.*?)
' if item.args == 'newest': patron = r'
[^>]+>[^>]+>\s[^\)]+)\)">[^>]+>(?P[^<]+)<[^>]+>[^>]+>(?:[^>]+>)?\s?(?P<rating>[\d\.]+)?[^>]+>.+?(?:[ ]\((?P<year>\d{4})\))?<[^>]+>[^>]+>(.?[\d\-x]+\s\(?(?P<lang>[sSuUbBiItTaA\-]+)?\)?\s?(?P<quality>[\w]+)?[|]?\s?(?:[fFiInNeE]+)?\s?\(?(?P<lang2>[sSuUbBiItTaA\-]+)?\)?)?' @@ -64,19 +63,23 @@ def peliculas(item): patronBlock = r'<section id="slider">(?P<block>.*?)</section>' patron = r'<a href="(?P<url>(?:https:\/\/.+?\/(?P<title>[^\/]+[a-zA-Z0-9\-]+)(?P<year>\d{4})))/".+?url\((?P<thumb>[^\)]+)\)">' elif item.contentType == 'tvshow': - action = 'episodios' - patron = r'<a href="(?P<url>[^"]+)".+?url\((?P<thumb>[^\)]+)\)">[^>]+>[^>]+>[^>]+>(?:[^>]+>)?\s?(?P<rating>[\d\.]+)?[^>]+>(?P<title>.+?)(?:[ ]\((?P<year>\d{4})\))?<[^>]+>[^>]+>(.?[\d\-x]+\s\(?(?P<lang>[sSuUbBiItTaA\-]+)?\)?\s?(?P<quality>[\w]+)?[|]?\s?(?:[fFiInNeE]+)?\s?\(?(?P<lang2>[sSuUbBiItTaA\-]+)?\)?)?' - if item.args == 'anime': - anime = True - patron = r'<div class="col-lg-3">[^>]+>[^>]+>\s<a href="(?P<url>[^"]+)".+?url\((?P<thumb>[^\)]+)\)">[^>]+>[^>]+>[^>]+>\s?(?P<rating>[\d\.]+)?[^>]+>[^>]+>(?P<title>.+?)\(?(?P<year>\d+)?\)?<[^>]+>[^>]+>(?:.+?[^fFiInNeE]+?\(?(?P<lang>[sSuUbBiItTaA]+)\)?.+?)<' - elif item.args == 'update': + # patron = r'<a href="(?P<url>[^"]+)".+?url\((?P<thumb>[^\)]+)\)">[^>]+>[^>]+>[^>]+>(?:[^>]+>)?\s?(?P<rating>[\d\.]+)?[^>]+>(?P<title>.+?)(?:[ ]\((?P<year>\d{4})\))?<[^>]+>[^>]+>(.?[\d\-x]+\s\(?(?P<lang>[sSuUbBiItTaA\-]+)?\)?\s?(?P<quality>[\w]+)?[|]?\s?(?:[fFiInNeE]+)?\s?\(?(?P<lang2>[sSuUbBiItTaA\-]+)?\)?)?' + # if item.args == 'anime': + # anime = True + # patron = r'<div class="col-lg-3">[^>]+>[^>]+>\s<a href="(?P<url>[^"]+)".+?url\((?P<thumb>[^\)]+)\)">[^>]+>[^>]+>[^>]+>\s?(?P<rating>[\d\.]+)?[^>]+>[^>]+>(?P<title>.+?)\(?(?P<year>\d+)?\)?<[^>]+>[^>]+>(?:.+?[^fFiInNeE]+?\(?(?P<lang>[sSuUbBiItTaA]+)\)?.+?)<' + if item.args == 'update': patron = r'<a href="(?P<url>[^"]+)".+?url\((?P<thumb>.+?)\)">\s<div class="titolo">(?P<title>.+?)(?: – Serie TV)?(?:\([sSuUbBiItTaA\-]+\))?[ ]?(?P<year>\d{4})?</div>[ ]<div class="genere">(?:[\w]+?\.?\s?[\s|S]?[\dx\-S]+?\s\(?(?P<lang>[iItTaA]+|[sSuUbBiItTaA\-]+)\)?\s?(?P<quality>[HD]+)?|.+?\(?(?P<lang2>[sSuUbBiItTaA\-]+)?\)?</div>)' pagination = 25 + else: + patron = r'<a href="(?P<url>[^"]+)"\s*title="(?P<title>[^"\(]+)(?:"|\()(?:(?P<year>\d+)[^"]+)?.*?url\((?P<thumb>[^\)]+)\)(?:.*?<div class="voto">[^>]+>[^>]+>\s*(?P<rating>[^<]+))?.*?<div class="titolo">[^>]+>(?:<div class="genere">[^ ]*(?:\s\d+)?\s*(?:\()?(?P<lang>[^\)< ]+))?' else: #search patron = r'<div class="col-lg-3">[^>]+>[^>]+>\s<a href="(?P<url>[^"]+)".+?url\((?P<thumb>[^\)]+)\)">[^>]+>[^>]+>[^>]+>(?:[^>]+>)?\s?(?P<rating>[\d\.]+)?[^>]+>(?P<title>.+?)(?:[ ]\((?P<year>\d{4})\))?<[^>]+>[^>]+>(.?[\d\-x]+\s\(?(?P<lang>[sSuUbBiItTaA\-]+)?\)?\s?(?P<quality>[\w]+)?[|]?\s?(?:[fFiInNeE]+)?\s?\(?(?P<lang2>[sSuUbBiItTaA\-]+)?\)?)?' def itemHook(item): + if 'sub' in item.contentLanguage.lower(): + item.contentLanguage= 'Sub-ITA' + item.title = re.sub('[Ss]ub(?:-)?', item.contentLanguage, item.title) if item.lang2: if len(item.lang2)<3: item.lang2 = 'ITA' @@ -93,19 +96,28 @@ def peliculas(item): @support.scrape def episodios(item): + data=item.data + # debug = True + support.log('EPISODIOS DATA',data) if item.args == 'anime': support.log("Anime :", item) - blacklist = ['Clipwatching', 'Verystream', 'Easybytez', 'Flix555', 'Cloudvideo'] - patron = r'(Stagione (?P<season>\d+))?.+?<a target=(?P<url>[^>]+>(?P<title>.+?(?P<episode>\d+)))(?:[:]?.+?)(?:</a></p>|</a><br />)' - patronBlock = r'Stagione (?P<season>\d+)</span><br />(?P<block>.*?)(?:<div style="margin-left:|<span class="txt_dow">)' + # blacklist = ['Clipwatching', 'Verystream', 'Easybytez', 'Flix555', 'Cloudvideo'] + 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">)' item.contentType = 'tvshow' - item.contentSerieName = item.fulltitle + # item.contentSerieName = item.fulltitle else:# item.extra == 'serie': + # debug = True support.log("Serie :", item) patron = r'(?P<episode>\d+(?:×|×)?\d+\-\d+|\d+(?:×|×)\d+)[;]?[ ]?(?:(?P<title>[^<]+)(?P<url>.*?)|(\2[ ])(?:<(\3.*?)))(?:</a><br />|</a></p>)' - patronBlock = r'<p><strong>(?P<block>(?:.+?[Ss]tagione.+?(?P<lang>iTA|ITA|Sub-ITA|Sub-iTA))?(?:|.+?|</strong>)(/?:</span>)?</p>.*?</p>)' + patronBlock = r'<p><strong>(?:.+?[Ss]tagione\s)?(?:(?P<lang>iTA|ITA|Sub-ITA|Sub-iTA))?.*?</strong>(?P<block>.+?)(?:</span|</p)' item.contentType = 'tvshow' - item.contentSerieName = item.fulltitle + # item.contentSerieName = item.fulltitle + def itemHook(item): + # support.dbg() + if not scrapertoolsV2.find_single_match(item.title, r'(\d+x\d+)'): + item.title = re.sub(r'(\d+) -', '1x\\1', item.title) + return item return locals() @@ -115,7 +127,7 @@ def genres(item): action='peliculas' patron_block=r'<div id="bordobar" class="dropdown-menu(?P<block>.*?)</li>' - patron=r'<a class="dropdown-item" href="(?P<url>[^"]+)" title="(?P<title>[A-z]+)"' + patronMenu=r'<a class="dropdown-item" href="(?P<url>[^"]+)" title="(?P<title>[A-z]+)"' return locals() @@ -124,7 +136,7 @@ def search(item, texto): support.log(item.url,texto) text = texto.replace(' ', '+') item.url = host + "/?s=" + texto - item.contentType = 'episode' + item.contentType = 'tv' item.args = 'search' try: return peliculas(item) @@ -162,9 +174,41 @@ def newest(categoria): return itemlist +def check(item): + data = httptools.downloadpage(item.url, headers=headers).data + # support.log('cinemalibero DATA=',data) + if data: + genere = scrapertoolsV2.find_single_match(data, r'rel="category tag">([a-zA-Z0-9]+).+?<') + blockAnime = scrapertoolsV2.find_single_match(data, r'<div id="container" class="container">(.+?<div style="margin-left)') + support.log('GENRE',genere) + + if blockAnime: + support.log('È un ANIME') + if 'episodio' in blockAnime.lower() or 'saga' in blockAnime.lower(): + item.contentType = 'tvshow' + item.args = 'anime' + item.data = blockAnime + return episodios(item) + elif scrapertoolsV2.find_single_match(blockAnime,r'\d+(?:×|×)?\d+\-\d+|\d+(?:×|×)\d+'): + item.contentType = 'tvshow' + item.data = blockAnime + return episodios(item) + else: + support.log('È un ANIME FILM') + item.contentType = 'movie' + item.url = data + return findvideos(item) + if genere.lower() == 'serie': + item.contentType = 'tvshow' + item.data = data + return episodios(item) + else: + support.log('È un FILM') + item.contentType = 'movie' + item.url = data + return findvideos(item) + def findvideos(item): support.log('findvideos ->', item) - if item.contentType == 'movie' and item.args != 'anime': - return support.server(item) - else: - return support.server(item, data= item.url) + item.url = item.url.replace('http://rapidcrypt.net/verys/', '').replace('http://rapidcrypt.net/open/', '') #blocca la ricerca + return support.server(item, data= item.url) diff --git a/core/support.py b/core/support.py index 174f8950..54941b8c 100755 --- a/core/support.py +++ b/core/support.py @@ -165,7 +165,6 @@ def scrapeLang(scraped, lang, longtitle): if not language: language = lang if language: longtitle += typo(language, '_ [] color kod') - return language, longtitle def cleantitle(title): @@ -221,8 +220,8 @@ def scrapeBlock(item, args, block, patron, headers, action, pagination, debug, t if scraped['season']: stagione = scraped['season'] episode = scraped['season'] +'x'+ scraped['episode'] - elif stagione: - episode = stagione +'x'+ scraped['episode'] + elif item.season: + episode = item.season +'x'+ scraped['episode'] elif item.contentType == 'tvshow' and (scraped['episode'] == '' and scraped['season'] == '' and stagione == ''): item.news = 'season_completed' episode = '' @@ -389,6 +388,9 @@ def scrape(func): blocks = scrapertoolsV2.find_multiple_matches_groups(data, patronBlock) block = "" for bl in blocks: + # log(len(blocks),bl) + if 'season' in bl and bl['season']: + item.season = bl['season'] blockItemlist, blockMatches = scrapeBlock(item, args, bl['block'], patron, headers, action, pagination, debug, typeContentDict, typeActionDict, blacklist, search, pag, function, lang) for it in blockItemlist: