Fix AnimeSaturn + varie (#36)

* Refactor channel Fastsubita e fix channel Serie tv sub ita

* Channel Fastsubita fix serie tv list

* Channel Fastsubita fix serie tv list

* Channel Animesaturn fix and activated

* Channel Fastsubita fix remove duplicate episode

* Fix channel AnimeSaturn
Fix support.nextPage

* Fix support.nextPage

* Fix Cb01 newest

* Channel SerieHD banner & thumb
Improvements channel SerieTVU + banner & thumb
Improvements channel Serie Tv Sub Ita + banner & thumb
Improvements channel Fastsubita + banner & thumb
Add news sub ita in title if contentSerieName is valid
Fix tmdb overlap serch episode info
Fix get_season_and_episode for tv show like 9-1-1

* Fix get_season_and_episode for tv show like 9-1-1

* Channel Anime Saturn, change search and migrate to scrapertoolsV2
This commit is contained in:
4l3x87
2019-05-25 16:32:22 +02:00
committed by mac12m99
parent 459dc13a34
commit b2704088fa
20 changed files with 207 additions and 123 deletions
+83 -93
View File
@@ -8,10 +8,10 @@ import re
import urlparse import urlparse
import channelselector import channelselector
from core import httptools, tmdb, scrapertools, support from core import httptools, tmdb, support, scrapertools, jsontools
from core.item import Item from core.item import Item
from platformcode import logger, config from platformcode import logger, config
from specials import autoplay from specials import autoplay, autorenumber
__channel__ = "animesaturn" __channel__ = "animesaturn"
host = config.get_setting("channel_host", __channel__) host = config.get_setting("channel_host", __channel__)
@@ -22,45 +22,14 @@ list_language = IDIOMAS.values()
list_servers = ['openload','fembed'] list_servers = ['openload','fembed']
list_quality = ['default'] list_quality = ['default']
# checklinks = config.get_setting('checklinks', __channel__)
# checklinks_number = config.get_setting('checklinks_number', __channel__)
def mainlist(item): def mainlist(item):
support.log(item.channel + 'mainlist') support.log(item.channel + 'mainlist')
itemlist = [] itemlist = []
support.menu(itemlist, 'Anime bold', 'lista_anime', "%s/animelist?load_all=1" % host,'anime') support.menu(itemlist, 'Anime bold', 'lista_anime', "%s/animelist?load_all=1" % host)
itemlist.append( support.menu(itemlist, 'Novità submenu', 'ultimiep', "%s/fetch_pages.php?request=episodes" % host,'tvshow')
Item(channel=item.channel, support.menu(itemlist, 'Archivio A-Z submenu', 'list_az', '%s/animelist?load_all=1' % host,args=['tvshow','alfabetico'])
action="ultimiep", support.menu(itemlist, 'Cerca', 'search', host)
url="%s/fetch_pages.php?request=episodios" % host,
title=support.typo("Novità submenu"),
extra="",
contentType='anime',
folder=True,
thumbnail=support.thumb())
)
# itemlist.append(
# Item(channel=item.channel,
# action="lista_anime",
# url="%s/animeincorso" % host,
# title=support.typo("In corso submenu"),
# extra="anime",
# contentType='anime',
# folder=True,
# thumbnail=channelselector.get_thumb('on_the_air.png'))
# )
itemlist.append(
Item(channel=item.channel,
action="list_az",
url="%s/animelist?load_all=1" % host,
title=support.typo("Archivio A-Z submenu"),
extra="anime",
contentType='anime',
folder=True,
thumbnail=channelselector.get_thumb('channels_tvshow_az.png'))
)
support.menu(itemlist, 'Cerca', 'search', host,'anime')
autoplay.init(item.channel, list_servers, list_quality) autoplay.init(item.channel, list_servers, list_quality)
@@ -131,9 +100,14 @@ def lista_anime(item):
title += ' '+support.typo(' (ITA)') title += ' '+support.typo(' (ITA)')
infoLabels = {} infoLabels = {}
# if 'Akira' in title: if 'Akira' in title:
# movie = True movie = True
# infoLabels['year']= 1988 infoLabels['year']= 1988
if 'Dragon Ball Super Movie' in title:
movie = True
infoLabels['year'] = 2019
itemlist.append( itemlist.append(
Item(channel=item.channel, Item(channel=item.channel,
@@ -213,7 +187,7 @@ def episodios(item):
fanart=item.thumbnail, fanart=item.thumbnail,
thumbnail=item.thumbnail)) thumbnail=item.thumbnail))
if((len(itemlist) == 1 and 'Movie' in itemlist[0].title) or movie): if(((len(itemlist) == 1 and 'Movie' in itemlist[0].title) or movie) and item.contentType!='movie'):
item.url = itemlist[0].url item.url = itemlist[0].url
item.contentType = 'movie' item.contentType = 'movie'
return findvideos(item) return findvideos(item)
@@ -235,6 +209,7 @@ def findvideos(item):
if(item.contentType == 'movie'): if(item.contentType == 'movie'):
episodes = episodios(item) episodes = episodios(item)
if(len(episodes)>0): if(len(episodes)>0):
item.url = episodes[0].url item.url = episodes[0].url
@@ -245,23 +220,11 @@ def findvideos(item):
url = scrapertools.find_single_match(data, patron) url = scrapertools.find_single_match(data, patron)
data = httptools.downloadpage(url).data data = httptools.downloadpage(url).data
# patron = r"""<source\s*src=(?:"|')([^"']+?)(?:"|')\s*type=(?:"|')video/mp4(?:"|')>"""
# matches = re.compile(patron, re.DOTALL).findall(data)
# for video in matches:
# itemlist.append(
# Item(
# channel=item.channel,
# action="play",
# fulltitle=item.fulltitle,
# title="".join([item.title, ' ', support.typo(video.title, 'color kod []')]),
# url=video,
# contentType=item.contentType,
# folder=False))
itemlist = support.server(item, data=data) itemlist = support.server(item, data=data)
# itemlist = filtertools.get_links(itemlist, item, list_language)
if item.contentType == 'movie':
support.videolibrary(itemlist, item, 'color kod')
# Controlla se i link sono validi # Controlla se i link sono validi
# if checklinks: # if checklinks:
# itemlist = servertools.check_list_links(itemlist, checklinks_number) # itemlist = servertools.check_list_links(itemlist, checklinks_number)
@@ -279,16 +242,13 @@ def ultimiep(item):
logger.info(item.channel + "ultimiep") logger.info(item.channel + "ultimiep")
itemlist = [] itemlist = []
post = "page=%s" % item.extra if item.extra else None post = "page=%s" % item.args['page'] if item.args and item.args['page'] else None
logger.debug(post)
logger.debug(item.url)
data = httptools.downloadpage( data = httptools.downloadpage(
item.url, post=post, headers={ item.url, post=post, headers={
'X-Requested-With': 'XMLHttpRequest' 'X-Requested-With': 'XMLHttpRequest'
}).data }).data
logger.debug(data)
patron = r"""<a href='[^']+'><div class="locandina"><img alt="[^"]+" src="([^"]+)" title="[^"]+" class="grandezza"></div></a>\s*""" patron = r"""<a href='[^']+'><div class="locandina"><img alt="[^"]+" src="([^"]+)" title="[^"]+" class="grandezza"></div></a>\s*"""
patron += r"""<a href='([^']+)'><div class="testo">(.+?)</div></a>\s*""" patron += r"""<a href='([^']+)'><div class="testo">(.+?)</div></a>\s*"""
patron += r"""<a href='[^']+'><div class="testo2">(.+?)</div></a>""" patron += r"""<a href='[^']+'><div class="testo2">(.+?)</div></a>"""
@@ -298,6 +258,7 @@ def ultimiep(item):
scrapedtitle1 = cleantitle(scrapedtitle1) scrapedtitle1 = cleantitle(scrapedtitle1)
scrapedtitle2 = cleantitle(scrapedtitle2) scrapedtitle2 = cleantitle(scrapedtitle2)
scrapedtitle = scrapedtitle1 + ' - ' + scrapedtitle2 + '' scrapedtitle = scrapedtitle1 + ' - ' + scrapedtitle2 + ''
itemlist.append( itemlist.append(
Item(channel=item.channel, Item(channel=item.channel,
contentType="tvshow", contentType="tvshow",
@@ -313,16 +274,15 @@ def ultimiep(item):
# Pagine # Pagine
patronvideos = r'data-page="(\d+)" title="Next">Pagina Successiva' patronvideos = r'data-page="(\d+)" title="Next">Pagina Successiva'
next_page = scrapertools.find_single_match(data, patronvideos) next_page = scrapertools.find_single_match(data, patronvideos)
if next_page: if next_page:
itemlist.append( itemlist.append(
Item( Item(
channel=item.channel, channel=item.channel,
action="ultimiep", action="ultimiep",
title=support.typo(config.get_localized_string(30992), 'color kod bold'), title=support.typo(config.get_localized_string(30992), 'color kod bold'),
url=host + "/fetch_pages?request=episodios", url=item.url,
thumbnail= support.thumb(), thumbnail= support.thumb(),
extra=next_page, args={'page':next_page},
folder=True)) folder=True))
return itemlist return itemlist
@@ -362,42 +322,73 @@ def newest(categoria):
# ================================================================================================================ # ================================================================================================================
# ---------------------------------------------------------------------------------------------------------------- # ----------------------------------------------------------------------------------------------------------------
def search_anime(item): def search_anime(item, texto):
logger.info(item.channel + " search_anime") logger.info(item.channel + " search_anime: "+texto)
itemlist = [] itemlist = []
data = httptools.downloadpage(host + "/animelist?load_all=1").data # data = httptools.downloadpage(host + "/animelist?load_all=1").data
data = scrapertools.decodeHtmlentities(data) # data = scrapertools.decodeHtmlentities(data)
#
# texto = texto.lower().split('+')
#
# patron = r'<a href="([^"]+)"[^>]*?>[^>]*?>(.+?)<'
# matches = re.compile(patron, re.DOTALL).findall(data)
#
# for scrapedurl, scrapedtitle in [(scrapedurl, scrapedtitle)
# for scrapedurl, scrapedtitle in matches
# if all(t in scrapedtitle.lower()
# for t in texto)]:
#
# title = cleantitle(scrapedtitle).replace('(ita)','(ITA)')
# showtitle = title
# if '(ITA)' in title:
# title = title.replace('(ITA)','').strip()
# showtitle = title
# title += ' '+support.typo(' [ITA] color kod')
#
# itemlist.append(
# Item(
# channel=item.channel,
# contentType="episode",
# action="episodios",
# title=title,
# url=scrapedurl,
# fulltitle=title,
# show=showtitle,
# thumbnail=""))
#
# tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True)
texto = item.url.lower().split('+') data = httptools.downloadpage(host + "/index.php?search=1&key=%s" % texto).data
jsondata = jsontools.load(data)
patron = r'<a href="([^"]+)"[^>]*?>[^>]*?>(.+?)<' for title in jsondata:
matches = re.compile(patron, re.DOTALL).findall(data) data = str(httptools.downloadpage("%s/templates/header?check=1" % host, post="typeahead=%s" % title).data)
for scrapedurl, scrapedtitle in [(scrapedurl, scrapedtitle) if 'Anime non esistente' in data:
for scrapedurl, scrapedtitle in matches continue
if all(t in scrapedtitle.lower() else:
for t in texto)]: title = title.replace('(ita)','(ITA)')
title = cleantitle(scrapedtitle).replace('(ita)','(ITA)')
showtitle = title
if '(ITA)' in title:
title = title.replace('(ITA)','').strip()
showtitle = title showtitle = title
title += ' '+support.typo(' [ITA] color kod') if '(ITA)' in title:
title = title.replace('(ITA)', '').strip()
showtitle = title
title += ' ' + support.typo(' (ITA)')
itemlist.append( url = "%s/anime/%s" % (host, data)
Item( logger.debug(title)
channel=item.channel, logger.debug(url)
contentType="episode",
action="episodios",
title=title,
url=scrapedurl,
fulltitle=title,
show=showtitle,
thumbnail=""))
tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True) itemlist.append(
Item(
channel=item.channel,
contentType="episode",
action="episodios",
title=title,
url=url,
fulltitle=title,
show=showtitle,
thumbnail=""))
return itemlist return itemlist
@@ -408,10 +399,9 @@ def search_anime(item):
def search(item, texto): def search(item, texto):
logger.info(item.channel + " search") logger.info(item.channel + " search")
itemlist = [] itemlist = []
item.url = texto
try: try:
return search_anime(item) return search_anime(item, texto)
except: except:
import sys import sys
+1
View File
@@ -105,6 +105,7 @@ def newest(categoria):
findhost() findhost()
itemlist = [] itemlist = []
item = Item() item = Item()
item.contentType = 'movie'
item.url = host + '/lista-film-ultimi-100-film-aggiunti/' item.url = host + '/lista-film-ultimi-100-film-aggiunti/'
return support.scrape(item, r'<a href=([^>]+)>([^<([]+)(?:\[([A-Z]+)\])?\s\(([0-9]{4})\)<\/a>', return support.scrape(item, r'<a href=([^>]+)>([^<([]+)(?:\[([A-Z]+)\])?\s\(([0-9]{4})\)<\/a>',
['url', 'title', 'quality', 'year'], ['url', 'title', 'quality', 'year'],
+2 -2
View File
@@ -4,8 +4,8 @@
"language": ["ita"], "language": ["ita"],
"active": true, "active": true,
"adult": false, "adult": false,
"thumbnail": "http://fastsubita.com/wp-content/uploads/2017/10/Untitled-222255xxx.jpg", "thumbnail": "fastsubita.png",
"banner": "http://fastsubita.com/wp-content/uploads/2017/10/Untitled-222255xxx.jpg", "banner": "fastsubita.png",
"categories": ["tvshow", "vosi"], "categories": ["tvshow", "vosi"],
"settings": [ "settings": [
{ {
+14 -6
View File
@@ -6,7 +6,8 @@
import re import re
from core import scrapertools, httptools, tmdb import channelselector
from core import scrapertools, httptools, tmdb, support
from core.item import Item from core.item import Item
from platformcode import config, logger from platformcode import config, logger
from specials import autoplay from specials import autoplay
@@ -44,8 +45,8 @@ def mainlist(item):
support.menu(itemlist, 'Serie TV bold', 'lista_serie', host,'tvshow') support.menu(itemlist, 'Serie TV bold', 'lista_serie', host,'tvshow')
support.menu(itemlist, 'Novità submenu', 'pelicuals_tv', host,'tvshow') support.menu(itemlist, 'Novità submenu', 'pelicuals_tv', host,'tvshow')
support.menu(itemlist, 'Archivio A-Z submenu', 'list_az', host,'tvshow',args=['serie']) support.menu(itemlist, 'Archivio A-Z submenu', 'list_az', host,'tvshow',args=['serie'])
support.menu(itemlist, 'Cerca', 'search', host,'tvshow') support.menu(itemlist, 'Cerca', 'search', host,'tvshow')
autoplay.init(item.channel, list_servers, list_quality) autoplay.init(item.channel, list_servers, list_quality)
autoplay.show_option(item.channel, itemlist) autoplay.show_option(item.channel, itemlist)
@@ -113,24 +114,31 @@ def pelicuals_tv(item):
episode = scrapertools.find_multiple_matches(scrapedtitle, r'((\d*)x(\d*))')[0] episode = scrapertools.find_multiple_matches(scrapedtitle, r'((\d*)x(\d*))')[0]
scrapedtitle = scrapedtitle.replace(scraped_1, "") scrapedtitle = scrapedtitle.replace(scraped_1, "")
infoLabels = {}
infoLabels['season'] = episode[1]
infoLabels['episode'] = episode[2]
if "http:" in scrapedurl: if "http:" in scrapedurl:
scrapedurl = scrapedurl scrapedurl = scrapedurl
else: else:
scrapedurl = "http:" + scrapedurl scrapedurl = "http:" + scrapedurl
title = scraped_1+" - "+infoLabels['season']+"x"+infoLabels['episode']+" Sub-ITA"
itemlist.append( itemlist.append(
Item(channel=item.channel, Item(channel=item.channel,
action="findvideos", action="findvideos",
contentTpye="tvshow", contentTpye="tvshow",
title=scraped_1 + " " + scrapedtitle, title=title,
fulltitle=scraped_1 + " " + scrapedtitle, fulltitle=title,
url=scrapedurl, url=scrapedurl,
thumbnail=scrapedthumbnail, thumbnail=scrapedthumbnail,
plot=scrapedplot, plot=scrapedplot,
show=scraped_1, show=scraped_1,
extra=item.extra, extra=item.extra,
contentSerieName=scraped_1+" ("+episode[0]+" Sub-Ita)", contentSerieName=scraped_1,
contentLanguage='Sub-ITA',
infoLabels=infoLabels,
folder=True)) folder=True))
tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True) tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True)
@@ -380,7 +388,7 @@ def episodios(item,itemlist = []):
infoLabels = {} infoLabels = {}
infoLabels['season'] = season infoLabels['season'] = season
infoLabels['episode'] = episode[2] infoLabels['episode'] = episode[2]
title = infoLabels['season']+'x'+infoLabels['episode'] title = infoLabels['season']+'x'+infoLabels['episode']+" Sub-ITA"
if "http:" not in scrapedurl: if "http:" not in scrapedurl:
scrapedurl = "http:" + scrapedurl scrapedurl = "http:" + scrapedurl
+2 -2
View File
@@ -4,8 +4,8 @@
"active": true, "active": true,
"adult": false, "adult": false,
"language": ["ita"], "language": ["ita"],
"thumbnail": "https://raw.githubusercontent.com/Zanzibar82/images/master/posters/seriehd.png", "thumbnail": "seriehd.png",
"banner": "https://raw.githubusercontent.com/Zanzibar82/images/master/posters/seriehd.png", "banner": "seriehd.png",
"categories": ["tvshow"], "categories": ["tvshow"],
"settings": [ "settings": [
{ {
+2 -2
View File
@@ -4,8 +4,8 @@
"active": true, "active": true,
"adult": false, "adult": false,
"language": ["ita"], "language": ["ita"],
"thumbnail": "http://serietvsubita.xyz/wp-content/uploads/2012/07/logo.jpg", "thumbnail": "serietvsubita.png",
"banner": "http://serietvsubita.xyz/wp-content/uploads/2012/07/logo.jpg", "banner": "serietvsubita.png",
"categories": ["tvshow"], "categories": ["tvshow"],
"settings": [ "settings": [
{ {
+9 -5
View File
@@ -52,7 +52,7 @@ def mainlist(item):
# ---------------------------------------------------------------------------------------------------------------- # ----------------------------------------------------------------------------------------------------------------
def cleantitle(scrapedtitle): def cleantitle(scrapedtitle):
scrapedtitle = scrapertools.decodeHtmlentities(scrapedtitle.strip()) scrapedtitle = scrapertools.decodeHtmlentities(scrapedtitle.strip())
scrapedtitle = scrapedtitle.replace('[HD]', '').replace('', '\'').replace('×','x').replace('Game of Thrones ','') scrapedtitle = scrapedtitle.replace('[HD]', '').replace('', '\'').replace('×','x').replace('Game of Thrones ','').replace('In The Dark 2019','In The Dark (2019)').strip()
year = scrapertools.find_single_match(scrapedtitle, '\((\d{4})\)') year = scrapertools.find_single_match(scrapedtitle, '\((\d{4})\)')
if year: if year:
scrapedtitle = scrapedtitle.replace('(' + year + ')', '') scrapedtitle = scrapedtitle.replace('(' + year + ')', '')
@@ -195,7 +195,7 @@ def episodios(item, itemlist=[]):
infoLabels = {} infoLabels = {}
infoLabels['season'] = season infoLabels['season'] = season
infoLabels['episode'] = episode infoLabels['episode'] = episode
fullepisode+=' Sub-ITA'
itemlist.append( itemlist.append(
Item(channel=item.channel, Item(channel=item.channel,
extra=item.extra, extra=item.extra,
@@ -293,23 +293,27 @@ def peliculas_tv(item):
scrapedthumbnail = "" scrapedthumbnail = ""
scrapedplot = "" scrapedplot = ""
scrapedtitle = cleantitle(scrapedtitle) scrapedtitle = cleantitle(scrapedtitle)
infoLabels = {}
episode = scrapertools.find_multiple_matches(scrapedtitle, r'((\d*)x(\d*))')[0] episode = scrapertools.find_multiple_matches(scrapedtitle, r'((\d*)x(\d*))')[0]
title = scrapedtitle.split(" S0")[0].strip() title = scrapedtitle.split(" S0")[0].strip()
title = title.split(" S1")[0].strip() title = title.split(" S1")[0].strip()
title = title.split(" S2")[0].strip() title = title.split(" S2")[0].strip()
infoLabels['season'] = episode[1]
infoLabels['episode'] = episode[2]
itemlist.append( itemlist.append(
Item(channel=item.channel, Item(channel=item.channel,
action="findvideos", action="findvideos",
fulltitle=scrapedtitle, fulltitle=scrapedtitle,
show=scrapedtitle, show=scrapedtitle,
title=scrapedtitle, title=title+" - "+episode[0]+" Sub-ITA",
url=scrapedurl, url=scrapedurl,
thumbnail=scrapedthumbnail, thumbnail=scrapedthumbnail,
contentSerieName=title+" ("+episode[0]+" Sub-Ita)", contentSerieName=title,
contentLanguage='Sub-ITA',
plot=scrapedplot, plot=scrapedplot,
infoLabels=infoLabels,
folder=True)) folder=True))
tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True) tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True)
+2 -2
View File
@@ -4,8 +4,8 @@
"active": true, "active": true,
"adult": false, "adult": false,
"language": ["ita"], "language": ["ita"],
"thumbnail": "https://www.serietvu.club/wp-content/themes/gurarjbar/images/logo.png", "thumbnail": "serietvu.png",
"banner": "https://www.serietvu.club/wp-content/themes/gurarjbar/images/logo.png", "banner": "serietvu.png",
"categories": ["tvshow"], "categories": ["tvshow"],
"settings": [ "settings": [
{ {
+67 -8
View File
@@ -52,7 +52,7 @@ def mainlist(item):
# ---------------------------------------------------------------------------------------------------------------- # ----------------------------------------------------------------------------------------------------------------
def cleantitle(scrapedtitle): def cleantitle(scrapedtitle):
scrapedtitle = scrapertools.decodeHtmlentities(scrapedtitle.strip()) scrapedtitle = scrapertools.decodeHtmlentities(scrapedtitle.strip())
scrapedtitle = scrapedtitle.replace('[HD]', '').replace('', '\'').replace('Game of Thrones ','').replace('Flash 2014','Flash') scrapedtitle = scrapedtitle.replace('[HD]', '').replace('', '\'').replace(' Il Trono di Spade','').replace('Flash 2014','Flash')
year = scrapertools.find_single_match(scrapedtitle, '\((\d{4})\)') year = scrapertools.find_single_match(scrapedtitle, '\((\d{4})\)')
if year: if year:
scrapedtitle = scrapedtitle.replace('(' + year + ')', '') scrapedtitle = scrapedtitle.replace('(' + year + ')', '')
@@ -121,10 +121,14 @@ def episodios(item):
matches = re.compile(patron, re.DOTALL).findall(blocco) matches = re.compile(patron, re.DOTALL).findall(blocco)
for scrapedextra, scrapedurl, scrapedimg, scrapedtitle in matches: for scrapedextra, scrapedurl, scrapedimg, scrapedtitle in matches:
number = scrapertools.decodeHtmlentities(scrapedtitle.replace("Episodio", "")).strip() number = scrapertools.decodeHtmlentities(scrapedtitle.replace("Episodio", "")).strip()
title = value + "x" + number.zfill(2)
itemlist.append( itemlist.append(
Item(channel=item.channel, Item(channel=item.channel,
action="findvideos", action="findvideos",
title=value + "x" + number.zfill(2), title=title,
fulltitle=scrapedtitle, fulltitle=scrapedtitle,
contentType="episode", contentType="episode",
url=scrapedurl, url=scrapedurl,
@@ -145,6 +149,7 @@ def findvideos(item):
support.log(item.channel + " findvideos") support.log(item.channel + " findvideos")
itemlist = support.server(item, data=item.url) itemlist = support.server(item, data=item.url)
# itemlist = filtertools.get_links(itemlist, item, list_language) # itemlist = filtertools.get_links(itemlist, item, list_language)
# Controlla se i link sono validi # Controlla se i link sono validi
@@ -192,6 +197,45 @@ def findepisodevideo(item):
def latestep(item): def latestep(item):
support.log(item.channel + " latestep") support.log(item.channel + " latestep")
itemlist = [] itemlist = []
titles = []
#recupero gli episodi in home nella sezione Ultimi episodi aggiunti
data = httptools.downloadpage(host, headers=headers).data
block = scrapertools.find_single_match(data,r"Ultimi episodi aggiunti.*?<h2>")
regex = r'<a href="([^"]*)"\sdata-src="([^"]*)"\sclass="owl-lazy.*?".*?class="title">(.*?)<small>\((\d*?)x(\d*?)\s(Sub-Ita|Ita)'
matches = re.compile(regex, re.DOTALL).findall(block)
for scrapedurl, scrapedimg, scrapedtitle, scrapedseason, scrapedepisode, scrapedlanguage in matches:
infoLabels = {}
year = scrapertools.find_single_match(scrapedtitle, '\((\d{4})\)')
if year:
infoLabels['year'] = year
infoLabels['episode'] = scrapedepisode
infoLabels['season'] = scrapedseason
episode = scrapedseason+"x"+scrapedepisode
scrapedtitle = cleantitle(scrapedtitle)
title = scrapedtitle+" - "+episode
contentlanguage = ""
if scrapedlanguage.strip().lower() != 'ita':
title +=" Sub-ITA"
contentlanguage = 'Sub-ITA'
titles.append(title)
itemlist.append(
Item(channel=item.channel,
action="findepisodevideo",
title=title,
fulltitle=title,
url=scrapedurl,
extra=[[scrapedseason,scrapedepisode]],
thumbnail=scrapedimg,
contentSerieName=scrapedtitle,
contentLanguage=contentlanguage,
contentType='episode',
infoLabels=infoLabels,
folder=True))
data = httptools.downloadpage(item.url, headers=headers).data data = httptools.downloadpage(item.url, headers=headers).data
@@ -209,23 +253,38 @@ def latestep(item):
infoLabels['tvshowtitle'] = scrapedtitle infoLabels['tvshowtitle'] = scrapedtitle
episodio = re.compile(r'(\d+)x(\d+)', re.DOTALL).findall(scrapedinfo) episodio = re.compile(r'(\d+)x(\d+)', re.DOTALL).findall(scrapedinfo)
title = "%s %s" % (scrapedtitle, scrapedinfo) infoLabels['episode'] = episodio[0][1]
infoLabels['season'] = episodio[0][0]
episode = infoLabels['season'] + "x" + infoLabels['episode']
title = "%s - %s" % (scrapedtitle, episode)
title = title.strip()
contentlanguage = ""
if 'sub-ita' in scrapedinfo.lower():
title+=" Sub-ITA"
contentlanguage = 'Sub-ITA'
if title in titles: continue
itemlist.append( itemlist.append(
Item(channel=item.channel, Item(channel=item.channel,
action="findepisodevideo", action="findepisodevideo",
title=title, title=title,
fulltitle=scrapedtitle, fulltitle=title,
url=scrapedurl, url=scrapedurl,
extra=episodio, extra=episodio,
thumbnail=scrapedimg, thumbnail=scrapedimg,
show=scrapedtitle, contentSerieName=scrapedtitle,
contentTitle=scrapedtitle, contentLanguage=contentlanguage,
contentSerieName=title,
infoLabels=infoLabels, infoLabels=infoLabels,
contentType='episode',
folder=True)) folder=True))
tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True) tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True)
# logger.debug("".join(map(str,itemlist)))
return itemlist return itemlist
@@ -290,7 +349,7 @@ def categorie(item):
Item(channel=item.channel, Item(channel=item.channel,
action="lista_serie", action="lista_serie",
title=scrapedtitle, title=scrapedtitle,
contentType="tv", contentType="tvshow",
url="%s%s" % (host, scrapedurl), url="%s%s" % (host, scrapedurl),
thumbnail=item.thumbnail, thumbnail=item.thumbnail,
folder=True)) folder=True))
+5 -1
View File
@@ -365,6 +365,9 @@ def get_season_and_episode(title):
@return: Numero de temporada y episodio en formato "1x01" o cadena vacia si no se han encontrado @return: Numero de temporada y episodio en formato "1x01" o cadena vacia si no se han encontrado
""" """
filename = "" filename = ""
# 4l3x87 - fix for series example 9-1-1
original_title = title
title = title.replace('9-1-1','')
patrons = ["(\d+)\s*[x-]\s*(\d+)", "(\d+)\s*×\s*(\d+)", "(?:s|t)(\d+)e(\d+)", patrons = ["(\d+)\s*[x-]\s*(\d+)", "(\d+)\s*×\s*(\d+)", "(?:s|t)(\d+)e(\d+)",
"(?:season|temp|stagione\w*)\s*(\d+)\s*(?:capitulo|epi|episode|episodio\w*)\s*(\d+)"] "(?:season|temp|stagione\w*)\s*(\d+)\s*(?:capitulo|epi|episode|episodio\w*)\s*(\d+)"]
@@ -372,6 +375,7 @@ def get_season_and_episode(title):
for patron in patrons: for patron in patrons:
try: try:
matches = re.compile(patron, re.I).search(title) matches = re.compile(patron, re.I).search(title)
if matches: if matches:
if len(matches.group(1)) == 1: if len(matches.group(1)) == 1:
filename = matches.group(1) + "x" + matches.group(2).zfill(2) filename = matches.group(1) + "x" + matches.group(2).zfill(2)
@@ -381,6 +385,6 @@ def get_season_and_episode(title):
except: except:
pass pass
logger.info("'" + title + "' -> '" + filename + "'") logger.info("'" + original_title + "' -> '" + filename + "'")
return filename return filename
+16 -2
View File
@@ -324,8 +324,9 @@ def set_infoLabels_item(item, seekTmdb=True, idioma_busqueda=def_lang, lock=None
__leer_datos(otmdb_global) __leer_datos(otmdb_global)
if lock and lock.locked(): # 4l3x87 - fix for overlap infoLabels if there is episode or season
lock.release() # if lock and lock.locked():
# lock.release()
if item.infoLabels['episode']: if item.infoLabels['episode']:
try: try:
@@ -354,6 +355,10 @@ def set_infoLabels_item(item, seekTmdb=True, idioma_busqueda=def_lang, lock=None
item.infoLabels['rating'] = episodio['episodio_vote_average'] item.infoLabels['rating'] = episodio['episodio_vote_average']
item.infoLabels['votes'] = episodio['episodio_vote_count'] item.infoLabels['votes'] = episodio['episodio_vote_count']
# 4l3x87 - fix for overlap infoLabels if there is episode or season
if lock and lock.locked():
lock.release()
return len(item.infoLabels) return len(item.infoLabels)
else: else:
@@ -374,8 +379,17 @@ def set_infoLabels_item(item, seekTmdb=True, idioma_busqueda=def_lang, lock=None
if temporada['poster_path']: if temporada['poster_path']:
item.infoLabels['poster_path'] = 'http://image.tmdb.org/t/p/original' + temporada['poster_path'] item.infoLabels['poster_path'] = 'http://image.tmdb.org/t/p/original' + temporada['poster_path']
item.thumbnail = item.infoLabels['poster_path'] item.thumbnail = item.infoLabels['poster_path']
# 4l3x87 - fix for overlap infoLabels if there is episode or season
if lock and lock.locked():
lock.release()
return len(item.infoLabels) return len(item.infoLabels)
# 4l3x87 - fix for overlap infoLabels if there is episode or season
if lock and lock.locked():
lock.release()
# Buscar... # Buscar...
else: else:
otmdb = copy.copy(otmdb_global) otmdb = copy.copy(otmdb_global)
Binary file not shown.

After

Width:  |  Height:  |  Size: 113 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

+4
View File
@@ -396,6 +396,10 @@ def get_title(item):
if not item.contentSeason: if not item.contentSeason:
item.contentSeason = '1' item.contentSeason = '1'
title = "%s - %sx%s" % (title, item.contentSeason, str(item.contentEpisodeNumber).zfill(2)) title = "%s - %sx%s" % (title, item.contentSeason, str(item.contentEpisodeNumber).zfill(2))
#4l3x87 - fix to add Sub-ITA in newest
if item.contentLanguage:
title+=" "+item.contentLanguage
elif item.contentTitle: # Si es una pelicula con el canal adaptado elif item.contentTitle: # Si es una pelicula con el canal adaptado
title = item.contentTitle title = item.contentTitle