diff --git a/channels/0example.py.txt b/channels/0example.py.txt index f418da4a..40f8d6ed 100644 --- a/channels/0example.py.txt +++ b/channels/0example.py.txt @@ -76,8 +76,7 @@ def findhost(): # cancellare host non utilizzato host = scrapertoolsV2.find_single_match(permUrl, r'
(?P(.*?)
', action='peliculas')
return support.thumb(itemlist)
@@ -163,7 +163,7 @@ def anime(item):
def search(item, texto):
log(texto)
- findhost()
+
item.url = host + "/?s=" + texto
try:
@@ -276,7 +276,6 @@ def findvideos(item):
url = '\t' + scrapertoolsV2.find_single_match(page,'')
if url:
listurl.add(url)
- support.dbg()
return support.server(item, data=listurl if listurl else data)#, headers=headers)
# return itemlist
diff --git a/channels/toonitalia.py b/channels/toonitalia.py
index 693861cc..7736f26d 100644
--- a/channels/toonitalia.py
+++ b/channels/toonitalia.py
@@ -5,8 +5,7 @@
from core import support
-__channel__ = "toonitalia"
-host = support.config.get_channel_url(__channel__)
+host = support.config.get_channel_url()
headers = [['Referer', host]]
diff --git a/channels/vedohd.py b/channels/vedohd.py
index 1c71a669..094934c2 100644
--- a/channels/vedohd.py
+++ b/channels/vedohd.py
@@ -8,8 +8,7 @@ from core.item import Item
from platformcode import logger, config
from specials import autoplay
-__channel__ = "vedohd"
-host = config.get_channel_url(__channel__)
+host = config.get_channel_url()
headers = ""
IDIOMAS = {'Italiano': 'IT'}
diff --git a/channels/vvvvid.py b/channels/vvvvid.py
index 29a4e4a2..6ddacfbf 100644
--- a/channels/vvvvid.py
+++ b/channels/vvvvid.py
@@ -8,8 +8,7 @@ from core.item import Item
from specials import autorenumber
from lib.concurrent import futures
-__channel__ = "vvvvid"
-host = support.config.get_channel_url(__channel__)
+host = support.config.get_channel_url()
# Creating persistent session
current_session = requests.Session()
diff --git a/core/support.py b/core/support.py
index ad71e8e6..80bb7548 100755
--- a/core/support.py
+++ b/core/support.py
@@ -377,7 +377,16 @@ def scrape(func):
log('PATRON= ', patron)
if not data:
- data = httptools.downloadpage(item.url, headers=headers, ignore_response_code=True, session=item.session).data.replace("'", '"')
+ page = httptools.downloadpage(item.url, headers=headers, ignore_response_code=True, session=item.session)
+ # if url may be changed and channel has findhost to update
+ if (not page.data or scrapertoolsV2.get_domain_from_url(page.url) != scrapertoolsV2.get_domain_from_url(item.url)) and 'findhost' in func.__globals__:
+ host = func.__globals__['findhost']()
+ from core import jsontools
+ jsontools.update_node(host, func.__module__.split('.')[-1], 'url')
+ item.url = item.url.replace(scrapertoolsV2.get_domain_from_url(item.url), scrapertoolsV2.get_domain_from_url(host))
+ page = httptools.downloadpage(item.url, headers=headers, ignore_response_code=True,
+ session=item.session)
+ data = page.data.replace("'", '"')
data = re.sub('\n|\t', ' ', data)
data = re.sub(r'>\s+<', '> <', data)
# replace all ' with " and eliminate newline, so we don't need to worry about
diff --git a/platformcode/config.py b/platformcode/config.py
index ba6813fc..386e4b99 100644
--- a/platformcode/config.py
+++ b/platformcode/config.py
@@ -90,16 +90,24 @@ def is_xbmc():
def get_videolibrary_support():
return True
-def get_channel_url(name):
- try:
- import json
- except:
- import simplejson as json
- ROOT_DIR = xbmc.translatePath(__settings__.getAddonInfo('Path'))
- LOCAL_FILE = os.path.join(ROOT_DIR, "channels.json")
- with open(LOCAL_FILE) as f:
- data = json.load(f)
- return data[name]
+def get_channel_url(findhostMethod=None):
+ from core import jsontools
+ import inspect
+
+ frame = inspect.stack()[1]
+ name = os.path.basename(frame[0].f_code.co_filename).replace('.py', '')
+ if findhostMethod:
+ url = jsontools.get_node_from_file(name, 'url')
+ if not url:
+ url = findhostMethod()
+ jsontools.update_node(url, name, 'url')
+ return url
+ else:
+ ROOT_DIR = xbmc.translatePath(__settings__.getAddonInfo('Path'))
+ LOCAL_FILE = os.path.join(ROOT_DIR, "channels.json")
+ with open(LOCAL_FILE) as f:
+ data = jsontools.load(f.read())
+ return data[name]
def get_system_platform():
""" fonction: pour recuperer la platform que xbmc tourne """