diff --git a/core/scraper.py b/core/scraper.py
index 9ee0d1cc..3fd90d5e 100644
--- a/core/scraper.py
+++ b/core/scraper.py
@@ -55,21 +55,31 @@ def find_and_set_infoLabels(item):
import traceback
logger.error(traceback.format_exc())
- while scraper or not item.exit:
+ while scraper:
# We call the find_and_set_infoLabels function of the selected scraper
scraper_result = scraper.find_and_set_infoLabels(item)
- if item.exit: return False
+
# Check if there is a 'code'
- elif scraper_result and item.infoLabels['code']:
+ if scraper_result and item.infoLabels['code']:
# correct code
- logger.info("Identifier found: %s " % item.infoLabels['code'])
+ logger.info("Identificador encontrado: %s" % item.infoLabels['code'])
scraper.completar_codigos(item)
return True
+ elif scraper_result:
+ # Content found but no 'code'
+ msg = config.get_localized_string(60227) % title
else:
# Content not found
- logger.info(logger.info("Identifier not found for: %s " % title))
- item = platformtools.dialog_info(item, scraper_actual)
- if item.exit: return False
+ msg = config.get_localized_string(60228) % title
+
+ logger.info(msg)
+ # Show box with other options:
+ item = platformtools.dialog_info(item, scraper_actual)
+ if item.exit:
+ logger.debug("You have clicked 'cancel' in the window '%s'" % msg)
+ return False
+
+ logger.error("Error importing the scraper module %s" % scraper_actual)
def cuadro_completar(item):
diff --git a/core/videolibrarytools.py b/core/videolibrarytools.py
index 4905471b..36ade9ed 100644
--- a/core/videolibrarytools.py
+++ b/core/videolibrarytools.py
@@ -1006,17 +1006,17 @@ def add_movie(item):
item = generictools.update_title(item) # We call the method that updates the title with tmdb.find_and_set_infoLabels
#if item.tmdb_stat:
# del item.tmdb_stat # We clean the status so that it is not recorded in the Video Library
- if item:
- new_item = item.clone(action="findvideos")
- insertados, sobreescritos, fallidos, path = save_movie(new_item)
+ # if item:
+ new_item = item.clone(action="findvideos")
+ insertados, sobreescritos, fallidos, path = save_movie(new_item)
- if fallidos == 0:
- platformtools.dialog_ok(config.get_localized_string(30131),
- config.get_localized_string(30135) % new_item.contentTitle) # 'has been added to the video library'
- else:
- filetools.rmdirtree(path)
- platformtools.dialog_ok(config.get_localized_string(30131),
- config.get_localized_string(60066) % new_item.contentTitle) # "ERROR, the movie has NOT been added to the video library")
+ if fallidos == 0:
+ platformtools.dialog_ok(config.get_localized_string(30131),
+ config.get_localized_string(30135) % new_item.contentTitle) # 'has been added to the video library'
+ else:
+ filetools.rmdirtree(path)
+ platformtools.dialog_ok(config.get_localized_string(30131),
+ config.get_localized_string(60066) % new_item.contentTitle) # "ERROR, the movie has NOT been added to the video library")
def add_tvshow(item, channel=None):
diff --git a/platformcode/globalsearch.py b/platformcode/globalsearch.py
index a1b66495..f8ade463 100644
--- a/platformcode/globalsearch.py
+++ b/platformcode/globalsearch.py
@@ -1,17 +1,15 @@
# -*- coding: utf-8 -*-
-import xbmc, xbmcgui, xbmcplugin, sys, channelselector, time
+import xbmc, xbmcgui, sys, channelselector, time
from core.support import dbg, typo, tmdb
from core.item import Item
from core import channeltools, servertools, scrapertools
from platformcode import platformtools, config, logger
-from platformcode.launcher import run, start
+from platformcode.launcher import run
from threading import Thread
-if sys.version_info[0] >= 3:
- from concurrent import futures
-else:
- from concurrent_py2 import futures
+if sys.version_info[0] >= 3: from concurrent import futures
+else: from concurrent_py2 import futures
info_language = ["de", "en", "es", "fr", "it", "pt"] # from videolibrary.json
def_lang = info_language[config.get_setting("info_language", "videolibrary")]
@@ -25,12 +23,8 @@ def set_workers():
workers = config.get_setting('thread_number') if config.get_setting('thread_number') > 0 else None
return workers
-def imagepath(image):
- if len(image.split('.')) == 1: image += '.png'
- path = filetools.join(config.get_runtime_path(), 'resources', 'skins' , 'Default', 'media', 'Infoplus', image)
- return path
-
def Search(item):
+ xbmc.executebuiltin('Dialog.Close(all,true)')
SearchWindow('GlobalSearch.xml', config.get_runtime_path()).start(item)
xbmc.sleep(700)
@@ -62,12 +56,10 @@ BACK = 503
# Servers
EPISODESLIST = 200
SERVERLIST = 300
-SELECTLIST = 400
class SearchWindow(xbmcgui.WindowXML):
def start(self, item):
logger.info()
- xbmc.executebuiltin('Dialog.Close(all,true)')
self.exit = False
self.item = item
self.lastSearch()
@@ -85,6 +77,7 @@ class SearchWindow(xbmcgui.WindowXML):
self.page = 1
self.moduleDict = {}
self.searchActions = []
+ self.thread = None
self.doModal()
def lastSearch(self):
@@ -93,7 +86,7 @@ class SearchWindow(xbmcgui.WindowXML):
if config.get_setting('last_search'): last_search = channeltools.get_channel_setting('Last_searched', 'search', '')
else: last_search = ''
if not self.item.text: self.item.text = platformtools.dialog_input(default=last_search, heading='')
- if self.item.text: channeltools.set_channel_setting('Last_searched', self.item.text, 'search')
+ if self.item.text: channeltools.set_channel_setting('Last_searched', self.item.text, 'search')
def select(self):
logger.info()
@@ -108,12 +101,12 @@ class SearchWindow(xbmcgui.WindowXML):
for result in results:
result = tmdb_info.get_infoLabels(result, origen=result)
- self.find.append(result)
movie = result.get('title','')
tvshow = result.get('name','')
- title = movie if movie else name
- result.mode = 'movie' if movie else 'tvshow'
- thumb = 'Infoplus/' + ('movie' if movie else 'tv') + '.png'
+ title = tvshow if tvshow else movie
+ result['mode'] = 'tvshow' if tvshow else 'movie'
+ self.find.append(result)
+ thumb = 'Infoplus/' + result['mode'].replace('show','') + '.png'
it = xbmcgui.ListItem(title)
it.setProperty('thumb', result.get('thumbnail', thumb))
it.setProperty('fanart', result.get('fanart',''))
@@ -202,10 +195,12 @@ class SearchWindow(xbmcgui.WindowXML):
n = list_cat.index('anime')
list_cat[n] = 'tvshow'
- if self.item.mode in ['all', 'search'] or (self.item.type in list_cat):
+ if self.item.type in list_cat:
if config.get_setting("include_in_global_search", channel) and ch_param.get("active", False):
channels_list.append(channel)
+ logger.info('search in channels:',channels_list)
+
return channels_list
def getModule(self, channel):
@@ -213,7 +208,8 @@ class SearchWindow(xbmcgui.WindowXML):
try:
module = __import__('channels.%s' % channel, fromlist=["channels.%s" % channel])
mainlist = getattr(module, 'mainlist')(Item(channel=channel, global_search=True))
- action = [elem for elem in mainlist if elem.action == "search" and (self.item.mode == 'all' or elem.contentType in [self.item.mode, 'undefined'])]
+ logger.info('TYPE= ', self.item.type)
+ action = [elem for elem in mainlist if elem.action == "search" and (self.item.mode == 'all' or elem.contentType in [self.item.type, 'undefined'])]
return module, action
except:
import traceback
@@ -248,7 +244,6 @@ class SearchWindow(xbmcgui.WindowXML):
other = []
module = module_dict[channel]
searched_id = item.infoLabels['tmdb_id']
- verified = False
try:
results.extend(module.search(search_action, item.text))
@@ -271,14 +266,14 @@ class SearchWindow(xbmcgui.WindowXML):
pass
self.count += 1
- if self.item.mode == 'search': self.update(channel, valid + other)
- elif self.item.mode == 'all': self.update(channel, results)
- else: self.channels.remove(channel)
+ if self.item.mode == 'all': self.update(channel, results)
+ else: self.update(channel, valid + other)
def makeItem(self, item):
logger.info()
+ thumb = item.thumbnail if item.thumbnail else 'Infoplus/' + item.contentType.replace('show','')
it = xbmcgui.ListItem(item.title)
- it.setProperty('thumb', item.thumbnail)
+ it.setProperty('thumb', thumb)
it.setProperty('fanart', item.fanart)
it.setProperty('plot', item.plot)
it.setProperty('verified', item.verified)
@@ -350,6 +345,7 @@ class SearchWindow(xbmcgui.WindowXML):
if self.type:
self.type = None
if self.item.mode in ['all', 'search']:
+ if self.item.type: self.item.mode = self.item.type
self.thread = Thread(target=self.search)
self.thread.start()
elif self.item.mode in ['movie', 'tvshow']:
@@ -397,6 +393,7 @@ class SearchWindow(xbmcgui.WindowXML):
"RunPlugin(%s?%s&%s)" % (sys.argv[0], item.tourl(), 'channel=downloads&action=save_download&download=season&from_channel=' + item.channel +'&from_action=' + item.action)]
index = xbmcgui.Dialog().contextmenu(context)
if index > 0: xbmc.executebuiltin(context_commands[index])
+
elif action in [LEFT, RIGHT] and focus in [CHANNELS]:
items = []
name = self.CHANNELS.getSelectedItem().getLabel()
@@ -407,45 +404,24 @@ class SearchWindow(xbmcgui.WindowXML):
self.RESULTS.addItems(items)
self.RESULTS.selectItem(subpos)
+ elif action in [DOWN] and focus in [BACK, CLOSE]:
+ if self.EPISODES.isVisible(): self.setFocusId(EPISODES)
+ if self.SERVERS.isVisible(): self.setFocusId(SERVERS)
+ else: self.setFocusId(RESULTS)
+
elif focus in [RESULTS] and self.item.mode == 'all':
pos = self.RESULTS.getSelectedPosition()
self.CHANNELS.getSelectedItem().setProperty('position', str(pos))
elif action in [BACKSPACE]:
- logger.info('ACTION',self.item.mode,self.persons)
- if self.SERVERS.isVisible():
- if self.episodes:
- self.Focus(EPISODES)
- self.setFocusId(EPISODESLIST)
- else:
- self.Focus(SEARCH)
- self.setFocusId(RESULTS)
- self.RESULTS.selectItem(self.pos)
- elif self.EPISODES.isVisible():
- self.Focus(SEARCH)
- self.setFocusId(RESULTS)
- self.RESULTS.selectItem(self.pos)
- elif self.item.mode in ['person'] and self.find:
- self.find = []
- self.actors()
- else:
- self.exit = True
- if self.item.mode in ['all', 'search']:
- busy(True)
- while self.thread.is_alive(): xbmc.sleep(200)
- busy(False)
- self.close()
+ self.Back()
elif action in [EXIT]:
- self.exit = True
- if self.item.mode in ['all', 'search']:
- busy(True)
- while self.thread.is_alive(): xbmc.sleep(200)
- busy(False)
- self.close()
+ self.Close()
def onClick(self, control_id):
- search = self.RESULTS.getSelectedItem().getProperty('search')
+ if self.RESULTS.getSelectedItem(): search = self.RESULTS.getSelectedItem().getProperty('search')
+ else: search = None
if control_id in [CHANNELS]:
items = []
name = self.CHANNELS.getSelectedItem().getLabel()
@@ -456,6 +432,13 @@ class SearchWindow(xbmcgui.WindowXML):
self.RESULTS.addItems(items)
self.RESULTS.selectItem(subpos)
self.CHANNELS.getSelectedItem().setProperty('position', str(subpos))
+ self.setFocusId(RESULTS)
+
+ elif control_id in [BACK]:
+ self.Back()
+
+ elif control_id in [CLOSE]:
+ self.Close()
elif search:
pos = self.RESULTS.getSelectedPosition()
@@ -471,11 +454,9 @@ class SearchWindow(xbmcgui.WindowXML):
else:
result = self.find[pos]
name = self.RESULTS.getSelectedItem().getLabel()
- item = Item(mode='search', type=result.mode, contentType=result.mode, infoLabels=result, selected = True, text=name)
- if self.item.mode == 'movie':
- item.contentTitle = self.RESULTS.getSelectedItem().getLabel()
- else:
- item.contentSerieName = self.RESULTS.getSelectedItem().getLabel()
+ item = Item(mode='search', type=result['mode'], contentType=result['mode'], infoLabels=result, selected = True, text=name)
+ if self.item.mode == 'movie': item.contentTitle = self.RESULTS.getSelectedItem().getLabel()
+ else: item.contentSerieName = self.RESULTS.getSelectedItem().getLabel()
return Search(item)
elif control_id in [RESULTS, EPISODESLIST]:
@@ -554,4 +535,31 @@ class SearchWindow(xbmcgui.WindowXML):
elif control_id in [SERVERLIST]:
index = int(self.getControl(control_id).getSelectedItem().getProperty('index'))
server = self.servers[index]
- run(server)
\ No newline at end of file
+ run(server)
+
+ def Back(self):
+ if self.SERVERS.isVisible():
+ if self.episodes:
+ self.Focus(EPISODES)
+ self.setFocusId(EPISODESLIST)
+ else:
+ self.Focus(SEARCH)
+ self.setFocusId(RESULTS)
+ self.RESULTS.selectItem(self.pos)
+ elif self.EPISODES.isVisible():
+ self.Focus(SEARCH)
+ self.setFocusId(RESULTS)
+ self.RESULTS.selectItem(self.pos)
+ elif self.item.mode in ['person'] and self.find:
+ self.find = []
+ self.actors()
+ else:
+ self.Close()
+
+ def Close(self):
+ self.exit = True
+ if self.thread:
+ busy(True)
+ while self.thread.is_alive(): xbmc.sleep(200)
+ busy(False)
+ self.close()
\ No newline at end of file
diff --git a/resources/skins/Default/720p/GlobalSearch.xml b/resources/skins/Default/720p/GlobalSearch.xml
index 103f1a78..117b777a 100644
--- a/resources/skins/Default/720p/GlobalSearch.xml
+++ b/resources/skins/Default/720p/GlobalSearch.xml
@@ -99,6 +99,7 @@
100%
570
101
+ 503
horizontal
300
@@ -146,7 +147,6 @@
-
Chennels Group
-100
@@ -302,6 +302,8 @@
520
700
570
+ 503
+ 503
300
@@ -341,7 +343,6 @@
-
Servers Group
Control.IsVisible(3)
@@ -375,6 +376,8 @@
520
700
570
+ 503
+ 503
300
@@ -489,7 +492,7 @@
00000000
right
center
- Conditional
+ Conditional
Control.IsVisible(500)
@@ -523,5 +526,29 @@
Control.IsVisible(5)
+
+ Back
+ 30
+ 70
+ 40
+ 40
+ 502
+ 502
+ left.png
+ left.png
+
+
+
+ Close
+ 30
+ 30
+ 40
+ 40
+ 503
+ 503
+ close.png
+ close.png
+
+