diff options
Diffstat (limited to 'plugin.video.mediathekview/de')
8 files changed, 232 insertions, 0 deletions
diff --git a/plugin.video.mediathekview/de/__init__.py b/plugin.video.mediathekview/de/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/plugin.video.mediathekview/de/__init__.py diff --git a/plugin.video.mediathekview/de/yeasoft/__init__.py b/plugin.video.mediathekview/de/yeasoft/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/plugin.video.mediathekview/de/yeasoft/__init__.py diff --git a/plugin.video.mediathekview/de/yeasoft/base/Logger.py b/plugin.video.mediathekview/de/yeasoft/base/Logger.py new file mode 100644 index 0000000..7fad5fc --- /dev/null +++ b/plugin.video.mediathekview/de/yeasoft/base/Logger.py @@ -0,0 +1,33 @@ +# -*- coding: utf-8 -*- +# Copyright 2017 Leo Moll and Dominik Schlösser +# + +# -- Imports ------------------------------------------------ + +# -- Classes ------------------------------------------------ +class Logger( object ): + def __init__( self, name, version, topic = None ): + self.name = name + self.version = version + self.setTopic( topic ) + + def getNewLogger( self, topic = None ): + pass + + def setTopic( self, topic = None ): + if topic == None: + self.prefix = '[%s-%s]: ' % ( self.name, self.version ) + else: + self.prefix = '[%s-%s:%s]: ' % ( self.name, self.version, topic ) + + def debug( self, message, *args ): + pass + + def info( self, message, *args ): + pass + + def warn( self, message, *args ): + pass + + def error( self, message, *args ): + pass diff --git a/plugin.video.mediathekview/de/yeasoft/base/__init__.py b/plugin.video.mediathekview/de/yeasoft/base/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/plugin.video.mediathekview/de/yeasoft/base/__init__.py 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 |