toonitalia: fix channel

This commit is contained in:
ilmich
2024-03-17 19:47:43 +01:00
parent 690d35bd03
commit c3c944e22f
3 changed files with 28 additions and 24 deletions

View File

@@ -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'<li><a href="(?P<url>[^"]+)">(?P<title>[^<]+)'
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+)(?:&#215;|x|×))?(?P<episode>\d+)(?:\s+&#8211;\s+)?[ ]+(?P<title2>[^<]+)[ ]+<a (?P<data>.*?)(?:<br|</p)'
item.contentType = 'tvshow'
patron = r'>\s*(?:(?P<season>\d+)(?:&#215;|x|×))?(?P<episode>\d+)(?:\s+&#8211;\s+)?[ ]+(?P<title>[^<]+)[ ]+<a (?P<data>.*?)(?:<br|</p)'
return locals()

View File

@@ -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

View File

@@ -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)