* fix canale * fix newest * fix numero puntata * experimental scrape as decorator * prova su support.scrape e modifiche * uso del decoratore support.scrape Scritto guardaserieclick con supporto del decoratore Modificato: - eurostreaming.py per piccoli fix - Support.py per fix oltre che a portarlo allo stato del master - zcrypt - bit.ly non funziona. DA FIXARE!!! * migliorato codice Tentativo vano di inserire autorenumber per gli anime * New scrape (#55) * fix canale * fix newest * fix numero puntata * 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 * prova su support.scrape e modifiche * uso del decoratore support.scrape Scritto guardaserieclick con supporto del decoratore Modificato: - eurostreaming.py per piccoli fix - Support.py per fix oltre che a portarlo allo stato del master - zcrypt - bit.ly non funziona. DA FIXARE!!! * migliorato codice Tentativo vano di inserire autorenumber per gli anime * fix autoplay in altadefinizioneLink * camel case * decoratore per i menu * altadefinizione01 C * Decoratore Menu e Altadefinizione01_C e _L modifiche a support.menu per fix e scrittura dei canali: - Altadefinizione01_C - Altadefinizione01_L per il supporto dei decoratori: - menu - scrape * eliminato listGroup in favore dei nomi dei gruppi nelle regex * cambio struttura in support.menu() * cambio struttura in support.menu() * supporto completo per i decoratori Riscritti i canali per il supporto ai decoratori e alle sole regex: - Altadefinizione01_C - Altadefinizione01_L * AltadefinizioneClick - altadefinizione01 e piccoli fix modified: channels/altadefinizione01.py modified: channels/altadefinizione01_club.py modified: channels/altadefinizione01_link.py modified: channels/altadefinizioneclick.py * NewScrape (#62) * 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 * kod stable 0.3.1 * aggiunti nuovi file * channel e custom json * aggiunto bit.ly * 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 commitf676ab0f* KoD 0.4 * KoD 0.4 (#57) * 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 commitf676ab0f* KoD 0.4 * stable * Rimossa dipendenza inutile * fix per i link bit.ly sperando non ricambiano... * Update updater.py * update * Fix Numerazione Automatica * possible fix badZipFile on android * possible fix crash if no internet connection * try except unzipper -> workaround * KoD 0.4.1 * Fix Numerazione Automatica * Fix ricerca CB01 * pagination fix * fix per bit.ly e fix di alcuni canali * Cambio dominio per FilmPerTutti * Fix per Wstream * miglioramenti vari updater + fix definitivo android * Fix Ricerca per Altadefinizione01 * Revert "Merge branch 'stable' of https://github.com/kodiondemand/addon into stable" This reverts commitcf50d10a00, reversing changes made to4a695c096c. * Revert "Revert "Merge branch 'stable' of https://github.com/kodiondemand/addon into stable"" This reverts commitcd19484c70. * Rimosso canale non più funzionante * Update addon.xml * da master a newScrape (#38) * Fix Numerazione Automatica * possible fix badZipFile on android * possible fix crash if no internet connection * try except unzipper -> workaround * KoD 0.4.1 * Fix Numerazione Automatica * Fix CB01 * pagination fix * Fix altadefinizione01_club e alcune mod a support Il canale è stato riscritto per support, così è pronto per il decoratore. Aggiunti dei fix a support altrimenti mi dava la lingua sub-ita a tutti i film successivi di un film sub-ita * fix di alcuni canali modified: animesubita.py modified: cinetecadibologna.py modified: filmpertutti.json modified: guardarefilm.py modified: istitutoluce.py modified: italiaserie.py * fix per bit.ly (#58) fix per bit.ly e fix di alcuni canali * Cambio dominio per FilmPerTutti * miglioramenti vari updater + fix definitivo android * Fix per Wstream * fix updater * Fix Ricerca per Altadefinizione01 * Rimosso canale non più funzionante * fix altadefinizione01 C * fix altadefinizione01_C * altadefinizione01 C fix regex
176 lines
6.6 KiB
Python
176 lines
6.6 KiB
Python
# -*- coding: utf-8 -*-
|
|
# -*- Scritto per KOD -*-
|
|
# versione: 0.1
|
|
|
|
##import sys
|
|
##import os
|
|
##import json
|
|
##import xbmc
|
|
##import xbmcaddon, xbmcgui
|
|
import kdicc
|
|
##
|
|
##from core import channeltools, scrapertools
|
|
##from platformcode import logger, config, platformtools
|
|
##from core.item import Item
|
|
|
|
|
|
"""
|
|
Abbinato allo script kdicc permette di modificare gli url del file channels_active.json ( poi channels.json ):
|
|
1. riscrivere l'url in caso di redirect
|
|
2.
|
|
a. disattivare il canale in caso di problemi al sito
|
|
b. riattivare il canale quando l'url viene raggiunto nuovamente
|
|
|
|
quando far partire il check?
|
|
1. all'inizio per controllare i file nel channels_not_active (pochi)
|
|
2. durante l'apertura del canale
|
|
3. nelle varie ricerche globali
|
|
|
|
Problematiche:
|
|
|
|
1. i redirect sono gestiti in locale
|
|
2. se il canale viene disattivato bisogna scrivere nel json:
|
|
a. del canale per disattivarlo
|
|
b. inserire il canale nel channels_not_active
|
|
"""
|
|
|
|
class CheckHost(object):
|
|
|
|
def __init__(self):
|
|
pass
|
|
|
|
def http_code():
|
|
pass
|
|
|
|
def checkHost(item, itemlist):
|
|
# nel caso non ci siano risultati puo essere che l'utente abbia cambiato manualmente l'host, pertanto lo riporta
|
|
# al valore di default (fixa anche il problema del cambio di host da parte nostra)
|
|
if len(itemlist) == 0:
|
|
# trovo il valore di default
|
|
|
|
defHost = None
|
|
for s in channeltools.get_channel_json(item.channel)['settings']:
|
|
if s['id'] == 'channel_host':
|
|
defHost = s['default']
|
|
break
|
|
# lo confronto con quello attuale
|
|
if config.get_setting('channel_host', item.channel) != defHost:
|
|
config.set_setting('channel_host', defHost, item.channel)
|
|
|
|
##
|
|
##def host_check(itemlist, item=None):
|
|
## """
|
|
## se item == None allora siamo nello start()
|
|
##
|
|
## :param itemlist:
|
|
## :param item:
|
|
## :return:
|
|
## """
|
|
## #import web_pdb; web_pdb.set_trace()
|
|
## logger.info("host_check item, itemlist : %s %s " % (item, itemlist))
|
|
##
|
|
## if not item:
|
|
## logger.info("%s %s " % (item, itemlist))
|
|
## check_host(itemlist = '', item=None)
|
|
## else:
|
|
## pass
|
|
##
|
|
##
|
|
##def check_host(itemlist, item=None):
|
|
## #import web_pdb; web_pdb.set_trace()
|
|
## if not item:
|
|
## logger.info("ITEM : %s " % (item))
|
|
## channel_path = os.path.join(config.get_runtime_path(), "")
|
|
## file = 'channel_not_active.json'
|
|
## # leggo dal file channel_not_active
|
|
## with open(channel_path+file, 'r') as json_file:
|
|
## data = ''
|
|
## try:
|
|
## data = json.load(json_file)
|
|
## logger.info("Json data : %s " % (data))
|
|
## except:
|
|
## logger.info("Json except : %s " % (data))
|
|
## if len(data) !=0:
|
|
## logger.info("IF len(data) : %s " % len(data))
|
|
## for canale in data:
|
|
## url_org = str(data[canale])
|
|
##
|
|
##
|
|
## # X debug, da togliere
|
|
## else:
|
|
## logger.info("ELSE len(data) : %s " % len(data))
|
|
##
|
|
## else:
|
|
## logger.info()
|
|
##
|
|
## channel_path = os.path.join(config.get_runtime_path(), "")
|
|
## file = 'channels.json'
|
|
## #logger.info("canale Json data : %s " % canale)
|
|
## new_domain = []
|
|
## error_domain = []
|
|
## nonraggiungibile_domain = []
|
|
## code_error = []
|
|
## with open(channel_path+file, 'r') as json_file:
|
|
## data = json.load(json_file)
|
|
## logger.info("Json data : %s " % (data))#, data['settings']))
|
|
##
|
|
## for canale in data:
|
|
## url_org = str(data[canale])
|
|
## try:
|
|
## res = requests.get(url_org)
|
|
## url = str(res.url)
|
|
## logger.info("Canale : %s " % canale)
|
|
## logger.info("R = %s" % res.status_code)
|
|
## logger.info("siamo qui data[canale]: %s " % url_org) # contiene l'url nuovo se c'è link
|
|
## logger.info("siamo qui res.url: %s " % url) # contiene l'url nuovo se c'è link
|
|
##
|
|
## if url.endswith('/') == True:
|
|
## url = url[:-1]
|
|
##
|
|
## logger.info("url_org -> %s" % url_org)
|
|
## logger.info("url -> %s" % url)
|
|
## logger.info("################")
|
|
##
|
|
## if url_org != url:
|
|
## new_domain.append((canale, url_org, url))
|
|
## if res.status_code == 200:
|
|
## pass
|
|
## elif res.status_code == 301:
|
|
## code_error.append(res.status_code)
|
|
## elif str(res.status_code).startswith('5'):
|
|
## code_error.append(res.status_code)
|
|
## logger.info("res.code 5XX: %s " % res.status_code)
|
|
## ## elif res.status_code ==
|
|
## ## if res.code == 503:
|
|
## ## # disabilitare il canale
|
|
## ## logger.info("res.code non è 200: %s " % res.code)
|
|
## ## error_domain.append((canale, data[canale]))
|
|
## ## if res.code == 200 and 'link' in res.headers:
|
|
## ## logger.info("res.code è 200 and 'link': %s " % res.code)
|
|
## ## host_red = res.headers['link']
|
|
## ## pat = r'<([a-zA-Z0-9-\.\/:]+)/wp-json/>;'
|
|
## ## host_red = scrapertools.find_single_match(host_red, pat)
|
|
## ## logger.info("host_red: %s " % host_red)
|
|
## ## # confronto i 2 link, se non sono uguali c'è un redirect
|
|
## ## if host_red != data[canale]:
|
|
## ## logger.info("host_red host_link: %s - %s " % (host_red, data[canale]))
|
|
## ## new_domain.append((canale, host_red))
|
|
## ## logger.info("data modificato link: %s " % canale)
|
|
## ##
|
|
## ## logger.info("fuori dagli if': %s " % res.code)
|
|
## except requests.RequestException as e:
|
|
## """
|
|
## Il sito risulta non raggiungibile per qualche motivo
|
|
## quindi verrà disabilitato
|
|
## """
|
|
## logger.info("DICT: %s " % dict(error=e.message))
|
|
## logger.info("Canale : %s " % canale)
|
|
## logger.info("siti non raggiungibili: %s %s" % (url_org, res.status_code))
|
|
## logger.info("################")
|
|
## nonraggiungibile_domain.append((canale, url_org))
|
|
##
|
|
## logger.info("new_domain: %s " % new_domain)
|
|
## logger.info("code_error: %s " % code_error)
|
|
## logger.info("error_domain: %s " % error_domain)
|
|
## logger.info("nonraggiungibile_domain: %s " % nonraggiungibile_domain)
|