93 lines
2.9 KiB
Python
93 lines
2.9 KiB
Python
#!/usr/bin/python
|
|
# coding: utf-8
|
|
|
|
#################################################################################################
|
|
|
|
import xbmc
|
|
import sys
|
|
|
|
from resources.lib.helper import *
|
|
from resources.lib.json_map import *
|
|
from resources.lib.editor import *
|
|
from resources.lib.rating_updater import *
|
|
|
|
#################################################################################################
|
|
|
|
class ContextMenu(object):
|
|
def __init__(self,dbid,dbtype):
|
|
self.dbid = dbid
|
|
self.dbtype = dbtype
|
|
|
|
db = Database(self.dbid, self.dbtype)
|
|
getattr(db, self.dbtype)()
|
|
self.details = db.result().get(self.dbtype)[0]
|
|
|
|
itemlist, actionlist = self._generate_menu()
|
|
|
|
if len(itemlist) > 1:
|
|
contextdialog = DIALOG.contextmenu(itemlist)
|
|
if contextdialog >= 0:
|
|
self._exec(actionlist[contextdialog])
|
|
|
|
else:
|
|
self._exec(actionlist[0])
|
|
|
|
def _generate_menu(self):
|
|
if self.dbtype in ['movie', 'tvshow']:
|
|
watchlist_label = ADDON.getLocalizedString(32008) if 'Watchlist' in self.details.get('tag') else ADDON.getLocalizedString(32009)
|
|
menu = [ADDON.getLocalizedString(32010), ADDON.getLocalizedString(32004), ADDON.getLocalizedString(32003), watchlist_label, ADDON.getLocalizedString(32039)]
|
|
actions = [0, 1, 2, 3, 4]
|
|
|
|
elif self.dbtype == 'episode':
|
|
menu = [ADDON.getLocalizedString(32010), ADDON.getLocalizedString(32039)]
|
|
actions = [0, 4]
|
|
|
|
elif self.dbtype in ['artist', 'album']:
|
|
menu = [ADDON.getLocalizedString(32010), ADDON.getLocalizedString(32004)]
|
|
actions = [0, 1]
|
|
|
|
else:
|
|
menu = [ADDON.getLocalizedString(32010)]
|
|
actions = [0]
|
|
|
|
if ADDON.getSettingBool('nfo_updating') and self.dbtype in ['movie', 'tvshow', 'episode']:
|
|
menu.insert(-1, ADDON.getLocalizedString(32046))
|
|
actions.insert(-1, 5)
|
|
|
|
return menu, actions
|
|
|
|
def _exec(self,action):
|
|
editor = EditDialog(dbid=self.dbid, dbtype=self.dbtype)
|
|
|
|
if action == 0:
|
|
editor.editor()
|
|
|
|
elif action == 1:
|
|
editor.set(key='genre', type='select')
|
|
|
|
elif action == 2:
|
|
editor.set(key='tag', type='select')
|
|
|
|
elif action == 3:
|
|
editor.set(key='tag', type='watchlist')
|
|
|
|
elif action == 4 :
|
|
update_ratings(dbid=self.dbid, dbtype=self.dbtype)
|
|
|
|
elif action == 5:
|
|
winprop('updatenfo.bool', True)
|
|
update_nfo(dbid=self.dbid, dbtype=self.dbtype, details=self.details)
|
|
winprop('updatenfo', clear=True)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
listitem = sys.listitem.getVideoInfoTag()
|
|
dbid = listitem.getDbId()
|
|
dbtype = listitem.getMediaType()
|
|
|
|
if not dbid or not dbtype:
|
|
listitem = sys.listitem.getMusicInfoTag()
|
|
dbid = listitem.getDbId()
|
|
dbtype = listitem.getMediaType()
|
|
|
|
ContextMenu(dbid, dbtype) |