* fix next page

* testing new filmontv

* Wstream quick fix, no resolution displayed :(

* new filmontv

* now regex is ok

* fix .po files

* +netlovers

* working on filmontv

* fix debriders

* new updater

* updater

* fix crash

* fix updater and re-add dev mode

* new url eurostreaming

* Delete netlovers.py

* Delete netlovers.json

* -net from menù

* fix eurostreaming: numero stagione e newest (#50)

* fix canale

* fix newest

* fix numero puntata

* cleanup

* cleanup 2

* fix updater crash on windows

* Fix Animeworld

* Nuovo Autorenumber

* initial background downloader support

* ops

* Update channels.json

* Update channels.json

* fix openload

* move json update to cohesist with updater

* disable json url updates

* fix typo

* fix typo 2

* Add files via upload

* Add files via upload

* fix autoplay in community channels

* fix toonitalia

* Fix Toonitalia

* workaround serietvsubita

* Nuova Rinumerazione Automatica

* Fix per Rinumerazione Automatica

* workaround updater

* Fix on air

* ops

* Personalizzazione sezione "Oggi in TV"

* Aggiunto orario sezione Oggi in TV

* aggiunto bit.ly (#56)

* aggiunto bit.ly

* Aggiunta personalizzazione homepage

* Revert "initial background downloader support"

This reverts commit f676ab0f

* KoD 0.4
This commit is contained in:
mac12m99
2019-06-30 10:35:48 +02:00
committed by GitHub
parent 7551aed8ba
commit 3fb9b068d9
47 changed files with 1340 additions and 664 deletions
+4 -1
View File
@@ -299,7 +299,10 @@ def start(itemlist, item):
# Intenta reproducir los enlaces
# Si el canal tiene metodo play propio lo utiliza
channel = __import__('channels.%s' % channel_id, None, None, ["channels.%s" % channel_id])
try:
channel = __import__('channels.%s' % channel_id, None, None, ["channels.%s" % channel_id])
except:
channel = __import__('specials.%s' % channel_id, None, None, ["specials.%s" % channel_id])
if hasattr(channel, 'play'):
resolved_item = getattr(channel, 'play')(videoitem)
if len(resolved_item) > 0:
+272 -96
View File
@@ -3,20 +3,43 @@
# autorenumber - Rinomina Automaticamente gli Episodi
# --------------------------------------------------------------------------------
try:
import xbmcgui
except:
xbmcgui = None
'''
USO:
1) utilizzare autorenumber.renumber(itemlist) nelle le funzioni peliculas e similari per aggiungere il menu contestuale
2) utilizzare autorenumber.renumber(itemlist, item, typography) nella funzione episodios
from core import jsontools, tvdb
3) Aggiungere le seguinti stringhe nel json del canale (per attivare la configurazione di autonumerazione del canale)
{
"id": "autorenumber",
"type": "bool",
"label": "Abilita Rinumerazione Automatica",
"default": false,
"enabled": true,
"visible": true
},
{
"id": "autorenumber_mode",
"type": "bool",
"label": "Sono presenti episodi speciali nella serie (Episodio 0 Escluso)?",
"default": false,
"enabled": true,
"visible": "eq(-1,true)"
}
'''
import re, base64, json
from core import jsontools, tvdb, scrapertoolsV2
from core.support import typo, log
from platformcode import config
from platformcode import platformtools
from platformcode import config, platformtools
from platformcode.config import get_setting
TAG_TVSHOW_RENUMERATE = "TVSHOW_AUTORENUMBER"
TAG_SEASON_EPISODE = "season_episode"
__channel__ = "autorenumber"
TAG_ID = "ID"
TAG_SEASON = "Season"
TAG_EPISODE = "Episode"
TAG_MODE = "Mode"
__channel__ = "autorenumber"
def access():
allow = False
@@ -27,137 +50,290 @@ def access():
return allow
def context():
def context(exist):
if access():
_context = [{"title": config.get_localized_string(70585),
"action": "config_item",
modify = config.get_localized_string(70714) if exist else ''
_context = [{"title": typo(modify + config.get_localized_string(70585), 'bold'),
"action": "manual_config_item",
"channel": "autorenumber"}]
return _context
def config_item(item):
def manual_config_item(item):
# Configurazione Semi Automatica, utile in caso la numerazione automatica fallisca
log(item)
tvdb.find_and_set_infoLabels(item)
data = ''
data = add_season(data)
item.channel = item.from_channel
dict_series = jsontools.get_node_from_file(item.channel, TAG_TVSHOW_RENUMERATE)
title = item.show
count = 0
# Trova l'ID dellla serie
while not item.infoLabels['tvdb_id']:
try:
item.show = platformtools.dialog_input(default=item.show, heading=config.get_localized_string(30112))
tvdb.find_and_set_infoLabels(item)
count = count + 1
except:
heading = config.get_localized_string(70704)
item.infoLabels['tvdb_id'] = platformtools.dialog_numeric(0, heading)
data.append(item.infoLabels['tvdb_id'])
if item.infoLabels['tvdb_id'] != 0:
write_data(item.from_channel, title, data)
if item.infoLabels['tvdb_id']:
ID = item.infoLabels['tvdb_id']
dict_renumerate = {TAG_ID: ID}
dict_series[title] = dict_renumerate
# Trova la Stagione
if any( word in title.lower() for word in ['specials', 'speciali'] ):
heading = config.get_localized_string(70686)
season = platformtools.dialog_numeric(0, heading, '0')
dict_renumerate[TAG_SEASON] = season
elif RepresentsInt(title.split()[-1]):
heading = config.get_localized_string(70686)
season = platformtools.dialog_numeric(0, heading, title.split()[-1])
dict_renumerate[TAG_SEASON] = season
else:
heading = config.get_localized_string(70686)
season = platformtools.dialog_numeric(0, heading, '1')
dict_renumerate[TAG_SEASON] = season
# Richede se ci sono speciali nella stagione
mode = platformtools.dialog_yesno(config.get_localized_string(70687), config.get_localized_string(70688), nolabel=config.get_localized_string(30023), yeslabel=config.get_localized_string(30022))
if mode == 0: dict_renumerate[TAG_MODE] = False
else: dict_renumerate[TAG_MODE] = True
# Imposta la voce Episode
dict_renumerate[TAG_EPISODE] = []
# Scrive nel json
jsontools.update_node(dict_series, item.channel, TAG_TVSHOW_RENUMERATE)[0]
else:
message = config.get_localized_string(60444)
heading = item.show.strip()
platformtools.dialog_notification(heading, message)
def add_season(data=None):
log("data= ", data)
heading = config.get_localized_string(70686)
season = platformtools.dialog_numeric(0, heading)
if season != "":
heading = config.get_localized_string(70687)
episode = platformtools.dialog_numeric(0, heading)
if episode == "0":
heading = config.get_localized_string(70688)
special = platformtools.dialog_numeric(0, heading)
return [int(season), int(episode), int(special)]
elif episode != '':
return [int(season), int(episode), '']
def write_data(channel, show, data):
def config_item(item, itemlist=[], typography='', active=False):
# Configurazione Automatica, Tenta la numerazione Automatica degli episodi
log()
dict_series = jsontools.get_node_from_file(channel, TAG_TVSHOW_RENUMERATE)
tvshow = show.strip()
# list_season_episode = dict_series.get(tvshow, {}).get(TAG_SEASON_EPISODE, [])
title = item.fulltitle
if data:
dict_renumerate = {TAG_SEASON_EPISODE: data}
dict_series[tvshow] = dict_renumerate
else:
dict_series.pop(tvshow, None)
dict_series = jsontools.get_node_from_file(item.channel, TAG_TVSHOW_RENUMERATE)
try:
ID = dict_series[item.show.rstrip()][TAG_ID]
except:
ID = ''
# Pulizia del Titolo
if any( word in title.lower() for word in ['specials', 'speciali']):
item.show = re.sub(r'\sspecials|\sspeciali', '', item.show.lower())
log('ITEM SHOW= ',item.show)
tvdb.find_and_set_infoLabels(item)
elif not item.infoLabels['tvdb_id']:
item.show = title.rstrip('123456789 ')
tvdb.find_and_set_infoLabels(item)
result = jsontools.update_node(dict_series, channel, TAG_TVSHOW_RENUMERATE)[0]
if result:
if data:
message = config.get_localized_string(60446)
if not ID and active:
if item.infoLabels['tvdb_id']:
ID = item.infoLabels['tvdb_id']
dict_renumerate = {TAG_ID: ID}
dict_series[title] = dict_renumerate
# Trova La Stagione
if any( word in title.lower() for word in ['specials', 'speciali']):
dict_renumerate[TAG_SEASON] = '0'
elif RepresentsInt(title.split()[-1]):
dict_renumerate[TAG_SEASON] = title.split()[-1]
else: dict_renumerate[TAG_SEASON] = '1'
dict_renumerate[TAG_EPISODE] = []
settings_node = jsontools.get_node_from_file(item.channel, 'settings')
dict_renumerate[TAG_MODE] = settings_node['autorenumber_mode']
jsontools.update_node(dict_series, item.channel, TAG_TVSHOW_RENUMERATE)[0]
return renumber(itemlist, item, typography)
else:
message = config.get_localized_string(60444)
else:
message = config.get_localized_string(70593)
heading = show.strip()
platformtools.dialog_notification(heading, message)
return itemlist
else:
return renumber(itemlist, item, typography)
def renumber(itemlist, item='', typography=''):
log()
# Seleziona la funzione Adatta, Menu Contestuale o Rinumerazione
# import web_pdb; web_pdb.set_trace()
if item:
try:
settings_node = jsontools.get_node_from_file(item.channel, 'settings')
# Controlla se la Serie è già stata rinumerata
try:
dict_series = jsontools.get_node_from_file(item.channel, TAG_TVSHOW_RENUMERATE)
SERIES = dict_series[item.show.rstrip()]['season_episode']
S = SERIES[0]
E = SERIES[1]
SP = SERIES[2]
ID = SERIES[3]
page = 1
epList = []
exist = True
item.infoLabels['tvdb_id'] = ID
tvdb.set_infoLabels_item(item)
TITLE = item.fulltitle.rstrip()
ID = dict_series[TITLE][TAG_ID]
while exist:
data = tvdb.otvdb_global.get_list_episodes(ID,page)
if data:
for episodes in data['data']:
if episodes['airedSeason'] >= S:
if E == 0:
epList.append([0, SP])
E = 1
if episodes['airedEpisodeNumber'] >= E or episodes['airedSeason'] > S:
epList.append([episodes['airedSeason'], episodes['airedEpisodeNumber']])
page = page + 1
else:
exist = False
epList.sort()
ep = 0
for item in itemlist:
s = str(epList[ep][0])
e = str(epList[ep][1])
item.title = typo(s + 'x'+ e + ' - ', typography) + item.title
ep = ep + 1
exist = True
except:
return itemlist
exist = False
if exist:
ID = dict_series[TITLE][TAG_ID]
SEASON = dict_series[TITLE][TAG_SEASON]
EPISODE = dict_series[TITLE][TAG_EPISODE]
MODE = dict_series[TITLE][TAG_MODE]
return renumeration(itemlist, item, typography, dict_series, ID, SEASON, EPISODE, MODE, TITLE)
else:
# se non è stata rinumerata controlla se è attiva la rinumerazione automatica
if 'autorenumber' not in settings_node: return itemlist
if settings_node['autorenumber'] == True:
config_item(item, itemlist, typography, True)
else:
for item in itemlist:
try:
dict_series = jsontools.get_node_from_file(itemlist[0].channel, TAG_TVSHOW_RENUMERATE)
TITLE = item.show.rstrip()
ID = dict_series[TITLE][TAG_ID]
exist = True
except:
exist = False
if item.contentType != 'movie':
if item.context:
context2 = item.context
item.context = context() + context2
item.context = context(exist) + context2
else:
item.context = context()
item.context = context(exist)
def renumeration (itemlist, item, typography, dict_series, ID, SEASON, EPISODE, MODE, TITLE):
# import web_pdb; web_pdb.set_trace()
# Se ID è 0 salta la rinumerazione
if ID == '0':
return itemlist
# Numerazione per gli Speciali
elif SEASON == '0':
EpisodeDict = {}
for item in itemlist:
number = scrapertoolsV2.find_single_match(item.title, r'\d+')
item.title = typo('0x' + number + ' - ', typography) + item.title
# Usa la lista degli Episodi se esiste nel Json
elif EPISODE:
log('EPISODE')
EpisodeDict = json.loads(base64.b64decode(EPISODE))
# Controlla che la lista egli Episodi sia della stessa lunghezza di Itemlist
if EpisodeDict == 'none':
return error(itemlist)
log(len(EpisodeDict))
log(len(itemlist))
if len(EpisodeDict) == len(itemlist):
for item in itemlist:
number = scrapertoolsV2.find_single_match(item.title, r'\d+')
item.title = typo(EpisodeDict[str(number)] + ' - ', typography) + item.title
else:
make_list(itemlist, item, typography, dict_series, ID, SEASON, EPISODE, MODE, TITLE)
else:
make_list(itemlist, item, typography, dict_series, ID, SEASON, EPISODE, MODE, TITLE)
def make_list(itemlist, item, typography, dict_series, ID, SEASON, EPISODE, MODE, TITLE):
log('RINUMERAZIONE')
page = 1
EpDict = {}
EpDateList = []
EpList = []
EpisodeDict = {}
exist = True
item.infoLabels['tvdb_id'] = ID
tvdb.set_infoLabels_item(item)
ABS = 0
ep = 1
# Ricava Informazioni da TVDB
while exist:
data = tvdb.otvdb_global.get_list_episodes(ID,page)
log('DATA= ',data)
if data: page = page + 1
else: exist = False
if data:
for episodes in data['data']:
log(episodes)
try: ABS = int(episodes['absoluteNumber'])
except: ABS = ep
EpDict[str(ABS)] = [str(episodes['airedSeason']) + 'x' + str(episodes['airedEpisodeNumber']), episodes['firstAired']]
EpDateList.append(episodes['firstAired'])
EpList.append([int(ABS), episodes['airedSeason'], episodes['airedEpisodeNumber']])
ep = ep + 1
EpDateList.sort()
EpList.sort()
log(EpDateList)
log(EpDict)
log(EpList)
# seleziona l'Episodio di partenza
if int(SEASON) > 1:
for name, episode in EpDict.items():
if episode[0] == SEASON + 'x1':
ep = int(name)-1
else:
ep = 0
# rinumera gli episodi
Break = False
for item in itemlist:
number = int(scrapertoolsV2.find_single_match(item.title, r'\d+'))
episode = ep + number - 1
if len(EpList) < episode: return error(itemlist)
# Crea una lista di Episodi in base alla modalità di rinumerazione
if MODE == False and number != 0:
while Break:
log('Long= ',len(EpList))
log('NUMBER= ',EpList[episode][1])
log('Eisode= ',episode)
episode = episode + 1
if EpList[episode][1] == 0 or len(EpList) <= episode: Break = True
ep = ep + 1
elif number == 0:
episode = previous(EpDateList, EpDict, ep + 1)
if config.get_localized_string(30161) not in item.title:
EpisodeDict[str(number)] = (str(EpList[episode][1]) + 'x' + str(EpList[episode][2]))
item.title = typo(str(EpList[episode][1]) + 'x' + str(EpList[episode][2]) + ' - ', typography) + item.title
# Scrive sul json
EpisodeDict = base64.b64encode(json.dumps(EpisodeDict))
dict_series[TITLE][TAG_EPISODE] = EpisodeDict
jsontools.update_node(dict_series, item.channel, TAG_TVSHOW_RENUMERATE)[0]
return itemlist
def RepresentsInt(s):
# Controllo Numro Stagione
log()
try:
int(s)
return True
except ValueError:
return False
def previous(date_list, Dict, search):
# Seleziona Eventuale Episodio 0
log()
P = None
result = 0
for ep, variants in Dict.items():
if variants[1] == Dict[str(search)][1]:
date = variants[1]
for index, obj in enumerate(date_list):
if obj == date:
if index > 0:
P = date_list[index - 1]
for name, variants in Dict.items():
log(variants[1], ' = ', P)
if variants[1] == P:
result = int(name)-1
return result
def error(itemlist):
message = config.get_localized_string(70713)
heading = itemlist[0].fulltitle.strip()
platformtools.dialog_notification(heading, message)
return itemlist
+23 -14
View File
@@ -20,8 +20,8 @@ from specials import filtertools
list_data = {}
list_language = ['LAT', 'CAST', 'VO', 'VOSE']
list_servers = ['directo']
list_language = ['ITA', 'SUB-ITA']
list_servers = ['directo', 'akvideo', 'verystream', 'openload']
list_quality = ['SD', '720', '1080', '4k']
def mainlist(item):
@@ -45,7 +45,6 @@ def show_channels(item):
"action": "remove_channel",
"channel": "community"}]
path = os.path.join(config.get_data_path(), 'community_channels.json')
file = open(path, "r")
json = jsontools.load(file.read())
@@ -53,18 +52,20 @@ def show_channels(item):
itemlist.append(Item(channel=item.channel, title=config.get_localized_string(70676), action='add_channel', thumbnail=get_thumb('add.png')))
for key, channel in json['channels'].items():
if 'thumbnail' in channel:
thumbnail = channel['thumbnail']
else:
thumbnail = ''
file_path = channel ['path']
file_url = httptools.downloadpage(file_path, follow_redirects=True).data
json_url = jsontools.load(file_url)
thumbnail = json_url['thumbnail'] if 'thumbnail' in json_url else ''
fanart = json_url['fanart'] if 'fanart' in json_url else ''
if 'fanart' in channel:
fanart = channel['fanart']
else:
fanart = ''
itemlist.append(Item(channel=item.channel, title=channel['channel_name'], url=channel['path'],
thumbnail=thumbnail, fanart=fanart, action='show_menu', channel_id = key, context=context))
itemlist.append(Item(channel=item.channel,
title=channel['channel_name'],
url=file_path,
thumbnail=thumbnail,
fanart=fanart,
action='show_menu',
channel_id = key,
context=context))
return itemlist
def load_json(item):
@@ -127,6 +128,8 @@ def list_all(item):
new_item = Item(channel=item.channel, title=title, quality=quality,
language=language, plot=plot, thumbnail=poster)
new_item.infoLabels['year'] = media['year'] if 'year' in media else ''
new_item.infoLabels['tmdb_id'] = media['tmdb_id'] if 'tmdb_id' in media else ''
if 'movies_list' in json_data:
new_item.url = media
@@ -134,10 +137,16 @@ def list_all(item):
new_item.action = 'findvideos'
if 'year' in media:
new_item.infoLabels['year'] = media['year']
if 'tmdb_id' in media:
new_item.infoLabels['tmdb_id'] = media['tmdb_id']
else:
new_item.url = media['seasons_list']
new_item.contentSerieName = media['title']
new_item.action = 'seasons'
if 'year' in media:
new_item.infoLabels['year'] = media['year']
if 'tmdb_id' in media:
new_item.infoLabels['tmdb_id'] = media['tmdb_id']
itemlist.append(new_item)
+82 -1
View File
@@ -7,6 +7,87 @@
"thumbnail": null,
"banner": null,
"categories": [],
"settings": [],
"settings": [
{
"id": "film1",
"type": "text",
"label": "Inserisci nome Film #1",
"default": "[Oggi in TV] Film #1",
"enabled": true,
"visible": true
},
{
"id": "film2",
"type": "text",
"label": "Inserisci nome Film #2",
"default": "[Oggi in TV] Film #2",
"enabled": true,
"visible": true
},
{
"id": "film3",
"type": "text",
"label": "Inserisci nome Film #3",
"default": "[Oggi in TV] Film #3",
"enabled": true,
"visible": true
},
{
"id": "film4",
"type": "text",
"label": "Inserisci nome Film #4",
"default": "[Oggi in TV] Film #4",
"enabled": true,
"visible": true
},
{
"id": "film5",
"type": "text",
"label": "Inserisci nome Film #5",
"default": "[Oggi in TV] Film #5",
"enabled": true,
"visible": true
},
{
"id": "now1",
"type": "text",
"label": "Inserisci nome adesso in onda #1",
"default": "[Adesso in onda] Tutte le trasmissioni #1",
"enabled": true,
"visible": true
},
{
"id": "now2",
"type": "text",
"label": "Inserisci nome adesso in onda #2",
"default": "[Adesso in onda] Tutte le trasmissioni #2",
"enabled": true,
"visible": true
},
{
"id": "now3",
"type": "text",
"label": "Inserisci nome adesso in onda #3",
"default": "[Adesso in onda] Tutte le trasmissioni #3",
"enabled": true,
"visible": true
},
{
"id": "now4",
"type": "text",
"label": "Inserisci nome adesso in onda #4",
"default": "[Adesso in onda] Tutte le trasmissioni #4",
"enabled": true,
"visible": true
},
{
"id": "now5",
"type": "text",
"label": "Inserisci nome adesso in onda #5",
"default": "[Adesso in onda] Tutte le trasmissioni #5",
"enabled": true,
"visible": true
}
],
"channel": false
}
+160 -71
View File
@@ -1,61 +1,186 @@
# -*- coding: utf-8 -*-
# ------------------------------------------------------------
# Canale film in tv
# Ringraziamo Icarus crew
# ------------------------------------------------------------
import re
import urllib
from channelselector import get_thumb
from core import httptools, scrapertools, tmdb, support
from core import httptools, scrapertools, support, tmdb, filetools
from core.item import Item
from platformcode import logger, config
from platformcode import logger, config, platformtools
host = "https://www.comingsoon.it"
host = "https://www.superguidatv.it"
TIMEOUT_TOTAL = 60
def mainlist(item):
logger.info(" 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(channel=item.channel,
title="[Oggi in TV] [B]Adesso in onda[/B]",
action="tvoggi",
url="%s/filmtv/" % host,
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(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="[Oggi in TV] [B]Primafila[/B]",
action="primafila",
url="https://www.superguidatv.it/film-in-tv/oggi/sky-primafila/",
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="[Oggi in TV] Mattina",
action="tvoggi",
url="%s/filmtv/oggi/mattina/" % host,
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="[Oggi in TV] Pomeriggio",
action="tvoggi",
url="%s/filmtv/oggi/pomeriggio/" % host,
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="[Oggi in TV] Sera",
action="tvoggi",
url="%s/filmtv/oggi/sera/" % host,
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="[Oggi in TV] Notte",
action="tvoggi",
url="%s/filmtv/oggi/notte/" % 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.info("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="do_search",
extra=urllib.quote_plus(scrapedtitle) + '{}' + 'movie',
title="[B]" + scrapedtitle + "[/B] - " + scrapedchannel,
fulltitle=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.info("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="do_search",
extra=urllib.quote_plus(scrapedtitle) + '{}' + 'tvshow',
title="[B]" + scrapedtitle + "[/B] - " + scrapedchannel,
fulltitle=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.info("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'view_logo" 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="do_search",
extra=urllib.quote_plus(scrapedtitle) + '{}' + 'movie',
title="[B]" + scrapedtitle + "[/B] - " + scrapedchannel + " - " + scrapedduration,
fulltitle="[B]" + scrapedtitle + "[/B] - " + scrapedchannel+ " - " + scrapedduration,
url=scrapedurl,
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.info("filmontv tvoggi")
@@ -64,7 +189,7 @@ def primafila(item):
# 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]*)'
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:
@@ -89,42 +214,6 @@ def primafila(item):
return itemlist
def tvoggi(item):
logger.info("filmontv tvoggi")
itemlist = []
# Carica la pagina
data = httptools.downloadpage(item.url).data
# Estrae i contenuti
patron = r'<div class="col-xs-5 box-immagine">[^<]+<img src="([^"]+)[^<]+<[^<]+<[^<]+<[^<]+<[^<]+<.*?titolo">(.*?)<[^<]+<[^<]+<[^<]+<[^>]+><br />(.*?)<[^<]+</div>[^<]+<[^<]+<[^<]+<[^>]+>[^<]+<[^<]+<[^<]+<[^>]+><[^<]+<[^>]+>:\s*([^<]+)[^<]+<[^<]+[^<]+<[^<]+[^<]+<[^<]+[^<]+[^>]+>:\s*([^<]+)'
# patron = r'<div class="col-xs-5 box-immagine">[^<]+<img src="([^"]+)[^<]+<[^<]+<[^<]+<[^<]+<[^<]+<.*?titolo">(.*?)<[^<]+<[^<]+<[^<]+<[^>]+><br />(.*?)<[^<]+</div>'
matches = re.compile(patron, re.DOTALL).findall(data)
for scrapedthumbnail, scrapedtitle, scrapedtv, scrapedgender, 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="do_search",
extra=urllib.quote_plus(scrapedtitle) + '{}' + 'movie',
title=scrapedtitle + "[COLOR yellow] " + scrapedtv + "[/COLOR]",
fulltitle=scrapedtitle,
url=scrapedurl,
thumbnail=scrapedthumbnail,
contentTitle=scrapedtitle,
contentType='movie',
infoLabels=infoLabels,
folder=True))
tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True)
return itemlist
def do_search(item):
from specials import search
return search.do_search(item)
-2
View File
@@ -31,8 +31,6 @@ def mainlist(item):
context = [{"title": config.get_localized_string(60412), "action": "setting_channel", "channel": item.channel}]
itemlist.append(Item(channel=item.channel, action="sub_menu", title="[B]" + config.get_localized_string(70305)+ "[/B]", context=context,
thumbnail=get_thumb("search.png")))
itemlist.append(Item(channel="filmontv", action="mainlist", title=config.get_localized_string(50001),
thumbnail=get_thumb("on_the_air.png"), viewmode="thumbnails"))
itemlist.append(Item(channel=item.channel, action='genres_menu', title=config.get_localized_string(70306), type='movie',
thumbnail=get_thumb("genres.png")))
itemlist.append (Item(channel=item.channel, action='discover_list', title=config.get_localized_string(70307),
+6 -5
View File
@@ -85,8 +85,7 @@ def menu_channels(item):
def channel_config(item):
return platformtools.show_channel_settings(channelpath=filetools.join(config.get_runtime_path(), "channels",
item.config))
return platformtools.show_channel_settings(channelpath=filetools.join(config.get_runtime_path(), "channels", item.config))
def autostart(item): # item necessario launcher.py linea 265
@@ -145,7 +144,7 @@ def menu_servers(item):
if server_parameters["has_settings"]:
itemlist.append(
Item(channel=CHANNELNAME, title = ". " + config.get_localized_string(60553) % server_parameters["name"],
action="server_config", config=server, folder=False, thumbnail=""))
action="server_debrid_config", config=server, folder=False, thumbnail=""))
itemlist.append(Item(channel=CHANNELNAME, title=config.get_localized_string(60554),
action="", folder=False, text_bold = True, thumbnail=get_thumb("setting_0.png")))
@@ -167,8 +166,10 @@ def menu_servers(item):
def server_config(item):
return platformtools.show_channel_settings(channelpath=filetools.join(config.get_runtime_path(), "servers",
item.config))
return platformtools.show_channel_settings(channelpath=filetools.join(config.get_runtime_path(), "servers", item.config))
def server_debrid_config(item):
return platformtools.show_channel_settings(channelpath=filetools.join(config.get_runtime_path(), "servers", "debriders", item.config))
def servers_blacklist(item):
+3 -3
View File
@@ -69,7 +69,7 @@ def buscartrailer(item, trailers=[]):
if "youtube" in url:
url = url.replace("embed/", "watch?v=")
titulo, url, server = servertools.findvideos(url)[0]
title = "Trailer por defecto [" + server + "]"
title = "Trailer [" + server + "]"
itemlist.append(item.clone(title=title, url=url, server=server, action="play"))
if item.show or item.infoLabels['tvshowtitle'] or item.contentType != "movie":
tipo = "tv"
@@ -81,7 +81,7 @@ def buscartrailer(item, trailers=[]):
else:
for trailer in trailers:
title = trailer['name'] + " [" + trailer['size'] + "p] (" + trailer['language'].replace("en", "ING") \
.replace("es", "ESP") + ") [tmdb/youtube]"
.replace("it", "ITA") + ") [tmdb/youtube]"
itemlist.append(item.clone(action="play", title=title, url=trailer['url'], server="youtube"))
except:
import traceback
@@ -278,7 +278,7 @@ def search_links_abando(item):
else:
for scrapedurl, language, scrapedtitle in matches:
if language == "1":
idioma = " (ESP)"
idioma = " (ITA)"
else:
idioma = " (V.O)"
scrapedurl = urlparse.urljoin("http://www.abandomoviez.net/%s" % item.prefix, scrapedurl)