findhost in channels.json

This commit is contained in:
marco
2020-10-09 20:15:04 +02:00
parent 454ef459f5
commit 3d39fbf4fa
20 changed files with 102 additions and 108 deletions
+55 -46
View File
@@ -1,48 +1,57 @@
{ {
"altadefinizione01": "https://www.altadefinizione01.green", "findhost": {
"altadefinizione01_link": "https://altadefinizione01.energy", "altadefinizione01": "https://altadefinizione01-nuovo.info",
"altadefinizioneclick": "https://altadefinizione.vote", "altadefinizioneclick": "https://altadefinizione-nuovo.me",
"animealtadefinizione": "https://www.animealtadefinizione.it", "animealtadefinizione": "https://www.animealtadefinizione.it",
"animeforce": "https://ww1.animeforce.org", "cineblog01": "https://cb01.uno",
"animeleggendari": "https://animeora.com", "eurostreaming": "https://eurostreaming.link",
"animesaturn": "https://www.animesaturn.it", "ilcorsaronero": "https://lagazzettadelcorsaro.com",
"animestream": "https://www.animeworld.tv", "seriehd": "https://nuovoindirizzo.info/seriehd",
"animesubita": "http://www.animesubita.org", "serietvonline": "https://serietvonline.online",
"animetubeita": "http://www.animetubeita.com", "tantifilm": "https://www.tantifilm.wiki",
"animeunity": "https://www.animeunity.it", "film4k": "https://film4k-nuovo.link"
"animeuniverse": "https://www.animeuniverse.it/", },
"animeworld": "https://www.animeworld.tv", "direct": {
"casacinema": "https://www.casacinema.page", "altadefinizione01_link": "https://altadefinizione01.energy",
"cb01anime": "https://www.cineblog01.red", "animealtadefinizione": "https://www.animealtadefinizione.it",
"cinemalibero": "https://www.cinemalibero.space", "animeforce": "https://ww1.animeforce.org",
"cinetecadibologna": "http://cinestore.cinetecadibologna.it", "animeleggendari": "https://animeora.com",
"dreamsub": "https://dreamsub.stream", "animesaturn": "https://www.animesaturn.it",
"dsda": "https://www.dsda.press", "animestream": "https://www.animeworld.tv",
"fastsubita": "https://fastsubita.online", "animesubita": "http://www.animesubita.org",
"filmgratis": "https://www.filmaltadefinizione.tv", "animetubeita": "http://www.animetubeita.com",
"filmigratis": "https://filmigratis.org", "animeunity": "https://www.animeunity.it",
"filmpertutti": "https://www.filmpertutti.fun", "animeuniverse": "https://www.animeuniverse.it/",
"filmsenzalimiticc": "https://www.filmsenzalimiti01.casa", "animeworld": "https://www.animeworld.tv",
"filmstreaming01": "https://filmstreaming01.com", "casacinema": "https://www.casacinema.page",
"guardaserie_stream": "https://guardaserie.host", "cb01anime": "https://www.cineblog01.red",
"guardaseriecam": "https://guardaserie.cam", "cinemalibero": "https://www.cinemalibero.space",
"guardaserieclick": "https://www.guardaserie.blue", "cinetecadibologna": "http://cinestore.cinetecadibologna.it",
"guardaserieicu": "https://guardaserie.us", "dreamsub": "https://dreamsub.stream",
"hd4me": "https://hd4me.net", "dsda": "https://www.dsda.press",
"ilgeniodellostreaming": "https://ilgeniodellostreaming.fi", "fastsubita": "https://fastsubita.online",
"ilgeniodellostreaming_cam": "https://ilgeniodellostreaming.tel", "filmgratis": "https://www.filmaltadefinizione.tv",
"italiaserie": "https://italiaserie.org", "filmigratis": "https://filmigratis.org",
"mondoserietv": "https://mondoserietv.fun", "filmpertutti": "https://www.filmpertutti.fun",
"piratestreaming": "https://www.piratestreaming.buzz", "filmsenzalimiticc": "https://www.filmsenzalimiti01.casa",
"polpotv": "https://polpotv.life", "filmstreaming01": "https://filmstreaming01.com",
"raiplay": "https://www.raiplay.it", "guardaserie_stream": "https://guardaserie.host",
"seriehd": "https://seriehd.group", "guardaseriecam": "https://guardaserie.cam",
"serietvonline": "https://serietvonline.biz", "guardaserieclick": "https://www.guardaserie.blue",
"serietvsubita": "http://serietvsubita.xyz", "guardaserieicu": "https://guardaserie.us",
"serietvu": "https://www.serietvu.link", "hd4me": "https://hd4me.net",
"streamingcommunity": "https://streamingcommunity.to", "ilgeniodellostreaming": "https://ilgeniodellostreaming.fi",
"streamtime": "https://t.me/s/StreamTime", "ilgeniodellostreaming_cam": "https://ilgeniodellostreaming.tel",
"tantifilm": "https://www.tantifilm.tel", "italiaserie": "https://italiaserie.org",
"toonitalia": "https://toonitalia.org", "mondoserietv": "https://mondoserietv.fun",
"vvvvid": "https://www.vvvvid.it" "piratestreaming": "https://www.piratestreaming.buzz",
"polpotv": "https://polpotv.life",
"raiplay": "https://www.raiplay.it",
"serietvsubita": "http://serietvsubita.xyz",
"serietvu": "https://www.serietvu.link",
"streamingcommunity": "https://streamingcommunity.to",
"streamtime": "https://t.me/s/StreamTime",
"toonitalia": "https://toonitalia.org",
"vvvvid": "https://www.vvvvid.it"
}
} }
+4 -5
View File
@@ -54,18 +54,17 @@ from core.item import Item # per newest
# se il sito ha un link per ottenere l'url corretto in caso di oscuramenti # se il sito ha un link per ottenere l'url corretto in caso di oscuramenti
# la funzione deve ritornare l'indirizzo corretto, verrà chiamata solo se necessario (link primario irraggiungibile) # la funzione deve ritornare l'indirizzo corretto, verrà chiamata solo se necessario (link primario irraggiungibile)
def findhost(): def findhost(url):
def findhost(): permUrl = httptools.downloadpage(url, follow_redirects=False).headers
permUrl = httptools.downloadpage('https://www.cb01.uno/', follow_redirects=False).headers
if 'google' in permUrl['location']: if 'google' in permUrl['location']:
host = permUrl['location'].replace('https://www.google.it/search?q=site:', '') host = permUrl['location'].replace('https://www.google.it/search?q=site:', '')
else: else:
host = permUrl['location'] host = permUrl['location']
return host return host
# se si usa findhost # se si usa findhost metti in channels.json l'url del sito che contiene sempre l'ultimo dominio
host = config.get_channel_url(findhost) host = config.get_channel_url(findhost)
# se non si usa (metti l'url in channels.json) # se non si usa metti direttamente l'url finale in channels.json
host = config.get_channel_url() host = config.get_channel_url()
headers = [['Referer', host]] headers = [['Referer', host]]
+2 -3
View File
@@ -17,10 +17,9 @@ from core import scrapertools, httptools, support
from core.item import Item from core.item import Item
from platformcode import config, logger from platformcode import config, logger
#impostati dinamicamente da findhost()
def findhost(): def findhost(url):
data = httptools.downloadpage('https://altadefinizione01-nuovo.info/').data data = httptools.downloadpage(url).data
host = scrapertools.find_single_match(data, '<div class="elementor-button-wrapper"> <a href="([^"]+)"') host = scrapertools.find_single_match(data, '<div class="elementor-button-wrapper"> <a href="([^"]+)"')
return host return host
+2 -2
View File
@@ -21,8 +21,8 @@ from core import support
from core.item import Item from core.item import Item
from platformcode import config from platformcode import config
def findhost(): def findhost(url):
data = support.httptools.downloadpage('https://altadefinizione-nuovo.me/').data data = support.httptools.downloadpage(url).data
host = support.scrapertools.find_single_match(data, '<div class="elementor-button-wrapper"> <a href="([^"]+)"') host = support.scrapertools.find_single_match(data, '<div class="elementor-button-wrapper"> <a href="([^"]+)"')
return host return host
+2 -2
View File
@@ -11,8 +11,8 @@ from lib import unshortenit
from platformcode import logger, config from platformcode import logger, config
def findhost(): def findhost(url):
host = httptools.downloadpage('https://cb01.uno/', follow_redirect=True).url host = httptools.downloadpage(url, follow_redirect=True).url
if host == 'https://cb01.uno/': if host == 'https://cb01.uno/':
host = support.match(host, patron=r'<a href="([^"]+)', debug=True).match host = support.match(host, patron=r'<a href="([^"]+)', debug=True).match
return host return host
+1 -1
View File
@@ -11,7 +11,7 @@ from platformcode import config
# rimanda a .today che contiene tutti link a .plus # rimanda a .today che contiene tutti link a .plus
# def findhost(): # def findhost(url):
# permUrl = httptools.downloadpage('https://www.cinemalibero.online/', follow_redirects=False).headers # permUrl = httptools.downloadpage('https://www.cinemalibero.online/', follow_redirects=False).headers
# try: # try:
# import urlparse # import urlparse
+2 -2
View File
@@ -7,8 +7,8 @@
from core import httptools, support from core import httptools, support
from core.item import Item from core.item import Item
def findhost(): def findhost(url):
permUrl = httptools.downloadpage('https://eurostreaming.link/', follow_redirects=False, only_headers=True).headers permUrl = httptools.downloadpage(url, follow_redirects=False, only_headers=True).headers
host = 'https://'+permUrl['location'].replace('https://www.google.it/search?q=site:', '') host = 'https://'+permUrl['location'].replace('https://www.google.it/search?q=site:', '')
return host return host
+2 -2
View File
@@ -7,8 +7,8 @@ from core import support
from platformcode import logger, config from platformcode import logger, config
def findhost(): def findhost(url):
return support.httptools.downloadpage('https://film4k-nuovo.link').url return support.httptools.downloadpage(url).url
host = config.get_channel_url(findhost) host = config.get_channel_url(findhost)
+1 -1
View File
@@ -7,7 +7,7 @@ from core import httptools, support
from core.item import Item from core.item import Item
from platformcode import config from platformcode import config
# def findhost(): # def findhost(url):
# page = httptools.downloadpage("https://filmpertutti.nuovo.live/").data # page = httptools.downloadpage("https://filmpertutti.nuovo.live/").data
# url = scrapertools.find_single_match(page, 'Il nuovo indirizzo di FILMPERTUTTI è <a href="([^"]+)') # url = scrapertools.find_single_match(page, 'Il nuovo indirizzo di FILMPERTUTTI è <a href="([^"]+)')
# return url # return url
+2 -2
View File
@@ -5,8 +5,8 @@
from core import support from core import support
def findhost(): def findhost(url):
data = support.httptools.downloadpage('https://lagazzettadelcorsaro.com/').data data = support.httptools.downloadpage(url).data
url = support.scrapertools.find_single_match(data, '<li><a href="([^"]+)') url = support.scrapertools.find_single_match(data, '<li><a href="([^"]+)')
return url[:-1] if url.endswith('/') else url return url[:-1] if url.endswith('/') else url
+1 -9
View File
@@ -4,17 +4,9 @@
# ------------------------------------------------------------ # ------------------------------------------------------------
from core import support from core import support
from core.item import Item
from platformcode import config
from xml.dom import minidom
#impostati dinamicamente da findhost()
host = 'https://metalvideo.com' host = 'https://metalvideo.com'
headers={'X-Requested-With': 'XMLHttpRequest'} headers = {'X-Requested-With': 'XMLHttpRequest'}
@support.scrape @support.scrape
+1 -1
View File
@@ -7,7 +7,7 @@ from core import support
from core.item import Item from core.item import Item
from platformcode import logger, config from platformcode import logger, config
# def findhost(): # def findhost(url):
# return 'https://' + support.match('https://netfreex.uno/', patron='value="site:([^"]+)"').match # return 'https://' + support.match('https://netfreex.uno/', patron='value="site:([^"]+)"').match
host = config.get_channel_url() host = config.get_channel_url()
+2 -2
View File
@@ -5,8 +5,8 @@
from core import support from core import support
def findhost(): def findhost(url):
return support.match('https://nuovoindirizzo.info/seriehd/', patron=r'<h2[^>]+><a href="([^"]+)"').match return support.match(url, patron=r'<h2[^>]+><a href="([^"]+)"').match
host = support.config.get_channel_url(findhost) host = support.config.get_channel_url(findhost)
headers = [['Referer', host]] headers = [['Referer', host]]
+2 -2
View File
@@ -21,8 +21,8 @@ from platformcode import config
from core.item import Item from core.item import Item
def findhost(): def findhost(url):
host = support.match('https://serietvonline.online', patron=r'href="([^"]+)">\s*cliccando qui').matches[-1] host = support.match(url, patron=r'href="([^"]+)">\s*cliccando qui').matches[-1]
return host return host
host = config.get_channel_url(findhost) host = config.get_channel_url(findhost)
+2 -2
View File
@@ -13,8 +13,8 @@ else:
from urllib import unquote from urllib import unquote
def findhost(): def findhost(url):
data = httptools.downloadpage('https://www.popcornstream-nuovo-indirizzo.online/').data data = httptools.downloadpage(url).data
return support.scrapertools.find_single_match(data, '<a href="([^"]+)') return support.scrapertools.find_single_match(data, '<a href="([^"]+)')
host = config.get_channel_url(findhost) host = config.get_channel_url(findhost)
+2 -2
View File
@@ -12,8 +12,8 @@ from platformcode import logger
from platformcode import config, unify from platformcode import config, unify
def findhost(): def findhost(url):
permUrl = httptools.downloadpage('https://www.tantifilm.wiki/').data permUrl = httptools.downloadpage(url).data
host = scrapertools.find_single_match(permUrl, r'Nuovo indirizzo: <a href="([^"]+)') host = scrapertools.find_single_match(permUrl, r'Nuovo indirizzo: <a href="([^"]+)')
return host return host
-7
View File
@@ -4,18 +4,11 @@
# ------------------------------------------------------------ # ------------------------------------------------------------
from core import support from core import support
from core.item import Item
from platformcode import config
from xml.dom import minidom
#impostati dinamicamente da findhost()
host = 'http://api.radiotime.com' host = 'http://api.radiotime.com'
headers = [['Referer', host]] headers = [['Referer', host]]
@support.scrape @support.scrape
def mainlist(item): def mainlist(item):
item.url = host item.url = host
+3 -4
View File
@@ -82,7 +82,6 @@ def color(text, color):
def search(channel, item, texto): def search(channel, item, texto):
info(item.url + " search " + texto) info(item.url + " search " + texto)
if 'findhost' in dir(channel): channel.findhost()
item.url = channel.host + "/?s=" + texto item.url = channel.host + "/?s=" + texto
try: try:
return channel.peliculas(item) return channel.peliculas(item)
@@ -479,10 +478,10 @@ def scrape(func):
# if url may be changed and channel has findhost to update # if url may be changed and channel has findhost to update
if 'findhost' in func.__globals__ and not itemlist: if 'findhost' in func.__globals__ and not itemlist:
info('running findhost ' + func.__module__) info('running findhost ' + func.__module__)
host = func.__globals__['findhost']() ch = func.__module__.split('.')[-1]
host = config.get_channel_url(func.__globals__['findhost'], ch, True)
parse = list(urlparse.urlparse(item.url)) parse = list(urlparse.urlparse(item.url))
from core import jsontools
jsontools.update_node(host, func.__module__.split('.')[-1], 'url')
parse[1] = scrapertools.get_domain_from_url(host) parse[1] = scrapertools.get_domain_from_url(host)
item.url = urlparse.urlunparse(parse) item.url = urlparse.urlunparse(parse)
data = None data = None
+3 -2
View File
@@ -258,10 +258,10 @@ def check_channels(inutile=''):
risultato = {} risultato = {}
for chann, host in sorted(data.items()): for chann, host in sorted(data['direct'].items()):
ris = [] ris = []
# to get an idea of the timing # to get an idea of the timing
# useful only if you control all channels # useful only if you control all channels
# for channels with error 522 about 40 seconds are lost ... # for channels with error 522 about 40 seconds are lost ...
logger.info("check #### INIZIO #### channel - host :%s - %s " % (chann, host)) logger.info("check #### INIZIO #### channel - host :%s - %s " % (chann, host))
@@ -290,6 +290,7 @@ def check_channels(inutile=''):
logger.info("check #### FINE #### rslt :%s " % (rslt)) logger.info("check #### FINE #### rslt :%s " % (rslt))
risultato = {'findhost': data['findhost'], 'direct': risultato}
fileJson_test = 'channels-test.json' fileJson_test = 'channels-test.json'
# I write the updated file # I write the updated file
with open(folderJson+'/'+fileJson_test, 'w') as f: with open(folderJson+'/'+fileJson_test, 'w') as f:
+13 -11
View File
@@ -15,7 +15,7 @@ __language__ = __settings__.getLocalizedString
__version_fix = None __version_fix = None
__dev_mode = None __dev_mode = None
channels_data = list() channels_data = dict()
def get_addon_core(): def get_addon_core():
return __settings__ return __settings__
@@ -101,27 +101,29 @@ def is_xbmc():
def get_videolibrary_support(): def get_videolibrary_support():
return True return True
def get_channel_url(findhostMethod=None, name=None):
def get_channel_url(findhostMethod=None, name=None, forceFindhost=False):
from core import jsontools from core import jsontools
import inspect import inspect
LOCAL_FILE = os.path.join(get_runtime_path(), "channels.json")
global channels_data
if not channels_data:
with open(LOCAL_FILE) as f:
channels_data = jsontools.load(f.read())
frame = inspect.stack()[1] frame = inspect.stack()[1]
if not name: if not name:
name = os.path.basename(frame[0].f_code.co_filename).replace('.py', '') name = os.path.basename(frame[0].f_code.co_filename).replace('.py', '')
if findhostMethod: if findhostMethod:
url = jsontools.get_node_from_file(name, 'url') url = jsontools.get_node_from_file(name, 'url')
if not url or 'web.archive.org' in url: # per eliminare tutti i webarchive salvati causa bug httptools CF, eliminare in futuro if not url or 'web.archive.org' in url or forceFindhost: # per eliminare tutti i webarchive salvati causa bug httptools CF, eliminare in futuro
url = findhostMethod() url = findhostMethod(channels_data['findhost'][name])
jsontools.update_node(url, name, 'url') jsontools.update_node(url, name, 'url')
return url return url
else: else:
ROOT_DIR = xbmc.translatePath(__settings__.getAddonInfo('Path')) return channels_data['direct'][name]
LOCAL_FILE = os.path.join(ROOT_DIR, "channels.json")
global channels_data
if not channels_data:
with open(LOCAL_FILE) as f:
channels_data = jsontools.load(f.read())
return channels_data[name]
def get_system_platform(): def get_system_platform():
""" function: to recover the platform that xbmc is running """ """ function: to recover the platform that xbmc is running """