Files
addon/specials/filmontv.py
2021-09-18 18:59:00 +02:00

276 lines
12 KiB
Python

# -*- coding: utf-8 -*-
# ------------------------------------------------------------
# Canale film in tv
# ------------------------------------------------------------
import re
try:
import urllib.parse as urllib
except ImportError:
import urllib
from core import httptools, scrapertools, support, tmdb, filetools
from core.item import Item
from platformcode import logger, config, platformtools
host = "https://www.superguidatv.it"
TIMEOUT_TOTAL = 60
def mainlist(item):
logger.debug(" mainlist")
itemlist = [#Item(channel="search", action='discover_list', title=config.get_localized_string(70309),
#search_type='list', list_type='movie/now_playing',
# thumbnail=get_thumb("now_playing.png")),
#Item(channel="search", action='discover_list', title=config.get_localized_string(70312),
# search_type='list', list_type='tv/on_the_air', thumbnail=get_thumb("on_the_air.png")),
Item(title=support.typo('Canali live', 'bold'),
channel=item.channel,
action='live',
thumbnail=support.thumb('tvshow_on_the_air')),
Item(channel=item.channel,
title=config.get_setting("film1", channel="filmontv"),
action="now_on_tv",
url="%s/film-in-tv/" % host,
thumbnail=item.thumbnail),
Item(channel=item.channel,
title=config.get_setting("film2", channel="filmontv"),
action="now_on_tv",
url="%s/film-in-tv/oggi/premium/" % host,
thumbnail=item.thumbnail),
Item(channel=item.channel,
title=config.get_setting("film3", channel="filmontv"),
action="now_on_tv",
url="%s/film-in-tv/oggi/sky-intrattenimento/" % host,
thumbnail=item.thumbnail),
Item(channel=item.channel,
title=config.get_setting("film4", channel="filmontv"),
action="now_on_tv",
url="%s/film-in-tv/oggi/sky-cinema/" % host,
thumbnail=item.thumbnail),
Item(channel=item.channel,
title=config.get_setting("film5", channel="filmontv"),
action="now_on_tv",
url="%s/film-in-tv/oggi/sky-primafila/" % host,
thumbnail=item.thumbnail),
Item(channel=item.channel,
title=config.get_setting("now1", channel="filmontv"),
action="now_on_misc",
url="%s/ora-in-onda/" % host,
thumbnail=item.thumbnail),
Item(channel=item.channel,
title=config.get_setting("now2", channel="filmontv"),
action="now_on_misc",
url="%s/ora-in-onda/premium/" % host,
thumbnail=item.thumbnail),
Item(channel=item.channel,
title=config.get_setting("now3", channel="filmontv"),
action="now_on_misc",
url="%s/ora-in-onda/sky-intrattenimento/" % host,
thumbnail=item.thumbnail),
Item(channel=item.channel,
title=config.get_setting("now4", channel="filmontv"),
action="now_on_misc",
url="%s/ora-in-onda/sky-doc-e-lifestyle/" % host,
thumbnail=item.thumbnail),
Item(channel=item.channel,
title=config.get_setting("now5", channel="filmontv"),
action="now_on_misc_film",
url="%s/ora-in-onda/sky-cinema/" % host,
thumbnail=item.thumbnail),
Item(channel=item.channel,
title="Personalizza Oggi in TV",
action="server_config",
config="filmontv",
folder=False,
thumbnail=item.thumbnail)]
return itemlist
def server_config(item):
return platformtools.show_channel_settings(channelpath=filetools.join(config.get_runtime_path(), "specials", item.config))
def now_on_misc_film(item):
logger.debug("filmontv tvoggi")
itemlist = []
# Carica la pagina
data = httptools.downloadpage(item.url).data
#patron = r'spanTitleMovie">([A-Za-z À-ÖØ-öø-ÿ\-\']*)[a-z \n<>\/="_\-:0-9;A-Z.]*GenresMovie">([\-\'A-Za-z À-ÖØ-öø-ÿ\/]*)[a-z \n<>\/="_\-:0-9;A-Z.%]*src="([a-zA-Z:\/\.0-9?]*)[a-z \n<>\/="_\-:0-9;A-Z.%\-\']*Year">([A-Z 0-9a-z]*)'
patron = r'table-cell[;" ]*alt="([^"]+)".*?backdrop" alt="([^"]+)"[ ]*src="([^"]+)'
matches = re.compile(patron, re.DOTALL).findall(data)
for scrapedchannel, scrapedtitle, scrapedthumbnail in matches:
# for scrapedthumbnail, scrapedtitle, scrapedtv in matches:
scrapedurl = ""
scrapedtitle = scrapertools.decodeHtmlentities(scrapedtitle).strip()
infoLabels = {}
#infoLabels["year"] = ""
infoLabels['title'] = "movie"
itemlist.append(
Item(channel=item.channel,
action="new_search",
extra=urllib.quote_plus(scrapedtitle) + '{}' + 'movie',
title="[B]" + scrapedtitle + "[/B] - " + scrapedchannel,
fulltitle=scrapedtitle,
mode='all',
search_text=scrapedtitle,
url=scrapedurl,
thumbnail=scrapedthumbnail.replace("?width=320", "?width=640"),
contentTitle=scrapedtitle,
contentType='movie',
infoLabels=infoLabels,
folder=True))
tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True)
return itemlist
def now_on_misc(item):
logger.debug("filmontv tvoggi")
itemlist = []
# Carica la pagina
data = httptools.downloadpage(item.url).data
#patron = r'spanTitleMovie">([A-Za-z À-ÖØ-öø-ÿ\-\']*)[a-z \n<>\/="_\-:0-9;A-Z.]*GenresMovie">([\-\'A-Za-z À-ÖØ-öø-ÿ\/]*)[a-z \n<>\/="_\-:0-9;A-Z.%]*src="([a-zA-Z:\/\.0-9?]*)[a-z \n<>\/="_\-:0-9;A-Z.%\-\']*Year">([A-Z 0-9a-z]*)'
patron = r'table-cell[;" ]*alt="([^"]+)".*?backdrop" alt="([^"]+)"[ ]*src="([^"]+)'
matches = re.compile(patron, re.DOTALL).findall(data)
for scrapedchannel, scrapedtitle, scrapedthumbnail in matches:
# for scrapedthumbnail, scrapedtitle, scrapedtv in matches:
scrapedurl = ""
scrapedtitle = scrapertools.decodeHtmlentities(scrapedtitle).strip()
infoLabels = {}
infoLabels["year"] = ""
infoLabels['tvshowtitle'] = scrapedtitle
itemlist.append(
Item(channel=item.channel,
action="new_search",
extra=urllib.quote_plus(scrapedtitle) + '{}' + 'tvshow',
title="[B]" + scrapedtitle + "[/B] - " + scrapedchannel,
fulltitle=scrapedtitle,
mode='all',
search_text=scrapedtitle,
url=scrapedurl,
thumbnail=scrapedthumbnail.replace("?width=320", "?width=640"),
contentTitle=scrapedtitle,
contentType='tvshow',
infoLabels=infoLabels,
folder=True))
tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True)
return itemlist
def now_on_tv(item):
logger.debug("filmontv tvoggi")
itemlist = []
# Carica la pagina
data = httptools.downloadpage(item.url).data.replace('\n','')
#patron = r'spanTitleMovie">([A-Za-z À-ÖØ-öø-ÿ\-\']*)[a-z \n<>\/="_\-:0-9;A-Z.]*GenresMovie">([\-\'A-Za-z À-ÖØ-öø-ÿ\/]*)[a-z \n<>\/="_\-:0-9;A-Z.%]*src="([a-zA-Z:\/\.0-9?]*)[a-z \n<>\/="_\-:0-9;A-Z.%\-\']*Year">([A-Z 0-9a-z]*)'
patron = r'alt="([a-zA-Z 0-9]*)".*?spanMovieDuration">([^<]+).*?spanTitleMovie">([A-Za-z ,0-9\.À-ÖØ-öø-ÿ\-\']*).*?GenresMovie">([\-\'A-Za-z À-ÖØ-öø-ÿ\/]*).*?src="([a-zA-Z:\/\.0-9?]*).*?Year">([A-Z 0-9a-z]*)'
matches = re.compile(patron, re.DOTALL).findall(data)
for scrapedchannel, scrapedduration, scrapedtitle, scrapedgender, scrapedthumbnail, scrapedyear in matches:
# for scrapedthumbnail, scrapedtitle, scrapedtv in matches:
scrapedurl = ""
scrapedtitle = scrapertools.decodeHtmlentities(scrapedtitle).strip()
infoLabels = {}
infoLabels["year"] = scrapedyear
itemlist.append(
Item(channel=item.channel,
action="new_search",
extra=urllib.quote_plus(scrapedtitle) + '{}' + 'movie',
title="[B]" + scrapedtitle + "[/B] - " + scrapedchannel + " - " + scrapedduration,
fulltitle="[B]" + scrapedtitle + "[/B] - " + scrapedchannel+ " - " + scrapedduration,
url=scrapedurl,
mode='all',
search_text=scrapedtitle,
thumbnail=scrapedthumbnail.replace("?width=240", "?width=480"),
contentTitle=scrapedtitle,
contentType='movie',
infoLabels=infoLabels,
folder=True))
tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True)
return itemlist
def primafila(item):
logger.debug("filmontv tvoggi")
itemlist = []
# Carica la pagina
data = httptools.downloadpage(item.url).data
#patron = r'spanTitleMovie">([A-Za-z À-ÖØ-öø-ÿ]*)[a-z \n<>\/="_\-:0-9;A-Z.]*GenresMovie">([A-Za-z À-ÖØ-öø-ÿ\/]*)[a-z \n<>\/="_\-:0-9;A-Z.%]*src="([a-zA-Z:\/\.0-9?=]*)'
patron = r'spanTitleMovie">([A-Za-z À-ÖØ-öø-ÿ\-\']*)[a-z \n<>\/="_\-:0-9;A-Z.]*GenresMovie">([\-\'A-Za-z À-ÖØ-öø-ÿ\/]*)[a-z \n<>\/="_\-:0-9;A-Z.%]*src="([a-zA-Z:\/\.0-9?]*)[a-z \n<>\/="_\-:0-9;A-Z.%\-\']*Year">([A-Z 0-9a-z]*)'
matches = re.compile(patron, re.DOTALL).findall(data)
for scrapedtitle, scrapedgender, scrapedthumbnail, scrapedyear in matches:
# for scrapedthumbnail, scrapedtitle, scrapedtv in matches:
scrapedurl = ""
scrapedtitle = scrapertools.decodeHtmlentities(scrapedtitle).strip()
infoLabels = {}
infoLabels["year"] = scrapedyear
itemlist.append(
Item(channel=item.channel,
action="new_search",
extra=urllib.quote_plus(scrapedtitle) + '{}' + 'movie',
title=scrapedtitle,
fulltitle=scrapedtitle,
url=scrapedurl,
mode='all',
search_text=scrapedtitle,
thumbnail=scrapedthumbnail.replace("?width=240", "?width=480"),
contentTitle=scrapedtitle,
contentType='movie',
infoLabels=infoLabels,
folder=True))
tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True)
return itemlist
def new_search(item):
from specials import search
return search.new_search(item)
def live(item):
import sys
import channelselector
if sys.version_info[0] >= 3: from concurrent import futures
else: from concurrent_py2 import futures
itemlist = []
channels_dict = {}
channels = channelselector.filterchannels('live')
with futures.ThreadPoolExecutor() as executor:
itlist = [executor.submit(load_live, ch.channel) for ch in channels]
for res in futures.as_completed(itlist):
if res.result():
channel_name, itlist = res.result()
channels_dict[channel_name] = itlist
# default order
channel_list = ['raiplay', 'mediasetplay', 'la7', 'paramount', 'discoveryplus']
# add channels not in list
for ch in channels:
if ch.channel not in channel_list:
channel_list.append(ch.channel)
# make itemlist
for ch in channel_list:
itemlist += channels_dict[ch]
itemlist.sort(key=lambda it: support.channels_order[it.fulltitle])
return itemlist
def load_live(channel_name):
try:
channel = __import__('%s.%s' % ('channels', channel_name), None, None, ['%s.%s' % ('channels', channel_name)])
itemlist = channel.live(channel.mainlist(Item())[0])
except:
itemlist = []
return channel_name, itemlist