summaryrefslogtreecommitdiff
path: root/plugin.video.mediathekview/de/yeasoft/kodi
diff options
context:
space:
mode:
Diffstat (limited to 'plugin.video.mediathekview/de/yeasoft/kodi')
-rw-r--r--plugin.video.mediathekview/de/yeasoft/kodi/KodiAddon.py68
-rw-r--r--plugin.video.mediathekview/de/yeasoft/kodi/KodiLogger.py55
-rw-r--r--plugin.video.mediathekview/de/yeasoft/kodi/KodiUI.py76
-rw-r--r--plugin.video.mediathekview/de/yeasoft/kodi/__init__.py0
4 files changed, 199 insertions, 0 deletions
diff --git a/plugin.video.mediathekview/de/yeasoft/kodi/KodiAddon.py b/plugin.video.mediathekview/de/yeasoft/kodi/KodiAddon.py
new file mode 100644
index 0000000..9d2fa04
--- /dev/null
+++ b/plugin.video.mediathekview/de/yeasoft/kodi/KodiAddon.py
@@ -0,0 +1,68 @@
+# -*- coding: utf-8 -*-
+# Copyright 2017 Leo Moll and Dominik Schlösser
+#
+
+# -- Imports ------------------------------------------------
+import os, sys, urllib
+import xbmc, xbmcgui, xbmcaddon, xbmcplugin
+
+from de.yeasoft.kodi.KodiLogger import KodiLogger
+
+# -- Classes ------------------------------------------------
+class KodiAddon( KodiLogger ):
+
+ def __init__( self ):
+ self.addon = xbmcaddon.Addon()
+ self.addon_id = self.addon.getAddonInfo( 'id' )
+ self.icon = self.addon.getAddonInfo( 'icon' )
+ self.fanart = self.addon.getAddonInfo( 'fanart' )
+ self.version = self.addon.getAddonInfo( 'version' )
+ self.path = self.addon.getAddonInfo( 'path' )
+ self.datapath = os.path.join( xbmc.translatePath( "special://masterprofile" ).decode('utf-8'), 'addon_data', self.addon_id.decode('utf-8') )
+ self.language = self.addon.getLocalizedString
+ KodiLogger.__init__( self, self.addon_id, self.version )
+
+ def getSetting( self, id ):
+ return self.addon.getSetting( id )
+
+ def setSetting( self, id, value ):
+ return self.addon.setSetting( id, value )
+
+ def doAction( self, action ):
+ xbmc.executebuiltin( 'Action({})'.format( action ) )
+
+class KodiService( KodiAddon ):
+ def __init__( self ):
+ KodiAddon.__init__( self )
+
+class KodiPlugin( KodiAddon ):
+ def __init__( self ):
+ KodiAddon.__init__( self )
+ self.base_url = sys.argv[0]
+ self.addon_handle = int( sys.argv[1] )
+
+ def build_url( self, query ):
+ return self.base_url + '?' + urllib.urlencode( query )
+
+ def runPlugin( self, params ):
+ xbmc.executebuiltin( 'RunPlugin({})'.format( self.build_url( params ) ) )
+
+ def addActionItem( self, name, params ):
+ self.addDirectoryItem( name, params, False )
+
+ def addFolderItem( self, name, params ):
+ self.addDirectoryItem( name, params, True )
+
+ def addDirectoryItem( self, name, params, isFolder ):
+ if type( name ) is int:
+ name = self.language( name )
+ li = xbmcgui.ListItem( name )
+ xbmcplugin.addDirectoryItem(
+ handle = self.addon_handle,
+ url = self.build_url( params ),
+ listitem = li,
+ isFolder = isFolder
+ )
+
+ def endOfDirectory( self, succeeded = True, updateListing = False, cacheToDisc = True ):
+ xbmcplugin.endOfDirectory( self.addon_handle, succeeded, updateListing, cacheToDisc )
diff --git a/plugin.video.mediathekview/de/yeasoft/kodi/KodiLogger.py b/plugin.video.mediathekview/de/yeasoft/kodi/KodiLogger.py
new file mode 100644
index 0000000..f656b31
--- /dev/null
+++ b/plugin.video.mediathekview/de/yeasoft/kodi/KodiLogger.py
@@ -0,0 +1,55 @@
+# -*- coding: utf-8 -*-
+# Copyright 2017 Leo Moll and Dominik Schlösser
+#
+
+# -- Imports ------------------------------------------------
+import xbmc
+
+from de.yeasoft.base.Logger import Logger
+
+# -- Classes ------------------------------------------------
+class KodiLogger( Logger ):
+
+ def __init__( self, name, version, topic = None ):
+ super( KodiLogger, self ).__init__( name, version, topic)
+
+ def getNewLogger( self, topic = None ):
+ return KodiLogger( self.name, self.version, topic )
+
+ def debug( self, message, *args ):
+ self._log( xbmc.LOGDEBUG, message, *args )
+
+ def info( self, message, *args ):
+ self._log( xbmc.LOGNOTICE, message, *args )
+
+ def warn( self, message, *args ):
+ self._log( xbmc.LOGWARNING, message, *args )
+
+ def error( self, message, *args ):
+ self._log( xbmc.LOGERROR, message, *args )
+
+ def _log( self, level, message, *args ):
+ parts = []
+ for arg in args:
+ part = arg
+ if isinstance( arg, basestring ):
+ part = arg # arg.decode('utf-8')
+ parts.append( part )
+ xbmc.log( self.prefix + message.format( *parts ), level = level )
+# formatMessage = self._getFormatMessage( message )
+# xbmc.log( self.prefix + formatMessage.format( *parts ), level = level )
+
+# def _getFormatMessage( self, message ):
+# j = message.find( '{}' )
+# if j == -1:
+# return message
+# formatMessage = ''
+# i = 0
+# index = 0
+# while j != -1:
+# formatMessage += message[i:j] + '{' + str( index ) + '}'
+# i = j + len( '{}' )
+# j = message.find( '{}', i )
+# index += 1
+# formatMessage += message[i:]
+# return formatMessage
diff --git a/plugin.video.mediathekview/de/yeasoft/kodi/KodiUI.py b/plugin.video.mediathekview/de/yeasoft/kodi/KodiUI.py
new file mode 100644
index 0000000..dee8dbb
--- /dev/null
+++ b/plugin.video.mediathekview/de/yeasoft/kodi/KodiUI.py
@@ -0,0 +1,76 @@
+# -*- coding: utf-8 -*-
+# Copyright 2017 Leo Moll and Dominik Schlösser
+#
+
+# -- Imports ------------------------------------------------
+import xbmc, xbmcgui
+
+# -- Classes ------------------------------------------------
+class KodiUI( object ):
+
+ def __init__( self ):
+ self.bgdialog = None
+
+ def GetEnteredText( self, deftext = '', heading = '', hidden = False ):
+ keyboard = xbmc.Keyboard( deftext, heading, 1 if hidden else 0 )
+ keyboard.doModal()
+ if keyboard.isConfirmed():
+ return keyboard.getText()
+ return deftext
+
+ def ShowNotification( self, heading, message, icon = xbmcgui.NOTIFICATION_INFO, time = 5000, sound = True ):
+ xbmcgui.Dialog().notification( heading, message, icon, time, sound )
+
+ def ShowWarning( self, heading, message, time = 5000, sound = True ):
+ xbmcgui.Dialog().notification( heading, message, xbmcgui.NOTIFICATION_WARNING, time, sound )
+
+ def ShowError( self, heading, message, time = 5000, sound = True ):
+ xbmcgui.Dialog().notification( heading, message, xbmcgui.NOTIFICATION_ERROR, time, sound )
+
+ def ShowBGDialog( self, heading = None, message = None ):
+ if self.bgdialog is None:
+ self.bgdialog = xbmcgui.DialogProgressBG()
+ self.bgdialog.create( heading, message )
+ else:
+ self.bgdialog.update( 0, heading, message )
+
+ def UpdateBGDialog( self, percent, heading = None, message = None ):
+ if self.bgdialog is not None:
+ self.bgdialog.update( percent, heading, message )
+
+ def CloseBGDialog( self ):
+ if self.bgdialog is not None:
+ self.bgdialog.close()
+ del self.bgdialog
+ self.bgdialog = None
+
+class KodiBGDialog( object ):
+ def __init__( self ):
+ self.bgdialog= None
+
+ def __del__( self ):
+ self.Close()
+
+ def Create( self, heading = None, message = None ):
+ if self.bgdialog is None:
+ self.bgdialog = xbmcgui.DialogProgressBG()
+ self.bgdialog.create( heading, message )
+ else:
+ self.bgdialog.update( 0, heading, message )
+
+ def Update( self, percent, heading = None, message = None ):
+ if self.bgdialog is not None:
+ self.bgdialog.update( percent, heading, message )
+
+ def UrlRetrieveHook( self, blockcount, blocksize, totalsize ):
+ downloaded = blockcount * blocksize
+ if totalsize > 0:
+ percent = int( (downloaded * 100) / totalsize )
+ if self.bgdialog is not None:
+ self.bgdialog.update( percent )
+
+ def Close( self ):
+ if self.bgdialog is not None:
+ self.bgdialog.close()
+ del self.bgdialog
+ self.bgdialog = None
diff --git a/plugin.video.mediathekview/de/yeasoft/kodi/__init__.py b/plugin.video.mediathekview/de/yeasoft/kodi/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/plugin.video.mediathekview/de/yeasoft/kodi/__init__.py