Files
addon/platformcode/contextmenu/search.py
mac12m99 114fed7f31 KoD 1.7
- Aggiunto menu globale opzioni di KoD\n- Aggiunto canale tapmovie e server annessi\n- Notifica quando il tipo di vista viene salvata (con indicazione del tipo di contenuto)\n\n
2021-06-10 17:40:17 +02:00

128 lines
4.0 KiB
Python

import xbmc, sys, os
from platformcode import config, logger
import re
# incliuding folder libraries
librerias = xbmc.translatePath(os.path.join(config.get_runtime_path(), 'lib'))
sys.path.insert(0, librerias)
from core import tmdb
from core.item import Item
addon_id = config.get_addon_core().getAddonInfo('id')
global item_is_coming_from_kod
def check_condition():
global item_is_coming_from_kod
logger.debug('check item condition')
mediatype = xbmc.getInfoLabel('ListItem.DBTYPE')
folderPath = xbmc.getInfoLabel('Container.FolderPath')
filePath = xbmc.getInfoLabel('ListItem.Path')
fileNameAndPath = xbmc.getInfoLabel('ListItem.FileNameAndPath')
logger.debug('Container:',folderPath )
logger.debug('listitem mediatype:',mediatype )
logger.debug('filenamepath:', fileNameAndPath )
logger.info('filepath:', filePath )
item_is_coming_from_kod = addon_id in filePath
if not item_is_coming_from_kod:
videolibpath = config.get_setting("videolibrarypath")
if filePath.startswith(videolibpath):
pattern = re.compile("\[.*\][\\\/]?$")
item_is_coming_from_kod = pattern.search(filePath)
if item_is_coming_from_kod:
logger.debug("item IS already managed by KOD")
return mediatype
def get_menu_items():
logger.debug('get menu item')
if check_condition():
return [(config.get_localized_string(90003 if item_is_coming_from_kod else 90005), execute)]
else:
return []
def execute():
"""
Gather the selected ListItem's attributes in order to compute the `Item` parameters
and perform the KOD's globalsearch.
Globalsearch will be executed specifing the content-type of the selected ListItem
NOTE: this method needs the DBTYPE and TMDB_ID specified as ListItem's properties
"""
# These following lines are commented and keep in the code just as reminder.
# In future, they could be used to filter the search outcome
# ADDON: maybe can we know if the current windows is related to a specific addon?
# we could skip the ContextMenu if we already are in KOD's window
tmdbid = xbmc.getInfoLabel('ListItem.Property(tmdb_id)')
mediatype = xbmc.getInfoLabel('ListItem.DBTYPE')
title = xbmc.getInfoLabel('ListItem.Title')
year = xbmc.getInfoLabel('ListItem.Year')
imdb = xbmc.getInfoLabel('ListItem.IMDBNumber')
if mediatype in ('episode', 'season'):
mediatype = 'tvshow'
title = xbmc.getInfoLabel('ListItem.TVShowTitle')
logstr = "Selected ListItem is: 'IMDB: {}' - TMDB: {}' - 'Title: {}' - 'Year: {}'' - 'Type: {}'".format(imdb, tmdbid, title, year, mediatype)
logger.info(logstr)
if not tmdbid and imdb:
logger.info('No TMDBid found. Try to get by IMDB')
it = Item(contentType= mediatype, infoLabels={'imdb_id' : imdb})
try:
tmdb.set_infoLabels(it)
tmdbid = it.infoLabels.get('tmdb_id', '')
except:
logger.info("Cannot find TMDB via imdb")
if not tmdbid:
logger.info('No TMDBid found. Try to get by Title/Year')
it = Item(contentTitle= title, contentType= mediatype, infoLabels={'year' : year})
try:
tmdb.set_infoLabels(it)
tmdbid = it.infoLabels.get('tmdb_id', '')
except:
logger.info("Cannot find TMDB via title/year")
if not tmdbid:
# We can continue searching by 'title (year)'
logger.info( "No TMDB found, proceed with title/year:", title , "(" , year, ")" )
# User wants to search on other channels
logger.info("Search on other channels")
item = Item(
action="from_context",
channel="search",
contentType= mediatype,
mode="search",
contextual= True,
text=title,
type= mediatype,
infoLabels= {
'tmdb_id': tmdbid,
'year': year,
'mediatype': mediatype
},
folder= False
)
logger.info("Invoking Item: ", item.tostring() )
itemurl = item.tourl()
xbmc.executebuiltin("RunPlugin(plugin://plugin.video.kod/?" + itemurl + ")")