Merge remote-tracking branch 'origin/master'

This commit is contained in:
marco
2020-11-26 21:12:47 +01:00
9 changed files with 76 additions and 110 deletions
+1 -1
View File
@@ -42,7 +42,7 @@
"hd4me": "https://hd4me.net", "hd4me": "https://hd4me.net",
"ilgeniodellostreaming": "https://ilgeniodellostreaming.pet", "ilgeniodellostreaming": "https://ilgeniodellostreaming.pet",
"ilgeniodellostreaming_cam": "https://ilgeniodellostreaming.gold", "ilgeniodellostreaming_cam": "https://ilgeniodellostreaming.gold",
"italiaserie": "https://italiaserie.eu", "italiaserie": "https://italiaserie.run",
"mondoserietv": "https://mondoserietv.fun", "mondoserietv": "https://mondoserietv.fun",
"piratestreaming": "https://www.piratestreaming.deals", "piratestreaming": "https://www.piratestreaming.deals",
"polpotv": "https://polpotv.life", "polpotv": "https://polpotv.life",
+9 -9
View File
@@ -75,7 +75,7 @@ def peliculas(item):
else: else:
patron = r'<div class="cover-racolta">\s*<a href="(?P<url>[^"]+)"[^>]+>\s*<img width="[^"]+" height="[^"]+" src="(?P<thumb>[^"]+)".*?<p class="title[^>]+>(?P<title>[^<]+)<' patron = r'<div class="cover-racolta">\s*<a href="(?P<url>[^"]+)"[^>]+>\s*<img width="[^"]+" height="[^"]+" src="(?P<thumb>[^"]+)".*?<p class="title[^>]+>(?P<title>[^<]+)<'
else: else:
patron = r'<article[^>]+>[^>]+>[^>]+>(?:<img width="[^"]+" height="[^"]+" src="(?P<thumb>[^"]+)"[^>]+>)?.*?<a href="(?P<url>[^"]+)">\s*(?P<title>[^<]+)<[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>\s*<p>(?P<plot>[^<]+)<' patron = r'<article[^>]+>[^>]+>[^>]+>(?:<img width="[^"]+" height="[^"]+" src="(?P<thumb>[^"]+)"[^>]+>)?.*?<a href="(?P<url>[^"]+)"[^>]*>\s*(?P<title>[^<]+)<[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>\s*<p>(?P<plot>[^<]+)<'
patronNext = r'<a class="page-numbers next" href="([^"]+)">' patronNext = r'<a class="page-numbers next" href="([^"]+)">'
# select category # select category
@@ -121,14 +121,14 @@ def episodios(item):
else: else:
patron = r'class="title-episodio">(?P<title>[^<]+)<(?P<url>.*?)<p' patron = r'class="title-episodio">(?P<title>[^<]+)<(?P<url>.*?)<p'
def itemlistHook(itemlist): # def itemlistHook(itemlist):
counter = 0 # counter = 0
for item in itemlist: # for item in itemlist:
episode = support.match(item.title, patron=r'\d+').match # episode = support.match(item.title, patron=r'\d+').match
if episode == '1': # if episode == '1':
counter += 1 # counter += 1
item.title = support.typo(str(counter) + 'x' + episode.zfill(2) + support.re.sub(r'\[[^\]]+\](?:\d+)?','',item.title),'bold') # item.title = support.typo(str(counter) + 'x' + episode.zfill(2) + support.re.sub(r'\[[^\]]+\](?:\d+)?','',item.title),'bold')
return itemlist # return itemlist
return locals() return locals()
+1 -1
View File
@@ -2,7 +2,7 @@
"id": "film4k", "id": "film4k",
"name": "Film4k", "name": "Film4k",
"language": ["ita"], "language": ["ita"],
"active": true, "active": false,
"thumbnail": "film4k.png", "thumbnail": "film4k.png",
"banner": "film4k.png", "banner": "film4k.png",
"categories": ["tvshow", "movie", "anime"], "categories": ["tvshow", "movie", "anime"],
+1 -1
View File
@@ -28,7 +28,7 @@ def mainlist(item):
@support.scrape @support.scrape
def peliculas(item): def peliculas(item):
patronBlock = r'movies-list movies-list-full(?P<block>.*?)footer>' patronBlock = r'movies-list movies-list-full(?P<block>.*?)footer>'
patron = r'<div data-movie-id[^>]+> <a href="(?P<url>[^"]+).*?<img data-original="(?P<thumbnail>[^"]+)[^>]+>[^>]+>[^>]+>(?P<title>[^<]+).*?jt-info[^>]+>[^:]+:\s*(?P<rating>[^<]+).*?rel="tag">(?P<year>\d+).*?jt-info">(?P<duration>\d+)' patron = r'<div data-movie-id[^>]+>\s*<a href="(?P<url>[^"]+)"[^>]+>[^>]+>[^>]+><img src="(?P<thumbnail>[^"]+)[^>]+>[^>]+>[^>]+>[^>]+>(?P<title>[^<]+).*?jt-info[^>]+>[^:]+:\s*(?P<rating>[^<]+)[^>]+>[^>]+>[^>]+>(?P<year>\d*)[^>]+>[^>]+>[^>]+>(?P<duration>\d*)'
patronNext = '<li class=.active.>.*?href=.(.*?).>' patronNext = '<li class=.active.>.*?href=.(.*?).>'
action = 'episodios' action = 'episodios'
return locals() return locals()
+33 -55
View File
@@ -2,22 +2,11 @@
# ------------------------------------------------------------ # ------------------------------------------------------------
# Canale per italiaserie # Canale per italiaserie
# ------------------------------------------------------------ # ------------------------------------------------------------
"""
Problemi noti che non superano il test del canale:
Avvisi:
Ulteriori info:
"""
import re
from core import support, httptools, scrapertools from core import support, httptools, scrapertools
from core.item import Item from core.item import Item
from platformcode import config from platformcode import config, logger
host = config.get_channel_url() host = config.get_channel_url()
headers = [['Referer', host]] headers = [['Referer', host]]
@@ -25,11 +14,11 @@ headers = [['Referer', host]]
@support.menu @support.menu
def mainlist(item): def mainlist(item):
support.info() tvshow = ['',
('Aggiornamenti', ['/aggiornamento-episodi/', 'peliculas', 'update']),
tvshow = ['/category/serie-tv/', ('Top 10', ['/top-10', 'peliculas', 'top']),
('Aggiornamenti', ['/ultimi-episodi/', 'peliculas', 'update']), ('Netflix {tv submenu}', ['/genere/netflix', 'peliculas']),
('Generi', ['', 'category', 'Serie-Tv per Genere']) ('A-Z', ['/lista-completa', 'peliculas', 'a-z'])
] ]
return locals() return locals()
@@ -37,44 +26,46 @@ def mainlist(item):
@support.scrape @support.scrape
def peliculas(item): def peliculas(item):
support.info()
action = 'episodios' action = 'episodios'
patron = r'<div class="post-thumb">\s*<a href="(?P<url>[^"]+)" '\ patron = r'<div class="post-thumb">\s*<a href="(?P<url>[^"]+)" title="(?P<title>[^"\[]+)[^>]+>\s*<img src="(?P<thumb>[^"]+)"[^>]+>'
'title="(?P<title>[^"]+)">\s*<img src="(?P<thumb>[^"]+)"[^>]+>'
if item.args == 'update': if item.args == 'update':
patron += r'.*?aj-eps">(?P<episode>.+?)[ ]?(?P<lang>Sub-Ita|Ita)</span>' pagination = ''
patron = r'br />(?P<title>[^]+)[^<]+<a href="(?P<url>[^"]+)">(?P<episode>[^ ]+)\s*(?P<title2>[^\(<]+)(?:\((?P<lang>[^\)]+))??'
action = 'findvideos' action = 'findvideos'
if item.args == 'top':
patron = r'<a href="(?P<url>[^"]+)">(?P<title>[^<]+)</a>[^>]+>[^>]+>[^>]+><img.*?src="(?P<thumb>[^"]+)"[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>:\s*(?P<rating>[^/]+)'
if item.args =='a-z':
pagination = ''
patron = r'<li ><a href="(?P<url>[^"]+)" title="(?P<title>[^"]+)"'
patronNext = r'<a class="next page-numbers" href="(.*?)">' patronNext = r'<a class="next page-numbers" href="(.*?)">'
## debug = True def itemHook(item):
item.title = support.re.sub(r'<[^>]+>','', item.title)
return item
return locals() return locals()
@support.scrape @support.scrape
def episodios(item): def episodios(item):
support.info() res = support.match(item, patron=r'<a href="([^"]+)">&gt;')
if res.match: data = support.match(res.match).data
else: data = res.data
patronBlock = r'</i> Stagione (?P<block>(?P<season>\d+)</div> '\ patronBlock = r'(?:Stagione|STAGIONE)\s*(?P<lang>[^<]+)?(?:</p>)?(?P<block>.*?)</p>'
'<div class="su-spoiler-content".*?)<div class="clearfix">' patron = r'(?:p>|/>)(?P<title>[^]+)(?P<data>.*?)(?:<br|$)'
patron = r'(?:(?P<season>\d+)?</div> <div class="su-spoiler-content"(:?.+?)?> )?'\
'<div class="su-link-ep">\s+<a.*?href="(?P<url>[^"]+)".*?strong>[ ]'\
'(?P<title>.+?)[ ](?P<episode>\d+-\d+|\d+)[ ](?:-\s+(?P<title2>.+?))?'\
'[ ]?(?:(?P<lang>Sub-ITA))?[ ]?</strong>'
def itemHook(item):
#debug = True item.title = support.re.sub('<[^>]+>','', item.title)
return item
return locals() return locals()
@support.scrape @support.scrape
def category(item): def category(item):
support.info()
action = 'peliculas' action = 'peliculas'
patron = r'<li class="cat-item.*?href="(?P<url>[^"]+)".*?>(?P<title>.*?)</a>' patron = r'<li class="cat-item.*?href="(?P<url>[^"]+)".*?>(?P<title>.*?)</a>'
return locals() return locals()
@@ -111,41 +102,28 @@ def newest(categoria):
except: except:
import sys import sys
for line in sys.exc_info(): for line in sys.exc_info():
support.info("{0}".format(line)) logger.error("{0}".format(line))
return [] return []
return itemlist return itemlist
def findvideos(item): def findvideos(item):
support.info() logger.debug()
if item.args == 'update': if item.args == 'update':
itemlist = [] itemlist = []
item.infoLabels['mediatype'] = 'episode' item.infoLabels['mediatype'] = 'episode'
data = httptools.downloadpage(item.url, headers=headers).data data = support.match(item.url, headers=headers).data
data = re.sub('\n|\t', ' ', data) url_video = support.match(data, patron=r'<a rel="[^"]+" target="[^"]+" act="[^"]+"\s+href="([^"]+)" class="[^"]+-link".+?\d+.+?</strong> </a>').matches
data = re.sub(r'>\s+<', '> <', data) url_serie = support.match(data, patron=r'<link rel="canonical" href="([^"]+)" />').matches
url_video = scrapertools.find_single_match(data, r'<a rel="[^"]+" target="[^"]+" act="[^"]+"\s+href="([^"]+)" class="[^"]+-link".+?\d+.+?</strong> </a>', -1)
url_serie = scrapertools.find_single_match(data, r'<link rel="canonical" href="([^"]+)" />')
goseries = support.typo("Vai alla Serie:", ' bold') goseries = support.typo("Vai alla Serie:", ' bold')
series = support.typo(item.contentSerieName, ' bold color kod') series = support.typo(item.contentSerieName, ' bold color kod')
itemlist = support.server(item, data=url_video) itemlist = support.server(item, data=url_video)
itemlist.append( itemlist.append(item.clone(title=goseries + series, contentType='tvshow', url=url_serie, action='episodios', plot = goseries + series + "con tutte le puntate"))
Item(channel=item.channel,
title=goseries + series,
fulltitle=item.fulltitle,
show=item.show,
contentType='tvshow',
contentSerieName=item.contentSerieName,
url=url_serie,
action='episodios',
contentTitle=item.contentSerieName,
plot = goseries + series + "con tutte le puntate",
))
return itemlist return itemlist
else: else:
return support.server(item, data=item.url) return support.server(item, data=item.data)
+2 -2
View File
@@ -13,7 +13,7 @@ headers = {'X-Requested-With': 'XMLHttpRequest'}
def mainlist(item): def mainlist(item):
item.url = host item.url = host
action = 'peliculas' action = 'peliculas'
patronBlock = r'<ul class="dropdown-menu(?P<block>.*?)</ul> </div' patronBlock = r'<ul class="dropdown-menu(?P<block>.*?)</ul>\s*</div'
patron = r'<a href="(?P<url>[^"]+)"(?: class="")?>(?P<title>[^<]+)<' patron = r'<a href="(?P<url>[^"]+)"(?: class="")?>(?P<title>[^<]+)<'
def itemHook(item): def itemHook(item):
item.thumbnail = support.thumb('music') item.thumbnail = support.thumb('music')
@@ -24,7 +24,7 @@ def mainlist(item):
itemlist.append( itemlist.append(
support.Item( support.Item(
channel=item.channel, channel=item.channel,
title=support.typo('Cerca...', 'bold color kod'), title=support.typo('Cerca...', 'bold'),
contentType='music', contentType='music',
url=item.url, url=item.url,
action='search', action='search',
+1 -1
View File
@@ -1392,7 +1392,7 @@ def thumb(item_itemlist_string=None, genre=False, live=False):
'_tvshow':['serie','tv', 'fiction']} '_tvshow':['serie','tv', 'fiction']}
def autoselect_thumb(item, genre): def autoselect_thumb(item, genre):
logger.debug('SPLIT',re.split(r'\.|\{|\}|\[|\]|\(|\)|/| ',item.title.lower())) # logger.debug('SPLIT',re.split(r'\.|\{|\}|\[|\]|\(|\)|/| ',item.title.lower()))
if genre == False: if genre == False:
for thumb, titles in icon_dict.items(): for thumb, titles in icon_dict.items():
if any(word in re.split(r'\.|\{|\}|\[|\]|\(|\)|/| ',item.title.lower()) for word in search): if any(word in re.split(r'\.|\{|\}|\[|\]|\(|\)|/| ',item.title.lower()) for word in search):
+6 -17
View File
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import re, time import re, time
from lib import js2py from lib import js2py
from core import httptools, scrapertools from core import httptools, scrapertools
from platformcode import logger, config from platformcode import logger, config
@@ -21,28 +21,17 @@ def get_video_url(page_url, premium=False, user="", password="", video_password=
# from core.support import dbg;dbg() # from core.support import dbg;dbg()
global data global data
logger.debug("URL", page_url) logger.debug("URL", page_url)
# from core.support import dbg;dbg()
video_urls = list() video_urls = []
host = "https://dood.to" host = scrapertools.find_single_match(page_url, r'http[s]?://[^/]+')
new_url = scrapertools.find_single_match(data, r'<iframe src="([^"]+)"') new_url = scrapertools.find_single_match(data, r'<iframe src="([^"]+)"')
if new_url: if new_url: data = httptools.downloadpage(host + new_url).data
data = httptools.downloadpage(host + new_url).data
logger.debug('DATA', data)
label = scrapertools.find_single_match(data, r'type:\s*"video/([^"]+)"') label = scrapertools.find_single_match(data, r'type:\s*"video/([^"]+)"')
# js_code = scrapertools.find_single_match(data, ('(function makePlay.*?;})'))
# js_code = re.sub(r"\+Date.now\(\)", '', js_code)
# js = js2py.eval_js(js_code)
# makeplay = js() + str(int(time.time()*1000))
# base_url = scrapertools.find_single_match(data, r"\$.get\('([^']+)'")
# data = httptools.downloadpage("%s%s" % (host, base_url), headers={"referer": page_url}).data
# data = re.sub(r'\s+', '', data)
base_url, token = scrapertools.find_single_match(data, r'''dsplayer\.hotkeys[^']+'([^']+).+?function\s*makePlay.+?return[^?]+([^"]+)''') base_url, token = scrapertools.find_single_match(data, r'''dsplayer\.hotkeys[^']+'([^']+).+?function\s*makePlay.+?return[^?]+([^"]+)''')
url = httptools.downloadpage(host + base_url, headers={"referer": page_url}).data url = '{}{}{}|Referer={}'.format(httptools.downloadpage(host + base_url, headers={"Referer": page_url}).data, token, str(int(time.time() * 1000)), page_url)
url += token + "|Referer=%s" % page_url
video_urls.append([ label + ' [DooD Stream]', url]) video_urls.append([ label + ' [DooD Stream]', url])
return video_urls return video_urls
+22 -23
View File
@@ -6,7 +6,7 @@ import re, inspect, xbmcgui
from core import httptools, jsontools, tmdb, support, filetools from core import httptools, jsontools, tmdb, support, filetools
from core.item import Item from core.item import Item
from platformcode import config, platformtools from platformcode import config, platformtools, logger
from channelselector import get_thumb from channelselector import get_thumb
from collections import OrderedDict from collections import OrderedDict
@@ -25,7 +25,7 @@ list_quality = ['SD', '720', '1080', '4k']
tmdb_api = 'a1ab8b8669da03637a4b98fa39c39228' tmdb_api = 'a1ab8b8669da03637a4b98fa39c39228'
def mainlist(item): def mainlist(item):
support.info() logger.debug()
path = filetools.join(config.get_data_path(), 'community_channels.json') path = filetools.join(config.get_data_path(), 'community_channels.json')
if not filetools.exists(path): if not filetools.exists(path):
@@ -37,7 +37,7 @@ def mainlist(item):
def show_channels(item): def show_channels(item):
support.info() logger.debug()
itemlist = [] itemlist = []
# add context menu # add context menu
@@ -77,7 +77,7 @@ def show_channels(item):
def show_menu(item): def show_menu(item):
support.info() logger.debug()
itemlist = [] itemlist = []
@@ -116,12 +116,12 @@ def show_menu(item):
if 'channel_name' in json and not 'disable_search' in json and 'search' not in json: if 'channel_name' in json and not 'disable_search' in json and 'search' not in json:
itemlist += get_search_menu(item, json, channel_name=json['channel_name']) itemlist += get_search_menu(item, json, channel_name=json['channel_name'])
support.info('PAGINATION:', disable_pagination) logger.debug('PAGINATION:', disable_pagination)
return itemlist return itemlist
def search(item, text): def search(item, text):
support.info(text) logger.info('search',text)
itemlist = [] itemlist = []
if item.custom_search: if item.custom_search:
@@ -170,7 +170,7 @@ def global_search(item, text):
def peliculas(item, json='', key='', itemlist=[]): def peliculas(item, json='', key='', itemlist=[]):
item.plot = item.thumb = item.fanart ='' item.plot = item.thumb = item.fanart =''
support.info('PAGINATION:', item.disable_pagination) logger.debug('PAGINATION:', item.disable_pagination)
if not json: if not json:
key = item.key key = item.key
json = load_json(item)[key] json = load_json(item)[key]
@@ -241,7 +241,7 @@ def peliculas(item, json='', key='', itemlist=[]):
def get_seasons(item): def get_seasons(item):
support.info() logger.debug()
itemlist = [] itemlist = []
infoLabels = item.infoLabels infoLabels = item.infoLabels
json = item.url if type(item.url) == dict else item.url json = item.url if type(item.url) == dict else item.url
@@ -281,7 +281,7 @@ def get_seasons(item):
def episodios(item, json ='', key='', itemlist =[]): def episodios(item, json ='', key='', itemlist =[]):
support.info() logger.debug()
infoLabels = item.infoLabels infoLabels = item.infoLabels
itm=item itm=item
@@ -394,7 +394,7 @@ def episodios(item, json ='', key='', itemlist =[]):
# Find Servers # Find Servers
def findvideos(item): def findvideos(item):
support.info() logger.debug()
itemlist = [] itemlist = []
if 'links' in item.url: if 'links' in item.url:
json = item.url['links'] json = item.url['links']
@@ -414,7 +414,7 @@ def findvideos(item):
################################ Menu ################################ ################################ Menu ################################
def get_menu(item, json, key, itemlist=[]): def get_menu(item, json, key, itemlist=[]):
support.info() logger.debug()
json = json[key] json = json[key]
for option in json: for option in json:
title = option['title'] if 'title' in option else json[option] if 'search' not in option else '' title = option['title'] if 'title' in option else json[option] if 'search' not in option else ''
@@ -449,7 +449,7 @@ def get_menu(item, json, key, itemlist=[]):
def get_sub_menu(item, json, key, itemlist=[]): def get_sub_menu(item, json, key, itemlist=[]):
support.info() logger.debug()
json = json[key] json = json[key]
search = False search = False
if item.menu: if item.menu:
@@ -488,7 +488,7 @@ def get_sub_menu(item, json, key, itemlist=[]):
def get_search_menu(item, json='', itemlist=[], channel_name=''): def get_search_menu(item, json='', itemlist=[], channel_name=''):
support.info() logger.debug()
if 'title' in json: if 'title' in json:
title = json['title'] title = json['title']
elif channel_name: elif channel_name:
@@ -514,7 +514,7 @@ def get_search_menu(item, json='', itemlist=[], channel_name=''):
def submenu(item, json, key, itemlist = [], filter_list = []): def submenu(item, json, key, itemlist = [], filter_list = []):
support.info(item) logger.debug(item)
import sys import sys
if sys.version_info[0] >= 3: if sys.version_info[0] >= 3:
from concurrent import futures from concurrent import futures
@@ -585,7 +585,6 @@ def filter_thread(filter, key, item, description):
if id: if id:
thumbnail = 'https://image.tmdb.org/t/p/original' + results['profile_path'] if results['profile_path'] else item.thumbnail thumbnail = 'https://image.tmdb.org/t/p/original' + results['profile_path'] if results['profile_path'] else item.thumbnail
json_file = httptools.downloadpage('http://api.themoviedb.org/3/person/'+ str(id) + '?api_key=' + tmdb_api + '&language=en', use_requests=True).data json_file = httptools.downloadpage('http://api.themoviedb.org/3/person/'+ str(id) + '?api_key=' + tmdb_api + '&language=en', use_requests=True).data
support.info(json_file)
plot += jsontools.load(json_file)['biography'] plot += jsontools.load(json_file)['biography']
if description: if description:
@@ -620,7 +619,7 @@ def filter_thread(filter, key, item, description):
# for load json from item or url # for load json from item or url
def load_json(item, no_order=False): def load_json(item, no_order=False):
support.info() logger.debug()
if type(item) == Item: if type(item) == Item:
url = item.url url = item.url
filterkey = item.filterkey filterkey = item.filterkey
@@ -645,7 +644,7 @@ def load_json(item, no_order=False):
# Load Channels json and check that the paths and channel titles are correct # Load Channels json and check that the paths and channel titles are correct
def load_and_check(item): def load_and_check(item):
support.info() logger.debug()
path = filetools.join(config.get_data_path(), 'community_channels.json') path = filetools.join(config.get_data_path(), 'community_channels.json')
file = open(path, "r") file = open(path, "r")
json = jsontools.load(file.read()) json = jsontools.load(file.read())
@@ -667,7 +666,7 @@ def load_and_check(item):
# set extra values # set extra values
def set_extra_values(item, json, path): def set_extra_values(item, json, path):
support.info() logger.debug()
ret = Item() ret = Item()
for key in json: for key in json:
if key == 'quality': if key == 'quality':
@@ -713,7 +712,7 @@ def set_extra_values(item, json, path):
# format titles # format titles
def set_title(title, language='', quality=''): def set_title(title, language='', quality=''):
support.info() logger.debug()
t = support.match(title, patron=r'\{([^\}]+)\}').match t = support.match(title, patron=r'\{([^\}]+)\}').match
if 'bold' not in t: t += ' bold' if 'bold' not in t: t += ' bold'
@@ -734,7 +733,7 @@ def set_title(title, language='', quality=''):
# for relative path # for relative path
def relative(key, json, path): def relative(key, json, path):
support.info() logger.debug()
ret = '' ret = ''
if key in json: if key in json:
if key in ['thumbnail', 'poster']: if key in ['thumbnail', 'poster']:
@@ -746,7 +745,7 @@ def relative(key, json, path):
def pagination(item, itemlist = []): def pagination(item, itemlist = []):
support.info() logger.debug()
itlist = [] itlist = []
if not itemlist: if not itemlist:
@@ -786,7 +785,7 @@ def pagination(item, itemlist = []):
return itlist return itlist
def add_channel(item): def add_channel(item):
support.info() logger.debug()
channel_to_add = {} channel_to_add = {}
json_file = '' json_file = ''
result = platformtools.dialog_select(config.get_localized_string(70676), [config.get_localized_string(70678), config.get_localized_string(70679)]) result = platformtools.dialog_select(config.get_localized_string(70676), [config.get_localized_string(70678), config.get_localized_string(70679)])
@@ -840,7 +839,7 @@ def add_channel(item):
return return
def remove_channel(item): def remove_channel(item):
support.info() logger.debug()
path = filetools.join(config.get_data_path(), 'community_channels.json') path = filetools.join(config.get_data_path(), 'community_channels.json')