diff --git a/channels/toonitalia.py b/channels/toonitalia.py index e8937a08..fdfd8c41 100644 --- a/channels/toonitalia.py +++ b/channels/toonitalia.py @@ -3,8 +3,7 @@ # Canale per ToonItalia # ------------------------------------------------------------ -from core import httptools, scrapertools, support -import inspect +from core import scrapertools, support host = support.config.get_channel_url() headers = [['Referer', host]] @@ -12,20 +11,19 @@ headers = [['Referer', host]] @support.menu def mainlist(item): - - anime =['/category/anime', - ('ITA',['/lista-anime-ita','peliculas',]), - ('Sub-ITA',['/lista-anime-sub-ita', 'peliculas'])] - # ('Film Animati',['/lista-anime-ita','peliculas', '', 'movie'])] + menu = [('Anime',['/category/anime', 'peliculas', '', 'undefined']), + ('Anime ITA {submenu}',['/anime-ita', 'peliculas', 'list', 'undefined']), + ('Anime Sub-ITA {submenu}',['/contatti', 'peliculas', 'list', 'undefined']), + ('Film Animazione',['/film-animazione', 'peliculas', 'list', 'undefined']), + ('Serie TV',['/serie-tv/', 'peliculas', 'list', 'tvshow'])] search = '' return locals() def search(item, text): - support.info(text) - # item.args='search' - item.text = text - item.url = item.url + '/?a=b&s=' + text.replace(' ', '+') + item.contentType = 'undefined' + item.url = "{}/?{}".format(host, support.urlencode({"s": text})) + support.info(item.url) try: return peliculas(item) @@ -44,16 +42,14 @@ def peliculas(item): action = 'check' deflang = 'ITA' if 'sub' not in item.url else 'Sub-ITA' - if 'lista' in item.url: + if item.args == 'list': pagination = 20 patron = r'
  • (?P[^<]+)' else: - patronBlock = '<main[^>]+>(?P<block>.*)</main>' - patron = r'(?i)<a href="(?P<url>[^"]+)" rel="bookmark">(?P<title>[^<]+)</a>(:?[^>]+>){3}(?:<img.*?src="(?P<thumb>[^"]+)")?.*?<p>(?P<plot>[^<]+)</p>.*?tag">.*?(?P<type>(?:film|serie|anime))(?P<cat>.*?)</span>' - typeContentDict={'movie':['film']} - typeActionDict={'findvideos':['film']} - patronNext = '<a class="next page-numbers" href="([^"]+)">' + patronBlock = r'<main[^>]+>(?P<block>.*)</main>' + patron = r'class="entry-title[^>]+><a href="(?P<url>[^"]+)">(?P<title>[^<]+)</a>.*?<p>(?P<plot>[^<]+)' + patronNext = r'<a class="next page-numbers" href="([^"]+)">' def itemHook(item): support.info(item.title) @@ -74,7 +70,8 @@ def check(item): @support.scrape def episodios(item): anime = True - patron = r'>\s*(?:(?P<season>\d+)(?:×|x|×))?(?P<episode>\d+)(?:\s+–\s+)?[ –]+(?P<title2>[^<]+)[ –]+<a (?P<data>.*?)(?:<br|</p)' + item.contentType = 'tvshow' + patron = r'>\s*(?:(?P<season>\d+)(?:×|x|×))?(?P<episode>\d+)(?:\s+–\s+)?[ –]+(?P<title>[^<]+)[ –]+<a (?P<data>.*?)(?:<br|</p)' return locals() diff --git a/lib/unshortenit.py b/lib/unshortenit.py index a7ff6d90..5937e4d6 100644 --- a/lib/unshortenit.py +++ b/lib/unshortenit.py @@ -709,7 +709,7 @@ class UnshortenIt(object): return httptools.downloadpage(uri, only_headers=True, follow_redirects=False).headers.get('location', uri), 200 def _unshorten_uprot(self, uri): - html = httptools.downloadpage(uri, cloudscraper=True).data + html = httptools.downloadpage(uri, cloudscraper=False).data link = scrapertools.find_single_match(html, r'--></button></[a|div]?>.+?<a[^>]+href="([^"]+)">') if link != uri: return link, 200 diff --git a/platformcode/platformtools.py b/platformcode/platformtools.py index e8b4344b..a1c0a5f1 100644 --- a/platformcode/platformtools.py +++ b/platformcode/platformtools.py @@ -340,7 +340,11 @@ def render_items(itemlist, parent_item): def setItem(n, item, parent_item): item.itemlistPosition = n item_url = item.tourl() - + if item.thumbnail == parent_item.thumbnail and parent_item.action in ['peliculas', 'search']: + if item.contentType in ['movie', 'undefined']: + item.thumbnail = 'https://raw.githubusercontent.com/kodiondemand/media/master/null/movie.png' + else: + item.thumbnail = 'https://raw.githubusercontent.com/kodiondemand/media/master/null/tv.png' if item.category == "": item.category = parent_item.category # If there is no action or it is findvideos / play, folder = False because no listing will be returned @@ -484,7 +488,7 @@ def getCurrentView(item=None, parent_item=None): elif item.contentType == 'music': return 'musicvideo', 'musicvideos' - elif (item.contentType in ['movie'] and parent_item.action in parent_actions) \ + elif (item.contentType in ['movie', 'undefined'] and parent_item.action in parent_actions) \ or (item.channel in ['videolibrary'] and parent_item.action in ['list_movies']) \ or (parent_item.channel in ['favorites'] and parent_item.action in ['mainlist']) \ or parent_item.action in ['now_on_tv', 'now_on_misc', 'now_on_misc_film', 'mostrar_perfil', 'live', 'replay', 'news']: @@ -1658,7 +1662,7 @@ def resume_playback(played_time): if played_time and played_time > 30: - if config.get_setting('resume_menu') == 0: + if config.get_setting('resume_menu') == 0: # Resume Menu matches Custom Theme Dialog = ResumePlayback('ResumePlayback.xml', config.get_runtime_path(), played_time=played_time) Dialog.show() t = 0 @@ -1666,7 +1670,7 @@ def resume_playback(played_time): t += 1 xbmc.sleep(100) if not Dialog.Resume: played_time = 0 - else: + else: # Resume Menu matches Skin Theme m, s = divmod(played_time, 60) h, m = divmod(m, 60) idx = xbmcgui.Dialog().contextmenu( @@ -1674,7 +1678,10 @@ def resume_playback(played_time): xbmc.getLocalizedString(12022).format('%02d:%02d:%02d' % (h, m, s)), xbmc.getLocalizedString(12021) ]) - if idx in [-1, 0]: played_time = 0 + # if the dialog is skipped (idx == -1) + # or the second item is selected (idx == 1) + # resume from the beginning + if idx in [-1, 1]: played_time = 0 else: played_time = 0 xbmc.sleep(300)