308 lines
9.8 KiB
Python
308 lines
9.8 KiB
Python
# -*- coding: utf-8 -*-
|
|
# vStream https://github.com/Kodi-vStream/venom-xbmc-addons
|
|
import xbmc
|
|
|
|
# from resources.lib.statistic import cStatistic
|
|
from resources.lib.home import cHome
|
|
from resources.lib.gui.gui import cGui
|
|
from resources.lib.handler.pluginHandler import cPluginHandler
|
|
from resources.lib.handler.inputParameterHandler import cInputParameterHandler
|
|
from resources.lib.handler.outputParameterHandler import cOutputParameterHandler
|
|
from resources.lib.comaddon import progress, VSlog, addon, window, siteManager
|
|
from resources.lib.search import cSearch
|
|
# http://kodi.wiki/view/InfoLabels
|
|
# http://kodi.wiki/view/List_of_boolean_conditions
|
|
|
|
|
|
####################
|
|
#
|
|
# Permet de debuguer avec Eclipse
|
|
#
|
|
# Tuto ici :
|
|
# https://github.com/Kodi-vStream/venom-xbmc-addons/wiki
|
|
#
|
|
####################
|
|
|
|
# Mettre True pour activer le debug
|
|
DEBUG = False
|
|
|
|
if DEBUG:
|
|
|
|
import sys # pydevd module need to be copied in Kodi\system\python\Lib\pysrc
|
|
sys.path.append('H:\Program Files\Kodi\system\Python\Lib\pysrc')
|
|
|
|
try:
|
|
import pysrc.pydevd as pydevd
|
|
pydevd.settrace('localhost', stdoutToServer=True, stderrToServer=True)
|
|
except ImportError:
|
|
try:
|
|
import pydevd # with the addon script.module.pydevd, only use `import pydevd`
|
|
pydevd.settrace('localhost', stdoutToServer=True, stderrToServer=True)
|
|
except ImportError:
|
|
sys.stderr.write("Error: " + "You must add org.python.pydev.debug.pysrc to your PYTHONPATH.")
|
|
|
|
|
|
class main:
|
|
|
|
def __init__(self):
|
|
self.parseUrl()
|
|
|
|
def parseUrl(self):
|
|
# Exclue les appels par des plugins qu'on ne sait pas gérer, par exemple : plugin://plugin.video.vstream/extrafanart
|
|
oPluginHandler = cPluginHandler()
|
|
pluginPath = oPluginHandler.getPluginPath()
|
|
if pluginPath == 'plugin://plugin.video.vstream/extrafanart/':
|
|
return
|
|
|
|
oInputParameterHandler = cInputParameterHandler()
|
|
|
|
if oInputParameterHandler.exist('function'):
|
|
sFunction = oInputParameterHandler.getValue('function')
|
|
else:
|
|
VSlog('call load methode')
|
|
sFunction = "load"
|
|
|
|
if sFunction == 'setSetting':
|
|
if oInputParameterHandler.exist('id'):
|
|
plugin_id = oInputParameterHandler.getValue('id')
|
|
else:
|
|
return
|
|
|
|
if oInputParameterHandler.exist('value'):
|
|
value = oInputParameterHandler.getValue('value')
|
|
else:
|
|
return
|
|
|
|
setSetting(plugin_id, value)
|
|
return
|
|
|
|
if sFunction == 'setSettings':
|
|
setSettings(oInputParameterHandler)
|
|
return
|
|
|
|
if sFunction == 'DoNothing':
|
|
return
|
|
|
|
if not oInputParameterHandler.exist('site'):
|
|
# charge home
|
|
plugins = __import__('resources.lib.home', fromlist=['home']).cHome()
|
|
function = getattr(plugins, 'load')
|
|
function()
|
|
return
|
|
|
|
if oInputParameterHandler.exist('site'):
|
|
sSiteName = oInputParameterHandler.getValue('site')
|
|
VSlog('load site ' + sSiteName + ' and call function ' + sFunction)
|
|
|
|
if isHosterGui(sSiteName, sFunction):
|
|
return
|
|
|
|
if isGui(sSiteName, sFunction):
|
|
return
|
|
|
|
if isFav(sSiteName, sFunction):
|
|
return
|
|
|
|
if isViewing(sSiteName, sFunction):
|
|
return
|
|
|
|
if isLibrary(sSiteName, sFunction):
|
|
return
|
|
|
|
if isDl(sSiteName, sFunction):
|
|
return
|
|
|
|
if isHome(sSiteName, sFunction):
|
|
return
|
|
|
|
if isTrakt(sSiteName, sFunction):
|
|
return
|
|
|
|
if isSearch(sSiteName, sFunction):
|
|
return
|
|
|
|
if sSiteName == 'globalRun':
|
|
__import__('resources.lib.runscript', fromlist=['runscript'])
|
|
# function = getattr(plugins, sFunction)
|
|
# function()
|
|
return
|
|
|
|
if sSiteName == 'globalSources':
|
|
oGui = cGui()
|
|
aPlugins = oPluginHandler.getAvailablePlugins(force = (sFunction == 'globalSources'))
|
|
|
|
sitesManager = siteManager()
|
|
|
|
if len(aPlugins) == 0:
|
|
addons = addon()
|
|
addons.openSettings()
|
|
oGui.updateDirectory()
|
|
else:
|
|
for aPlugin in aPlugins:
|
|
|
|
sitename = aPlugin[0]
|
|
if not sitesManager.isActive(aPlugin[1]):
|
|
sitename = '[COLOR red][OFF] ' + sitename + '[/COLOR]'
|
|
|
|
oOutputParameterHandler = cOutputParameterHandler()
|
|
oOutputParameterHandler.addParameter('siteUrl', 'http://venom')
|
|
icon = 'sites/%s.png' % (aPlugin[1])
|
|
oGui.addDir(aPlugin[1], 'load', sitename, icon, oOutputParameterHandler)
|
|
|
|
oGui.setEndOfDirectory()
|
|
return
|
|
|
|
if sSiteName == 'globalParametre':
|
|
addons = addon()
|
|
addons.openSettings()
|
|
return
|
|
# if isAboutGui(sSiteName, sFunction) == True:
|
|
# return
|
|
|
|
# charge sites
|
|
try:
|
|
plugins = __import__('resources.sites.%s' % sSiteName, fromlist=[sSiteName])
|
|
function = getattr(plugins, sFunction)
|
|
function()
|
|
except Exception as e:
|
|
progress().VSclose() # Referme le dialogue en cas d'exception, sinon blocage de Kodi
|
|
VSlog('could not load site: ' + sSiteName + ' error: ' + str(e))
|
|
import traceback
|
|
traceback.print_exc()
|
|
return
|
|
|
|
|
|
def setSetting(plugin_id, value):
|
|
addons = addon()
|
|
setting = addons.getSetting(plugin_id)
|
|
|
|
# modifier si différent
|
|
if setting != value:
|
|
addons.setSetting(plugin_id, value)
|
|
return True
|
|
|
|
return False
|
|
|
|
|
|
# Permet la modification des settings depuis un raccourci dans le skin (jusqu'à 100 paramètres).
|
|
# Supporte les retours à la ligne seulement derrière le paramètre, exemple :
|
|
# RunAddon(plugin.video.vstream,function=setSettings&id1=plugin_cinemay_com&value1=true
|
|
# &id2=plugin_cinemegatoil_org&value2=false
|
|
# &id3=hoster_uploaded_premium&value3=true
|
|
# &id4=hoster_uploaded_username&value4=MyName
|
|
# &id5=hoster_uploaded_password&value5=MyPass)
|
|
def setSettings(oInputParameterHandler):
|
|
addons = addon()
|
|
|
|
for i in range(1, 100):
|
|
plugin_id = oInputParameterHandler.getValue('id' + str(i))
|
|
if plugin_id:
|
|
value = oInputParameterHandler.getValue('value' + str(i))
|
|
value = value.replace('\n', '')
|
|
oldSetting = addons.getSetting(plugin_id)
|
|
# modifier si différent
|
|
if oldSetting != value:
|
|
addons.setSetting(plugin_id, value)
|
|
|
|
return True
|
|
|
|
|
|
def isHosterGui(sSiteName, sFunction):
|
|
if sSiteName == 'cHosterGui':
|
|
plugins = __import__('resources.lib.gui.hoster', fromlist=['cHosterGui']).cHosterGui()
|
|
function = getattr(plugins, sFunction)
|
|
function()
|
|
return True
|
|
return False
|
|
|
|
|
|
def isGui(sSiteName, sFunction):
|
|
if sSiteName == 'cGui':
|
|
oGui = cGui()
|
|
exec("oGui." + sFunction + "()")
|
|
return True
|
|
return False
|
|
|
|
|
|
def isFav(sSiteName, sFunction):
|
|
if sSiteName == 'cFav':
|
|
plugins = __import__('resources.lib.bookmark', fromlist=['cFav']).cFav()
|
|
function = getattr(plugins, sFunction)
|
|
function()
|
|
return True
|
|
return False
|
|
|
|
|
|
def isViewing(sSiteName, sFunction):
|
|
if sSiteName == 'cViewing':
|
|
plugins = __import__('resources.lib.viewing', fromlist=['cViewing']).cViewing()
|
|
function = getattr(plugins, sFunction)
|
|
function()
|
|
return True
|
|
return False
|
|
|
|
|
|
def isLibrary(sSiteName, sFunction):
|
|
if sSiteName == 'cLibrary':
|
|
plugins = __import__('resources.lib.library', fromlist=['cLibrary']).cLibrary()
|
|
function = getattr(plugins, sFunction)
|
|
function()
|
|
return True
|
|
return False
|
|
|
|
|
|
def isDl(sSiteName, sFunction):
|
|
if sSiteName == 'cDownload':
|
|
plugins = __import__('resources.lib.download', fromlist=['cDownload']).cDownload()
|
|
function = getattr(plugins, sFunction)
|
|
function()
|
|
return True
|
|
return False
|
|
|
|
|
|
def isHome(sSiteName, sFunction):
|
|
if sSiteName == 'cHome':
|
|
oHome = cHome()
|
|
exec("oHome." + sFunction + "()")
|
|
return True
|
|
return False
|
|
|
|
|
|
def isTrakt(sSiteName, sFunction):
|
|
if sSiteName == 'cTrakt':
|
|
plugins = __import__('resources.lib.trakt', fromlist=['cTrakt']).cTrakt()
|
|
function = getattr(plugins, sFunction)
|
|
function()
|
|
return True
|
|
return False
|
|
|
|
|
|
def isSearch(sSiteName, sFunction):
|
|
if sSiteName == 'globalSearch':
|
|
oSearch = cSearch()
|
|
exec("oSearch.searchGlobal()")
|
|
return True
|
|
return False
|
|
|
|
|
|
def _pluginSearch(plugin, sSearchText):
|
|
|
|
# Appeler la source en mode Recherche globale
|
|
window(10101).setProperty('search', 'true')
|
|
|
|
try:
|
|
plugins = __import__('resources.sites.%s' % plugin['identifier'], fromlist=[plugin['identifier']])
|
|
function = getattr(plugins, plugin['search'][1])
|
|
sUrl = plugin['search'][0] + str(sSearchText)
|
|
|
|
function(sUrl)
|
|
|
|
VSlog('Load Search: ' + str(plugin['identifier']))
|
|
except:
|
|
VSlog(plugin['identifier'] + ': search failed')
|
|
|
|
window(10101).setProperty('search', 'false')
|
|
|
|
|
|
main()
|