findhost in channels.json
This commit is contained in:
+55
-46
@@ -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"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -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]]
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
@@ -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)
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
@@ -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]]
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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
@@ -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
|
||||||
|
|||||||
@@ -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
@@ -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 """
|
||||||
|
|||||||
Reference in New Issue
Block a user