def onInit( self ): self.getControl( 1 ).setLabel( "XBMC Intro Movie" ) try: self.control_list = self.getControl( 6 ) self.getControl( 5 ).setNavigation( self.control_list, self.control_list, self.control_list, self.control_list ) self.getControl( 3 ).setEnabled( 0 ) self.getControl( 3 ).setVisible( 0 ) except: self.control_list = self.getControl( 3 ) print_exc() try: self.getControl( 5 ).setLabel( "Cancel" ) except: print_exc() intros_dir = os.path.join( Addon.getAddonInfo( "path" ), "resources", "intros" ) previews_dir = os.path.join( Addon.getAddonInfo( "path" ), "resources", "previews" ) listitems = [] cur = Addon.getSetting( "intro" ) for intro in os.listdir( intros_dir ): name, ext = os.path.splitext( intro ) listitem = xbmcgui.ListItem( intro, "", "DefaultVideo.png" ) if cur == intro: listitem.setProperty( "Addon.Summary", "Current Intro" ) preview = os.path.join( previews_dir, name + ".jpg" ) if xbmcvfs.exists( preview ): listitem.setIconImage( preview ) listitems.append( listitem ) listitem = xbmcgui.ListItem( "Random", "", "DefaultAddonVisualization.png" ) if cur == "Random": listitem.setProperty( "Addon.Summary", "Current Intro" ) listitems.append( listitem ) self.control_list.reset() self.control_list.addItems( listitems ) self.setFocus( self.control_list )
def createComments(self): comments = [ self.dom.createComment( "Language file translated with Add-on XBMC Translator " + self.main.Addon.getAddonInfo("version") ) ] username = self.main.Addon.getSetting("username") if username: comments += [self.dom.createComment("Translator: " + username)] usermail = self.main.Addon.getSetting("usermail") if usermail: comments += [self.dom.createComment("Email: " + usermail)] version_based = "version " + getInfoLabel("System.BuildVersion") if self.main.DefaultFolderLanguage.rstrip("/") != self.main.FolderLanguage: from xbmcaddon import Addon # get addon version apath = translatePath(self.main.FolderLanguage.replace("/resources", "").replace("/language", "")) addon = Addon(os.path.basename(apath.rstrip(os.sep))) version_based = "add-on %s version %s" % (addon.getAddonInfo("name"), addon.getAddonInfo("version")) comments += [ self.dom.createComment("Date of translation: " + strftime("%x %X")), self.dom.createComment("Based on english strings " + version_based), ] refChild = self.dom.documentElement for comment in comments: self.dom.insertBefore(comment, refChild)
def install_repo(self, repoName, repoURL): """ Install a repository in XBMC -> will need XBMC restart in order to have the new Repo taken in account by XBMC """ continueInstall = True dialogYesNo = xbmcgui.Dialog() if dialogYesNo.yesno(repoName, Language(30100), Language(30101)): if continueInstall: ri = RepoInstaller() newRepo = ri.download(repoURL) print newRepo if newRepo: fp, ok = ri.install(newRepo) print "---" print fp, ok xbmc.executebuiltin('UpdateLocalAddons') xbmc.sleep(100) xbmc.executebuiltin('UpdateAddonRepos') xbmc.sleep(100) try: _N_ = Addon(os.path.basename(fp)) print "Addon %s Installed" % s_N_ ri.notification(_N_.getAddonInfo("name"), Language(24065).encode("utf-8"), 5000, _N_.getAddonInfo("icon")) except: xbmcgui.Dialog().ok(ADDON.getAddonInfo("name"), Language(30007) + " : " + repoName, Language(30010)) self._end_of_directory(True, update=False)
def createComments(self): comments = [ self.dom.createComment( 'Language file translated with Add-on XBMC Translator ' + self.main.Addon.getAddonInfo("version")) ] username = self.main.Addon.getSetting("username") if username: comments += [self.dom.createComment('Translator: ' + username)] usermail = self.main.Addon.getSetting("usermail") if usermail: comments += [self.dom.createComment('Email: ' + usermail)] version_based = 'version ' + getInfoLabel('System.BuildVersion') if (self.main.DefaultFolderLanguage.rstrip("/") != self.main.FolderLanguage): from xbmcaddon import Addon # get addon version apath = translatePath( self.main.FolderLanguage.replace("/resources", "").replace("/language", "")) addon = Addon(os.path.basename(apath.rstrip(os.sep))) version_based = "add-on %s version %s" % ( addon.getAddonInfo("name"), addon.getAddonInfo("version")) comments += [ self.dom.createComment('Date of translation: ' + strftime('%x %X')), self.dom.createComment('Based on english strings ' + version_based), ] refChild = self.dom.documentElement for comment in comments: self.dom.insertBefore(comment, refChild)
def compatibility(): from xbmcaddon import Addon Addon = Addon( "weather.google" ) # get old settings and if exists delete data xml if Addon.getSetting( 'risingsun_city' ) or Addon.getSetting( 'risingsun1_city' ): icon = Addon.getAddonInfo( "icon" ) xml = Addon.getAddonInfo( 'profile' ) + 'settings.xml' del Addon import xbmcvfs xbmcvfs.delete( xml ) if not xbmcvfs.exists( xml ): #notifie user xbmc.executebuiltin( "XBMC.Notification(Weather Google,Your settings have been renewed! Sorry!,10000,%s)" % icon )
def createComments( self ): version_based = 'version ' + xbmc.getInfoLabel( 'System.BuildVersion' ) if ( self.main.DefaultFolderLanguage.rstrip( "/" ) != self.main.FolderLanguage ): from xbmcaddon import Addon # get addon version apath = xbmc.translatePath( self.main.FolderLanguage.replace( "/resources", "" ).replace( "/language", "" ) ) addon = Addon( os.path.basename( apath.rstrip( os.sep ) ) ) version_based = "add-on %s version %s" % ( addon.getAddonInfo( "name" ), addon.getAddonInfo( "version" ) ) return ET.getComments( version_based, self.main.Addon.getSetting( "username" ), self.main.Addon.getSetting( "usermail" ), self.main.Addon.getAddonInfo( "version" ) )
def createComments(self): version_based = "version " + xbmc.getInfoLabel("System.BuildVersion") if self.main.DefaultFolderLanguage.rstrip("/") != self.main.FolderLanguage: from xbmcaddon import Addon # get addon version apath = xbmc.translatePath(self.main.FolderLanguage.replace("/resources", "").replace("/language", "")) addon = Addon(os.path.basename(apath.rstrip(os.sep))) version_based = "add-on %s version %s" % (addon.getAddonInfo("name"), addon.getAddonInfo("version")) return ET.getComments( version_based, self.main.Addon.getSetting("username"), self.main.Addon.getSetting("usermail"), self.main.Addon.getAddonInfo("version"), )
class NextMonitor(xbmc.Player): def __init__(self): super(NextMonitor, self).__init__() self.addon = Addon() self._skips = [] self._next = None self._registering() def _registering(self): addon_name = self.addon.getAddonInfo('name') AddonSignals.registerSlot(addon_name, 'add_skip', self._skips.append) AddonSignals.registerSlot(addon_name, 'set_next', self.set_next) def set_next(self, _next): self._next = _next def onPlayBackStarted(self): pass def onPlayBackPaused(self): pass def onPlayBackResumed(self): pass def onPlayBackSeek(self, time, seekOffset): pass def onPlayBackSeekChapter(self, chapter): pass def onPlayBackSpeedChanged(self, speed): pass def onPlayBackStopped(self): pass def onPlayBackEnded(self): pass def onPlayBackError(self): pass def onQueueNextItem(self): pass def run(self): pass def check_skips(self): if self.isPlayingVideo(): for skip in self._skips: skip_start = skip.get('start', 0) skip_end = skip.get('end', 0) playTime = self.getTime() if playTime > skip_start and playTime < skip_end: pass def check_next(self): pass
def getSettings( self, id="repository.xbmc.builds" ): settings = {} try: from xbmcaddon import Addon addon = Addon( id ) usetempdir = addon.getSetting( "usetempdir" ) == "true" browsedir = addon.getSetting( "browsedir" ) == "true" settings[ "downloadpath" ] = ( addon.getSetting( "downloadpath" ), "" )[ browsedir ] if not usetempdir: #browse for save dir if not settings[ "downloadpath" ] or not os.path.exists( settings[ "downloadpath" ] ): dpath = xbmc.translatePath( self.get_browse_dialog( heading="Recordings folder" ) ) if dpath and os.path.exists( dpath ): settings[ "downloadpath" ] = dpath addon.setSetting( "downloadpath", settings[ "downloadpath" ] ) else: settings[ "downloadpath" ] = "" settings[ "downloadinbackground" ] = addon.getSetting( "downloadinbackground" ) == "true" settings[ "reportpercent" ] = int( "0|5|10|20|25|50|100".split( "|" )[ int( addon.getSetting( "reportpercent" ) ) ] ) PROFILE_PATH = xbmc.translatePath( addon.getAddonInfo( "profile" ) ) settings[ "iddl_data" ] = os.path.join( PROFILE_PATH, "iddl_data" ) if not os.path.exists( settings[ "iddl_data" ] ): os.makedirs( settings[ "iddl_data" ] ) except: pass return settings
def getSettings(self, id="repository.xbmc.builds"): settings = {} try: from xbmcaddon import Addon addon = Addon(id) usetempdir = addon.getSetting("usetempdir") == "true" browsedir = addon.getSetting("browsedir") == "true" settings["downloadpath"] = (addon.getSetting("downloadpath"), "")[browsedir] if not usetempdir: #browse for save dir if not settings["downloadpath"] or not os.path.exists( settings["downloadpath"]): dpath = xbmc.translatePath( self.get_browse_dialog(heading="Recordings folder")) if dpath and os.path.exists(dpath): settings["downloadpath"] = dpath addon.setSetting("downloadpath", settings["downloadpath"]) else: settings["downloadpath"] = "" settings["downloadinbackground"] = addon.getSetting( "downloadinbackground") == "true" settings["reportpercent"] = int( "0|5|10|20|25|50|100".split("|")[int( addon.getSetting("reportpercent"))]) PROFILE_PATH = xbmc.translatePath(addon.getAddonInfo("profile")) settings["iddl_data"] = os.path.join(PROFILE_PATH, "iddl_data") if not os.path.exists(settings["iddl_data"]): os.makedirs(settings["iddl_data"]) except: pass return settings
def compatibility(): from xbmcaddon import Addon Addon = Addon("weather.google") # get old settings and if exists delete data xml if Addon.getSetting('risingsun_city') or Addon.getSetting( 'risingsun1_city'): icon = Addon.getAddonInfo("icon") xml = Addon.getAddonInfo('profile') + 'settings.xml' del Addon import xbmcvfs xbmcvfs.delete(xml) if not xbmcvfs.exists(xml): #notifie user xbmc.executebuiltin( "XBMC.Notification(Weather Google,Your settings have been renewed! Sorry!,10000,%s)" % icon)
def install_repo(self, repoName, repoURL): """ Install a repository in XBMC -> will need XBMC restart in order to have the new Repo taken in account by XBMC """ continueInstall = True dialogYesNo = xbmcgui.Dialog() if dialogYesNo.yesno(repoName, Language( 30100 ), Language( 30101 )): if continueInstall: ri = RepoInstaller() newRepo = ri.download( repoURL ) print newRepo if newRepo: fp, ok = ri.install( newRepo ) print "---" print fp, ok xbmc.executebuiltin( 'UpdateLocalAddons' ) xbmc.sleep( 100 ) xbmc.executebuiltin( 'UpdateAddonRepos' ) xbmc.sleep( 100 ) try: _N_ = Addon( os.path.basename( fp ) ) print "Addon %s Installed"%s_N_ ri.notification( _N_.getAddonInfo( "name" ), Language( 24065 ).encode( "utf-8" ), 5000, _N_.getAddonInfo( "icon" ) ) except: xbmcgui.Dialog().ok( ADDON.getAddonInfo( "name" ), Language( 30007 ) + " : " + repoName, Language( 30010 ) ) self._end_of_directory( True, update=False )
def preview(addon: xbmcaddon.Addon, timerid: int, player: 'xbmc.Player') -> None: addon_dir = xbmcvfs.translatePath(addon.getAddonInfo('path')) timer = Timer.init_from_settings(timerid) if timer._is_playing_media_timer(): icon_file = os.path.join( addon_dir, "resources", "assets", "icon.png") xbmcgui.Dialog().notification(addon.getLocalizedString( 32027), addon.getLocalizedString(32110) % addon.getLocalizedString(32004 + timerid), icon=icon_file) if is_script(timer.s_path): run_addon(timer.s_path) elif timer.s_mediatype == PICTURE: play_slideshow(timer.s_path, shuffle=timer.b_shuffle) else: playlist = build_playlist(path=timer.s_path, label=timer.s_label) player.play(playlist) else: xbmcgui.Dialog().notification(addon.getLocalizedString( 32027), addon.getLocalizedString(32109))
def Main( settingID=None ): setfocusid = 200 if settingID == "use_intro_movie": xbmc.executebuiltin( "Skin.ToggleSetting(Use_Intro_Movie)" ) xbmc.sleep( 100 ) setting = ( "false", "true" )[ xbmc.getCondVisibility( "Skin.HasSetting(Use_Intro_Movie" ) ] Addon.setSetting( "use_intro_movie", setting ) xbmc.sleep( 100 ) setfocusid = ( 102, 103 )[ setting == "false" ] elif settingID == "splash": toggle = toggle_splash( Addon.getSetting( "splash" ) ) Addon.setSetting( "splash", toggle ) xbmc.sleep( 500 ) setfocusid = ( 110, 111 )[ toggle == "false" ] elif settingID == "intro": w = DialogSelect( "DialogSelect.xml", Addon.getAddonInfo( "path" ) ) w.doModal() del w setfocusid = 104 xbmc.executebuiltin( "Addon.openSettings(script.xbmc.intro.movie)" ) xbmc.executebuiltin( "SetFocus(200)" ) xbmc.executebuiltin( "SetFocus(%i)" % setfocusid )
def _inputstream_version(self): ''' Return the requested inputstream version ''' try: addon = Addon(self.inputstream_addon) except RuntimeError: return None return to_unicode(addon.getAddonInfo('version'))
def Main(): try: url = sys.argv[2] # notify user notification(Addon.getAddonInfo("name"), url) # launch url launchUrl(url) except: print_exc()
def notification(header="", message="", sleep=5000, icon=Addon.getAddonInfo("icon")): """ Will display a notification dialog with the specified header and message, in addition you can set the length of time it displays in milliseconds and a icon image. """ xbmc.executebuiltin("XBMC.Notification(%s,%s,%i,%s)" % (header, message, sleep, icon))
def start_alarm(): if not WEATHER_WINDOW: return try: # start next time to refresh images. 60 minutes (skinner for force refresh use "CancelAlarm(moon_earth_phases,true)") command = "RunScript(%s)" % os.path.join( Addon.getAddonInfo( "path" ), "resources", "lib", "moon_and_earth_phases.py" ) xbmc.executebuiltin( "AlarmClock(moon_earth_phases,%s,60,true)" % command ) except: print_exc()
def _inputstream_version(self): """Return the requested inputstream version""" from xbmcaddon import Addon try: addon = Addon(self.inputstream_addon) except RuntimeError: return None from .unicodehelper import to_unicode return to_unicode(addon.getAddonInfo('version'))
class XbmcContext(Context): def __init__(self, log, settings): super(XbmcContext, self).__init__(log, settings) self.addon = Addon() def getLocalizedString(self, id): return self.addon.getLocalizedString(id) def getProfileDir(self): profileDir = xbmc.translatePath(self.addon.getAddonInfo('profile')) return profileDir
def start_alarm(): if not WEATHER_WINDOW: return try: # start next time to refresh images. 60 minutes (skinner for force refresh use "CancelAlarm(moon_earth_phases,true)") command = "RunScript(%s)" % os.path.join(Addon.getAddonInfo("path"), "resources", "lib", "moon_and_earth_phases.py") xbmc.executebuiltin("AlarmClock(moon_earth_phases,%s,60,true)" % command) except: print_exc()
except TypeError: string = string.decode() return string # Percent of playback progress for watching item as partially watched. Anything # more and item will NOT be marked as partially, but fully watched MARK_PLAYED_AT = 0.9 # How many seconds of playback do we ignore before marking an item as partially # watched? IGNORE_SECONDS_AT_START = 60 _ADDON = Addon() ADDON_NAME = 'PlexKodiConnect' ADDON_ID = 'plugin.video.plexkodiconnect' ADDON_VERSION = _ADDON.getAddonInfo('version') ADDON_PATH = try_decode(_ADDON.getAddonInfo('path')) ADDON_FOLDER = try_decode(xbmc.translatePath('special://home')) ADDON_PROFILE = try_decode(xbmc.translatePath(_ADDON.getAddonInfo('profile'))) KODILANGUAGE = xbmc.getLanguage(xbmc.ISO_639_1) KODIVERSION = int(xbmc.getInfoLabel("System.BuildVersion")[:2]) KODILONGVERSION = xbmc.getInfoLabel('System.BuildVersion') KODI_PROFILE = try_decode(xbmc.translatePath("special://profile")) if xbmc.getCondVisibility('system.platform.osx'): DEVICE = "MacOSX" elif xbmc.getCondVisibility("system.platform.uwp"): DEVICE = "Microsoft UWP" elif xbmc.getCondVisibility('system.platform.atv2'): DEVICE = "AppleTV2"
# -*- coding: utf-8 -*- """ python -m unittest discover -v resources/tests/ "test_db_upgrade.py" """ import os import shutil import unittest from xbmcaddon import Addon import util, gamedatabase from gamedatabase import GameDataBase, Game, RCBSetting # Shared resources addon = Addon(id='script.games.rom.collection.browser') addonPath = addon.getAddonInfo('path') class TestDBUpgrade(unittest.TestCase): def get_testdata_path(self): return os.path.join(os.path.dirname(__file__), '..', '..', 'resources', 'tests', 'testdata') def test_DBUpgrade_074_075(self): db_path = os.path.join(self.get_testdata_path(), 'database') # Setup data - MyGames.db is the hard-coded expected DB name self.assertTrue( os.path.isfile(os.path.join(db_path, 'MyGames-0.7.4.db')), "Expected to find 0.7.4 DB") shutil.copyfile(os.path.join(db_path, 'MyGames-0.7.4.db'), os.path.join(db_path, 'MyGames.db'))
# Modules general import os import sys from traceback import print_exc # Modules XBMC import xbmc import xbmcgui from xbmcaddon import Addon __settings__ = Addon("script.module.dialogaddonscan") __addonName__ = __settings__.getAddonInfo("name") __addonDir__ = __settings__.getAddonInfo("path") class DialogTextViewer(xbmcgui.WindowXMLDialog): def __init__(self, *args, **kwargs): xbmcgui.WindowXMLDialog.__init__(self, *args, **kwargs) self.heading = kwargs.get("heading") or "" self.text = kwargs.get("text") or "" def onInit(self): try: self.getControl(1).setLabel(self.heading) self.getControl(5).setText(self.text) except: print_exc() def onFocus(self, controlID): pass
# -*- coding: utf-8 -*- import os import sys from traceback import print_exc import xbmcgui import xbmcvfs from xbmcaddon import Addon ADDON = Addon( "plugin.video.tetesaclaques.tv" ) FANART = ADDON.getAddonInfo( "fanart" ) FANART2 = FANART.replace( ".jpg", "2.jpg" ) ICON_TV = ADDON.getAddonInfo( "icon" ).replace( ".png", "2.png" ) SUBTITLES = xbmc.translatePath( "special://subtitles/" ) if not xbmcvfs.exists( SUBTITLES ): SUBTITLES = xbmc.translatePath( ADDON.getAddonInfo( "profile" ) ) SUBTITLES = SUBTITLES.replace( "\\", "/" ).rstrip( "/" ) + "/" try: os.makedirs( SUBTITLES ) except: xbmcvfs.mkdir( SUBTITLES ) b_infoLabels = { "genre": "Animation / Humour", "studio": "Salambo Productions inc.", "writer": "Michel Beaudet", "director": "Michel Beaudet", "castandrole": [ ( "Michel Beaudet", "" ) ], } class Info:
Addon.setSetting( settingId, text ) UpdateUserDB = True # reset hidden input kb.setHiddenInput( False ) if UpdateUserDB: # Modules General import time # temps du depart t1 = time.time() from re import findall, sub from urllib import quote_plus # chemin des settings de l'user settingsXML = os.path.join( xbmc.translatePath( Addon.getAddonInfo( "path" ) ), "resources", "settings.xml" ) #print settingsXML # formation du settings.xml en une seul ligne strSettings = "<settings>" for id in sorted( findall( 'id="(.*?)"', open( settingsXML ).read() ) ): if id == "username" : value = login elif id == "password" : value = passw elif id == "token" : value = token elif id == "tokenb64" : value = tokenb64 else: value = Addon.getSetting( id ) strSettings += '<setting id="%s" value="%s" />' % ( id, value ) strSettings += "</settings>" # commande sql #sql_update = "UPDATE path SET strSettings='%s' WHERE strScraper='%s'" % ( strSettings, AddonId ) # execution de l'update
import os import sys import urllib from traceback import print_exc import xbmc import xbmcgui from xbmcaddon import Addon ADDON = Addon("plugin.infologique.tou.tv") BAD_THUMBS_FILE = os.path.join( xbmc.translatePath(ADDON.getAddonInfo("profile")), ".cache", "badthumbs.txt") BASE_CACHE_PATH = xbmc.translatePath("special://profile/Thumbnails/Video") import toutvapiservice urllib._urlopener = toutvapiservice.urllib._urlopener try: STRBADTHUMBS = file(BAD_THUMBS_FILE, "r").read() except: STRBADTHUMBS = "" badthumbs = open(BAD_THUMBS_FILE, "w") badthumbs.write(STRBADTHUMBS) def get_thumbnail(thumbnail_url, fanart=0, default='DefaultTouTv.png'): global badthumbs, STRBADTHUMBS default = (default, "")[fanart] if thumbnail_url and thumbnail_url not in STRBADTHUMBS: try:
class MouseTracker: # ( Thread ): def __init__(self): # Thread.__init__( self ) self.winId = None self.window = None self.reload_addon = False self.addon = Addon("script.mouse.tracker.service") self.getMedias() self.current_pos = (0, 0) self.run() # self.start() def getMedias(self): self.sprite = self.addon.getSetting("sprite") # "Dog" self.speed = self.addon.getSetting("speed").split(".")[0] # "300" try: # get control and sprites in xml spriteDir = os.path.join(self.addon.getAddonInfo("path"), "resources", "skins", self.sprite, "media") xml = windowXML("%s.xml" % self.sprite, self.addon.getAddonInfo("path"), self.sprite, spriteDir=spriteDir) # get our controls, before del xml self.image = xml.control self.sprites = xml.sprites # del window object del xml self.imgId = self.image.getId() self.offsetx = 0 # self.image.getPosition()[ 0 ] except: print_exc() raise def getWindow(self): current_win_id = xbmcgui.getCurrentWindowId() if self.winId != current_win_id or not self.window: self.winId = current_win_id self.window = xbmcgui.Window(self.winId) self.getControl() def getControl(self): self.window.addControl(self.image) self.imgId = self.image.getId() self.control = self.window.getControl(self.imgId) self.control.setVisibleCondition("Window.IsActive(Pointer.xml)") self.setAnimation(xbmcgui.getMousePosition()) # , (640,360) )#self.control.getPosition() ) def setAnimation(self, pos, start=""): if start: start = "%i,%i" % start else: start = "%i,%i" % self.current_pos end = "%i,%i" % (pos[0] - self.offsetx, pos[1]) # self.speed = str( self.current_pos[ 0 ] - pos[ 0 ] ).strip( "-" ) self.control.setAnimations( [("conditional", "condition=true effect=slide start=%s end=%s time=%s" % (start, end, self.speed))] ) def run(self): try: play_sfx = False # NB: xbmc.abortRequested not work correctly with threading.Thread while not xbmc.abortRequested: try: self.getWindow() if self.sprite != self.addon.getSetting("sprite"): self.getMedias() if not xbmc.getCondVisibility("Window.IsActive(Pointer.xml)"): time.sleep(0.3) continue pos = xbmcgui.getMousePosition() if ((pos[0] - self.offsetx) == self.current_pos[0]) and (pos[1] == self.current_pos[1]): self.control.setImage(self.sprites["wait"]) if play_sfx: if self.sprites["sfx"] and self.addon.getSetting("playsfx") == "true": xbmc.playSFX(self.sprites["sfx"]) play_sfx = False else: play_sfx = True if pos[0] < self.current_pos[0]: self.control.setImage(self.sprites["left"]) else: self.control.setImage(self.sprites["right"]) # start = "%i,%i" % self.current_pos # end = "%i,%i" % ( pos[ 0 ]-self.offsetx, pos[ 1 ] ) ##self.speed = str( self.current_pos[ 0 ] - pos[ 0 ] ).strip( "-" ) # self.control.setAnimations( [ ( 'conditional', 'condition=true effect=slide start=%s end=%s time=%s' % ( start, end, self.speed ) ) ] ) self.setAnimation(pos) self.current_pos = (pos[0] - self.offsetx, pos[1]) # self.control.setPosition( *self.current_pos ) if xbmc.getCondVisibility("Window.IsActive(addonsettings)"): self.reload_addon = True elif self.reload_addon: self.addon = Addon("script.mouse.tracker.service") self.speed = self.addon.getSetting("speed").split(".")[0] self.reload_addon = False except SystemExit: break except: print_exc() time.sleep(float(int(self.speed)) * 0.001) except SystemExit: pass except: print_exc()
# -*- coding: utf-8 -*- import os, sys, re from traceback import print_exc import xbmc, xbmcgui if not xbmc.getCondVisibility('system.platform.Android'): import pyperclip from xbmcaddon import Addon import urllib2, urllib, httplib, time if sys.version_info < (2, 7): import simplejson else: import json as simplejson __settings__ = Addon("service.RussianKeyboard") __addonDir__ = __settings__.getAddonInfo("path") __language__ = __settings__.getLocalizedString __profile__ = xbmc.translatePath(__settings__.getAddonInfo('profile')) XBMC_SKIN = xbmc.getSkinDir() SKINS_PATH = os.path.join(__addonDir__, "resources", "skins") ADDON_SKIN = ("default", XBMC_SKIN)[os.path.exists(os.path.join(SKINS_PATH, XBMC_SKIN))] MEDIA_PATH = os.path.join(SKINS_PATH, ADDON_SKIN, "media") ACTION_PARENT_DIR = 9 ACTION_PREVIOUS_MENU = (10, 92) ACTION_CONTEXT_MENU = 117 WORD_PER_PAGE = [9, 6, 5, 4, 3, 3, 3] CTRL_ID_BACK = 8
import os import re import random import urllib import urllib2 from gzip import GzipFile from StringIO import StringIO from traceback import print_exc import json try: import xbmc, xbmcvfs from xbmcaddon import Addon Addon = Addon( "script.widget.weatherworld" ) ADDON_DIR = xbmc.translatePath( Addon.getAddonInfo( "path" ).rstrip( "\\" ).rstrip( "/" ) ) ADDON_DATA = xbmc.translatePath( Addon.getAddonInfo( "profile" ).rstrip( "\\" ).rstrip( "/" ) ) weatherworld_json = os.path.join( ADDON_DATA, "weatherworld.json" ) coordinates_json = os.path.join( ADDON_DIR, "coordinates.json" ) # set our cache if not xbmcvfs.exists( ADDON_DATA ): xbmcvfs.mkdir( ADDON_DATA ) if not xbmcvfs.exists( os.path.join( ADDON_DATA, "coordinates.json" ) ): if xbmcvfs.copy( coordinates_json, os.path.join( ADDON_DATA, "coordinates.json" ) ): coordinates_json = os.path.join( ADDON_DATA, "coordinates.json" ) if xbmc.getCondVisibility( "IsEmpty(Window(Weather).Property(Current.Earth.Phase.LargeImage))" ): xbmc.executebuiltin( "SetProperty(Current.Earth.Phase.LargeImage,%s,Weather)" % Addon.getAddonInfo( "fanart" ) ) path_exists = xbmcvfs.exists
# -*- coding: utf-8 -*- import os import sys from traceback import print_exc import xbmcgui import xbmcvfs from xbmcaddon import Addon ADDON = Addon("plugin.video.au.pays.des.tetes.a.claques") FANART = ADDON.getAddonInfo("fanart") SUBTITLES = xbmc.translatePath("special://subtitles/") if not xbmcvfs.exists(SUBTITLES): SUBTITLES = xbmc.translatePath(ADDON.getAddonInfo("profile")) SUBTITLES = SUBTITLES.replace("\\", "/").rstrip("/") + "/" try: os.makedirs(SUBTITLES) except: xbmcvfs.mkdir(SUBTITLES) b_infoLabels = { "tvshowtitle": ADDON.getAddonInfo("name"), "genre": "Animation / Humour", "season": 1, "year": 2012, "studio": "Salambo Productions inc.", "writer": "Michel Beaudet", "director": "Michel Beaudet", "castandrole": [("Michel Beaudet", "")],
#import os import sys from traceback import print_exc import xbmc import xbmcgui from xbmcaddon import Addon from AddonScan import Window from AddonScan import xbmcguiWindowError __settings__ = Addon( "plugin.image.mypicsdb" ) __addonName__ = __settings__.getAddonInfo( "name" ) class AddonScanOrg( Window ): def __init__( self, parent_win=None, **kwargs ): # get class Window object Window.__init__( self, parent_win, **kwargs ) self.canceled = False self.header = "" self.line = "" def close( self ): self.canceled = True xbmc.sleep( 100 ) self.removeControls() del self.controls del self.window
try: import json # test json json.loads( "[null]" ) except: print_exc() import simplejson as json #if json.decoder.c_scanstring is not None: # print "[Actors] Yes, json use speedup ;)" #else: # print "[Actors] No, json don't use speedup :(" # constants ADDON = Addon( "script.metadata.actors" ) ADDON_DIR = ADDON.getAddonInfo( "path" ) ADDON_DATA = ADDON.getAddonInfo( "profile" ) Language = ADDON.getLocalizedString # ADDON strings LangXBMC = xbmc.getLocalizedString # XBMC strings IS_MUSIC_LIBRARY = xbmc.getCondVisibility( "Window.IsVisible(MusicLibrary)" ) IS_VIDEO_LIBRARY = xbmc.getCondVisibility( "Window.IsVisible(Videos)" ) LIBRARY_TYPE = ( ( "", "artist" )[ IS_MUSIC_LIBRARY ], "actor" )[ IS_VIDEO_LIBRARY ] # https://raw.github.com/xbmc/xbmc/master/xbmc/guilib/Key.h ACTION_PARENT_DIR = 9 ACTION_PREVIOUS_MENU = 10 ACTION_SHOW_INFO = 11 ACTION_NAV_BACK = 92 ACTION_CONTEXT_MENU = 117
# -*- coding: utf-8 -*- """ python -m unittest discover -v resources/tests/ "test_db_upgrade.py" """ import os import shutil import unittest from xbmcaddon import Addon from gamedatabase import GameDataBase # Shared resources addon = Addon(id='script.games.rom.collection.browser') addonPath = addon.getAddonInfo('path') class TestDBUpgrade(unittest.TestCase): def get_testdata_path(self): return os.path.join(os.path.dirname(__file__), '..', '..', 'resources', 'tests', 'testdata') def test_DBUpgrade(self): db_path = os.path.join (self.get_testdata_path(), 'database') # Setup data - MyGames.db is the hard-coded expected DB name self.assertTrue(os.path.isfile(os.path.join(db_path, 'MyGames-0.7.4.db')), "Expected to find 0.7.4 DB") shutil.copyfile(os.path.join(db_path, 'MyGames-0.7.4.db'), os.path.join(db_path, 'MyGames.db')) gdb = GameDataBase(db_path) gdb.connect()
import logging import os.path import re try: # Python 3 from urllib.parse import quote except ImportError: # Python 2 from urllib import quote import requests import dateutil.parser from xbmcaddon import Addon from resources.lib.kodiutils import proxies ADDON = Addon() logger = logging.getLogger(ADDON.getAddonInfo('id')) class LiveChannel: def __init__(self, channel_id=None, name=None, logo=None, epg=None): """ Defines a TV channel that can be streamed live. :type id: basestring :type name: basestring :type logo: basestring :type epg: List[LiveChannelEpg] """ self.id = channel_id self.name = name self.logo = logo self.epg = epg
#Modules general import os import re import sys from urllib import quote_plus, unquote_plus from traceback import print_exc #modules XBMC import xbmc import xbmcgui from xbmcaddon import Addon ADDON = Addon( "plugin.video.tou.tv" ) ADDON_NAME = ADDON.getAddonInfo( "name" ) ADDON_CACHE = xbmc.translatePath( ADDON.getAddonInfo( "profile" ) ) CACHE_EXPIRE_TIME = float( ADDON.getSetting( "expiretime" ).replace( "0", ".5" ).replace( "25", "0" ) ) SCRIPT_REFRESH = os.path.join( ADDON.getAddonInfo( 'path' ), "resources", "lib", "refresh.py" ) LangXBMC = xbmc.getLocalizedString import scraper STRING_FOR_ALL = "[B]CONTENU accessible à TOUS[/B] - Cette émission peut être regardée partout dans le monde." FAVOURITES_XML = os.path.join( ADDON_CACHE, "favourites.xml" ) G_GENRE = unicode( xbmc.getInfoLabel( "ListItem.Genre" ), "utf-8" ) #ACTION_INFO = not bool( xbmc.getInfoLabel( "ListItem.Episode" ) )
import xbmc import xbmcgui import xbmcvfs from xbmcaddon import Addon from xbmc import translatePath # , executehttpapi # Modules Custom import jsonrpc from utils.log import logAPI from utils.streamdetails import * from utils.file_item import Thumbnails # constants ADDON = Addon("script.moviesets") MOVIESET_CACHED_THUMB = translatePath("%sThumbnails/%s.tbn" % (ADDON.getAddonInfo("profile"), "%s")) try: os.makedirs(os.path.dirname(MOVIESET_CACHED_THUMB)) except: xbmcvfs.mkdir(os.path.dirname(MOVIESET_CACHED_THUMB)) LOGGER = logAPI() TBN = Thumbnails() def check_compatibility(minversion="11.9.3"): VERSION = Addon("xbmc.addon").getAddonInfo("version") return VERSION >= minversion, VERSION COMPATIBLE, VERSION = check_compatibility()
"Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.77 Safari/535.7", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)" ] ) class _urlopener( urllib.FancyURLopener ): version = os.environ.get( "HTTP_USER_AGENT" ) or HTTP_USER_AGENT urllib._urlopener = _urlopener() try: import xbmc, xbmcgui, xbmcvfs from xbmcaddon import Addon Addon = Addon( "weather.google" ) WEATHER_WINDOW = xbmcgui.Window( 12600 ) REFRESH = not xbmc.getCondVisibility( "System.HasAlarm(moon_earth_phases)" ) cache_dir = xbmc.translatePath( Addon.getAddonInfo( 'profile' ) ) if not os.path.exists( cache_dir ): os.makedirs( cache_dir ) PHASE_IMAGE = os.path.join( cache_dir, "%s.png" ) except: # NOT RUNNING ON XBMC, ON DEV WEATHER_WINDOW = None REFRESH = True PHASE_IMAGE = "%s.png" try: import sqlite3 except: sqlite3 = None def deleteTexture( sourceurl ): OK = False #print "-"*100
# -*- coding: utf-8 -*- #Modules general import os import re import sys from urllib import quote_plus, unquote_plus from traceback import print_exc #modules XBMC import xbmc import xbmcgui from xbmcaddon import Addon ADDON = Addon("plugin.video.tou.tv") ADDON_NAME = ADDON.getAddonInfo("name") ADDON_CACHE = xbmc.translatePath(ADDON.getAddonInfo("profile")) CACHE_EXPIRE_TIME = float( ADDON.getSetting("expiretime").replace("0", ".5").replace("25", "0")) SCRIPT_REFRESH = os.path.join(ADDON.getAddonInfo('path'), "resources", "lib", "refresh.py") LangXBMC = xbmc.getLocalizedString import scraper STRING_FOR_ALL = "[B]CONTENU accessible à TOUS[/B] - Cette émission peut être regardée partout dans le monde." FAVOURITES_XML = os.path.join(ADDON_CACHE, "favourites.xml") G_GENRE = unicode(xbmc.getInfoLabel("ListItem.Genre"), "utf-8")
import sys import time from traceback import print_exc if sys.version >= "2.5": from hashlib import md5 as _hash else: from md5 import new as _hash try: from xbmcaddon import Addon from xbmc import translatePath BASE_CACHE_PATH = translatePath("special://profile/Thumbnails/Video") ADDON = Addon("plugin.video.tou.tv") ADDON_CACHE = os.path.join(translatePath(ADDON.getAddonInfo("profile")), ".cache") CACHE_EXPIRE_TIME = float(ADDON.getSetting("expiretime").replace("0", ".5").replace("25", "0")) except: BASE_CACHE_PATH = "" ADDON_CACHE = "" CACHE_EXPIRE_TIME = 72 if not os.path.exists(ADDON_CACHE): os.makedirs(ADDON_CACHE) def is_expired(lastUpdate, hrs=CACHE_EXPIRE_TIME): expired = time.time() >= (lastUpdate + (hrs * 60 ** 2)) return expired
# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. # # import modules import os import sys import xbmc import xbmcgui from xbmcaddon import Addon ### get addon info __addon__ = Addon("script.artwork.downloader") __addonname__ = __addon__.getAddonInfo("name") __addonprofile__ = xbmc.translatePath(__addon__.getAddonInfo("profile")).decode("utf-8") class Viewer: # constants WINDOW = 10147 CONTROL_LABEL = 1 CONTROL_TEXTBOX = 5 def __init__(self, *args, **kwargs): # activate the text viewer window xbmc.executebuiltin("ActivateWindow(%d)" % (self.WINDOW,)) # get window self.window = xbmcgui.Window(self.WINDOW) # give window time to initialize
#import os import sys from traceback import print_exc import xbmc import xbmcgui from xbmcaddon import Addon from AddonScan import Window from AddonScan import xbmcguiWindowError __settings__ = Addon("plugin.image.mypicsdb") __addonName__ = __settings__.getAddonInfo("name") class AddonScanOrg(Window): def __init__(self, parent_win=None, **kwargs): # get class Window object Window.__init__(self, parent_win, **kwargs) self.canceled = False self.header = "" self.line = "" def close(self): self.canceled = True xbmc.sleep(100) self.removeControls() del self.controls del self.window def create(self, line1="", line2=""):
import sys import time import random from threading import Timer from traceback import print_exc from datetime import date, timedelta from urlparse import parse_qsl as parse_params # Modules XBMC import xbmc import xbmcgui from xbmcaddon import Addon # constants ADDON = Addon("script.game.diamond") ADDON_ID = ADDON.getAddonInfo("id") ADDON_DIR = ADDON.getAddonInfo("path") GAME_ID = ADDON_ID # required, used in gamesdb::scrores TODAY = date.today() # Modules Custom import gamesdb # from module script.xbmc.games.scores import gemsutils as utils from animations import * # constants animation # constants # PY_SCORES = Addon("script.xbmc.games.scores").getAddonInfo("path") # PY_SCORES = os.path.join(PY_SCORES, "default.py") # PY_SCORES_ARGV = ["default.py", GAME_ID] GEMS_DIR = os.path.join(ADDON_DIR, "resources", "skins", "Default", "media",
# Dovresti aver ricevuto una copia della GNU General Public License # insieme a Stefano Thegroove 360. In caso contrario, vedi <http://www.gnu.org/licenses/>. # ------------------------------------------------- ----------- # Client for Stefano Thegroove 360 #------------------------------------------------------------ import os import urllib import xbmcgui from xbmcaddon import Addon from core import config, logger __settings__ = Addon("plugin.video.Stefano") __addonDir__ = __settings__.getAddonInfo("path") DEFAULT_CAPTCHA = os.path.join(__addonDir__, "resources", "images", "noimage.gif") ACTION_PARENT_DIR = 9 ACTION_PREVIOUS_MENU = 10 ACTION_CONTEXT_MENU = 117 CTRL_ID_BACK = 8 CTRL_ID_SPACE = 32 CTRL_ID_RETN = 300 CTRL_ID_MAYS = 302 CTRL_ID_CAPS = 303 CTRL_ID_SYMB = 304 CTRL_ID_IP = 307
import xbmc import xbmcgui from config import config from xbmcaddon import Addon ACTION_PARENT_DIR = 9 ACTION_PREVIOUS_MENU = 10 ADDON = Addon() ADDON_ID = ADDON.getAddonInfo("id") ADDON_NAME = ADDON.getAddonInfo("name") class IntroWindow(xbmcgui.WindowDialog): def __init__(self, api): object.__init__(self) self.controls = { 'buttons': [] } self.api = api self.setCoordinateResolution(0) # 1920x1080 dimensions = { 'spacing': { 'normal': 20 }, 'window': { 'x1': 300, 'x2': 1600, 'y1': 200, 'y2': 880, },
import os import sys import xbmc import xbmcgui import xbmcvfs from xbmcaddon import Addon ADDON = Addon( "plugin.infologique.tou.tv" ) ADDON_CACHE = os.path.join( xbmc.translatePath( ADDON.getAddonInfo( 'profile' ) ), ".cache" ) if sys.argv[ 1 ].lower() == "full": print "[TouTv] deleting full cache" for root, dirs, files in os.walk( ADDON_CACHE ): for file in files: xbmcvfs.delete( os.path.join( root, file ) ) xbmcgui.Dialog().ok( ADDON.getAddonInfo( 'name' ), "Clean Cache...", "Success" ) elif sys.argv[ 1 ].lower() == "badthumbs": print "[TouTv] delete: %r" % os.path.join( ADDON_CACHE, "badthumbs.txt" ) xbmcvfs.delete( os.path.join( ADDON_CACHE, "badthumbs.txt" ) ) xbmcgui.Dialog().ok( ADDON.getAddonInfo( 'name' ), "Clear debug infos of thumbails", "Success" )
import xbmcgui import xbmc from resources.lib.service import service from xbmcaddon import Addon from resources.lib.utils import * import os __addonID__ = "plugin.xbianconfig" ADDON = Addon(__addonID__) ADDON_DATA = xbmc.translatePath("special://profile/addon_data/%s/" % __addonID__) ADDON_DIR = ADDON.getAddonInfo("path") LangXBMC = xbmc.getLocalizedString ROOTDIR = ADDON_DIR class firstrun(service): def onStart(self): #check if first run firstlock = os.path.join(ADDON_DATA, '.firstrun') if not os.path.isfile(firstlock): if not os.path.exists(ADDON_DATA): os.mkdir(ADDON_DATA) setSetting('advancedmode', '0') setSetting('notifyonerror', '1') setSetting('notifyonsuccess', '1') setSetting('confirmationonchange', '1') #set default preference: self.dlg = xbmcgui.WindowXMLDialog('welcomeDialog.xml', ROOTDIR) self.dlg.doModal()
pass def INFOO(url): try: CATEGORIES() dialog = xbmcgui.Dialog() i = dialog.ok(url, "[COLOR blue]PowerTV [/COLOR][COLOR yellow]is NO LONGER Avelable[/COLOR] ","[COLOR pink]You Should try Dream Club or MagicTR[/COLOR]") except: pass from xbmcaddon import Addon __YoutubePluginName__ = 'plugin.video.youtube' __YoutubeAddon__ = Addon(__YoutubePluginName__) youtubeVersion = __YoutubeAddon__.getAddonInfo('version') def magictr(): videolar = ['VrCMoBhVteI','R43eK2lkFtQ','AJYrwNbqIu0','2fzdxj7Zg7E'] youtubeadres=random.choice(videolar) url='http://www.youtube.com/embed/'+str(youtubeadres).encode('utf-8', 'ignore') if youtubeVersion == "5": Youtube_Player(str(url)) else: Youtube_Player2(str(url)) def Youtube_Player(url):
#!/usr/bin/python # -*- coding: utf-8 -*- import xbmc import xbmcgui from xbmcaddon import Addon import utils # Addon info __addonID__ = "script.filecleaner" __addon__ = Addon(__addonID__) __title__ = __addon__.getAddonInfo("name") __profile__ = xbmc.translatePath(__addon__.getAddonInfo("profile")).decode("utf-8") class LogViewerDialog(xbmcgui.WindowXMLDialog): CAPTIONID = 201 TEXTBOXID = 202 TRIMBUTTONID = 301 CLEARBUTTONID = 302 CLOSEBUTTONID = 303 def __init__(self, xml_filename, script_path, default_skin="Default", default_res="720p", *args, **kwargs): self.log = utils.Log() self.caption = utils.translate(32603) xbmcgui.WindowXMLDialog.__init__(self, xml_filename, script_path) def onInit(self): self.getControl(self.CAPTIONID).setLabel(self.caption) self.getControl(self.TEXTBOXID).setText(self.log.get())
import xbmc import xbmcgui from xbmcaddon import Addon # Modules Custom from database import Database, TBN from log import logAPI log = logAPI() database = Database() db_paths = glob(xbmc.translatePath("special://Database/MyVideos*.db")) # constants ADDON = Addon("script.moviesets") ADDON_NAME = ADDON.getAddonInfo("name") ADDON_DIR = ADDON.getAddonInfo("path") __string__ = xbmc.getLocalizedString # XBMC strings __language__ = ADDON.getLocalizedString # ADDON strings def _unicode(text, encoding="utf-8"): try: text = unicode(text, encoding) except: pass return text class Manager:
# -*- coding: utf-8 -*- import os import sys import re import xbmc import xbmcgui from xbmcaddon import Addon from core import config from core import logger from core import scrapertools import urllib2, urllib, httplib, time __settings__ = Addon( "plugin.video.streamondemand-pureita" ) __addonDir__ = __settings__.getAddonInfo( "path" ) DEFAULT_CAPTCHA = os.path.join( __addonDir__, "resources","images","noimage.gif") ACTION_PARENT_DIR = 9 ACTION_PREVIOUS_MENU = 10 ACTION_CONTEXT_MENU = 117 CTRL_ID_BACK = 8 CTRL_ID_SPACE = 32 CTRL_ID_RETN = 300 CTRL_ID_MAYS = 302 CTRL_ID_CAPS = 303 CTRL_ID_SYMB = 304 CTRL_ID_IP = 307 CTRL_ID_TEXT = 310
import json import requests from xbmcaddon import Addon from xbmc import executebuiltin, translatePath import os import sys from time import sleep from resources.lib import kodiutils from resources.lib import kodilogging from xbmcgui import ListItem, Dialog from xbmcplugin import addDirectoryItems, endOfDirectory, setResolvedUrl from utils import check_login, getChannelUrl ADDON = Addon() ADDONDATA = translatePath(ADDON.getAddonInfo('profile')).decode("utf-8") if not os.path.exists(ADDONDATA): os.mkdir(ADDONDATA) logger = logging.getLogger(ADDON.getAddonInfo('id')) kodilogging.config() plugin = routing.Plugin() @plugin.route('/') def index(): with open(translatePath("special://home/addons/plugin.video.jiotv/resources/extra/categories.json"), 'r') as f: categories = json.load(f) items = [] for each in categories.keys(): items.append( (plugin.url_for(show_category, each), ListItem(each), True))
# coding: utf-8 import os import xbmc from xbmcaddon import Addon __all__ = ['ADDON_ID', 'addon', 'path', 'profile', 'icon', 'get_ui_string'] ADDON_ID = 'service.subtitles.addic7ed' addon = Addon(ADDON_ID) path = xbmc.translatePath(addon.getAddonInfo('path')).decode('utf-8') profile = xbmc.translatePath(addon.getAddonInfo('profile')).decode('utf-8') icon = os.path.join(path, 'icon.png') def get_ui_string(string_id): """ Get language string by ID :param string_id: UI string ID :return: UI string """ return addon.getLocalizedString(string_id)
from os import path from requests import get from json import loads, load from shutil import copyfileobj, rmtree from time import time from unicodedata import normalize from urllib import urlretrieve, unquote_plus, unquote, urlopen, quote from xbmcaddon import Addon from xbmcplugin import endOfDirectory, addDirectoryItem from xbmcgui import ListItem, Dialog from xbmcvfs import listdir, exists, mkdirs from xbmc import translatePath, executebuiltin, getInfoLabel, executeJSONRPC, Player, sleep, log, getCondVisibility from re import sub MyAddon = Addon() MyScriptID = MyAddon.getAddonInfo('id') MyVersion = MyAddon.getAddonInfo('version') MyTmp = translatePath(MyAddon.getAddonInfo('profile')).encode('utf-8') MySubFolder = translatePath(path.join(MyTmp, 'subs')).encode('utf-8') MyName = MyAddon.getAddonInfo('name') MyLang = MyAddon.getLocalizedString def convert_to_utf(file): try: with codecs.open(file, "r", "cp1255") as f: srt_data = f.read() with codecs.open(file, 'w', 'utf-8') as output: output.write(srt_data) except:
from xbmcaddon import Addon # Modules Custom from utils.log import logAPI from database import Database, TBN # Constants LOGGER = logAPI() DATABASE = Database() DB_PATHS = glob( xbmc.translatePath( "special://Database/MyVideos*.db" ) )[ -1: ] # constants ADDON = Addon( "script.moviesets" ) ADDON_DIR = ADDON.getAddonInfo( "path" ) Language = ADDON.getLocalizedString # ADDON strings LangXBMC = xbmc.getLocalizedString # XBMC strings #https://raw.github.com/xbmc/xbmc/master/xbmc/guilib/Key.h ACTION_PARENT_DIR = 9 ACTION_PREVIOUS_MENU = 10 ACTION_NAV_BACK = 92 ACTION_CONTEXT_MENU = 117 KEYBOARD_A_BUTTON = 61505 CLOSE_MANAGER = [ ACTION_PARENT_DIR, ACTION_PREVIOUS_MENU, ACTION_NAV_BACK ] CLOSE_DIALOG = [ ACTION_CONTEXT_MENU ] + CLOSE_MANAGER def _unicode( text, encoding="utf-8" ):
import os import sys import urllib from traceback import print_exc import xbmc import xbmcgui import xbmcvfs import xbmcplugin from xbmcaddon import Addon import repoutils as utils # constants ADDON = Addon( "plugin.program.repo.installer" ) ADDON_NAME = ADDON.getAddonInfo( "name" ) #Language = ADDON.getLocalizedString # ADDON strings LangXBMC = xbmc.getLocalizedString # XBMC strings class PluginView: def __init__( self ): listitems = [] for ID, repo in utils.getRepos().items(): if ID == "*": continue #print repo addonID = repo.get( "addonID" ) or repo[ "id" ] playCount = xbmc.getCondVisibility( "System.HasAddon(%s)" % addonID ) playCount = playCount or xbmcvfs.exists( "special://home/addons/%s/addon.xml" % addonID )
import os import sys import time # Modules XBMC import xbmc import xbmcgui from xbmcaddon import Addon # Modules Custom from log import logAPI log = logAPI() # constants ADDON = Addon( "script.moviesets" ) ADDON_NAME = ADDON.getAddonInfo( "name" ) ADDON_DIR = ADDON.getAddonInfo( "path" ) def notification( header="", message="", sleep=5000, icon=ADDON.getAddonInfo( "icon" ) ): """ Will display a notification dialog with the specified header and message, in addition you can set the length of time it displays in milliseconds and a icon image. """ icon = ( "DefaultIconInfo.png", icon )[ os.path.isfile( icon ) ] xbmc.executebuiltin( "XBMC.Notification(%s,%s,%i,%s)" % ( header, message, sleep, icon ) ) class Viewer: # constants WINDOW = 10147 CONTROL_LABEL = 1
import sys #For Xml Files import xml.dom.minidom import shutil from xbmcaddon import Addon __addonID__ = "script.calendar" __settings__ = Addon(id=__addonID__) __string__ = __settings__.getLocalizedString __language__ = __settings__ # INITIALISATION CHEMIN RACINE ROOTDIR = __settings__.getAddonInfo('path') # Shared resources BASE_RESOURCE_PATH = os.path.join( ROOTDIR, "resources" ) # append the proper platforms folder to our path, xbox is the same as win32 env = ( os.environ.get( "OS", "win32" ), "win32", )[ os.environ.get( "OS", "win32" ) == "xbox" ] sys.path.append( os.path.join( BASE_RESOURCE_PATH, "platform_libraries", env ) ) # append the proper libs folder to our path sys.path.append( os.path.join( BASE_RESOURCE_PATH, "libs" ) ) from specialpath import * from traceback import print_exc from googlecalendar import * class XmlCalendar :