PK b~J%#*~o) o) script.favourites/addon.xml
Favourites scriptСкрипт "Любими"Script PreferitScript pro OblíbenéFavoritscriptFavoriten-SkriptScript ΑγαπημένωνFavourites scriptFavourites scriptFavorites scriptScript de FavoritosFavoritosSuosikit skriptiScript FavorisLe script des favorisScript de Favoritosסקריפט מועדפיםOmiljene skripteKedvencek scriptScript favoritScript preferiti즐겨찾기 스크립트Mėgstamiausių skriptasFavourietenscriptFavorittskriptSkrypt ulubionychScript de FavoritosScript FavoritosScript FavoriteСкрипт "Избранное"FavoritskriptSık kullanılanlar betiği收藏夹脚本Fetches item from your Kodi favourites to populate Home menu/submenu with custom buttons.Извлича информация от вашето меню "Любими" и показва допълнителни бутони в главното меню и подменюто.Obtenir els temes Preferits dels seus Kodi per omplir el menú Inici / submenú amb botons personalitzats.Přenese položky z Oblíbených do Home menu/submenu pod vlastní tlačítka. Henter elementer fra din Kodi-favoritter til at fylde Hjemmemenu/undermenu med brugerbestemte knapper.Stellt die Einträge aus der Kodi-Favoriten-Liste für benutzerdefinierte Verknüpfungen auf dem Startbildschirm zur Verfügung.Χρησιμοποιεί αντικείμενα από τα αγαπημένα σας του Kodi για να συμπληρώσει τα προσαρμοσμένα πλήκτρα μενού/υπομενού της Αρχικής ΟθόνηςFetches item from your Kodi favourites to populate Home menu/submenu with custom buttons.Fetches item from your Kodi favourites to populate Home menu/submenu with custom buttons.Fetches item from your Kodi favorites to populate Home menu/submenu with custom buttons.Usar ítems de tus favoritos de Kodi para crear menús y submenús personalizadosObtiene medios de sus favoritos en Kodi para enriquecer su menu inicio y sub carpetas con botones personalizadosHakee Kodin suosikeista kohteita ja populoi sillä Koti-valikon / alivalikon muokatuilla napeilla.Récupère l'élément depuis les favoris Kodi pour remplir le menu/sous-menu de la page d'accueil avec des boutons personnalisés.Récupère l'élément de vos favoris Kodi pour remplir le menu d'accueil/le sous-menu avec des boutons personnalisés.Obtén o elemento dos favoritos para estabelecer botóns personalizados no Menú Principal/Submenúמייבא פריט מהמועדפים שלך לאכלוס תפריט/תת תפריט עם לחצנים מותאמים אישית במסך הבית.Dohvaća stavke iz vašeg Kodi 'Omiljeno' izbornika i popunjava Početni izbornik/podizbornik s prilagođenim tipkama.Összegyűjti az elemeket az Kodi kedvencek közül és a központi menü almenüjébe helyezi egyedi gombokkal.Ambil item dari favorit Kodi Anda untuk mengisi menu/submenu Beranda dengan tombol suka-suka.Preleva elementi dai tuoi preferiti per popolare il menù principale ed i sottomenù con bottoni personalizzato.Kodi 즐겨찾기에서 항목을 가져와 사용자 설정 버튼으로 홈 메뉴/서브메뉴에 표시합니다.Paima elementus iš Kodi mėgstamiausiųjų, kad užpildytų pagrindinio meniu/submeniu individualiais mygtukais.Haalt item van je Kodi favorieten op om in het Home menu/submenu te plaatsen via losse buttons.Henter oppføringer fra favorittene dine i Kodi for å befolke hovedmenyen og undermenyen med egendefinerte knapper.Pobiera pozycje z twoich ulubionych w celu zapełnienia menu/podmenu niestandardowymi przyciskami.Obtém itens dos seus favoritos do Kodi para povoar o Menu Principal/submenu com botões personalizados.Compila itens dos seus favoritos do Kodi para ocupar menus e submenus da tela inicial com botões personalizados.Извлекает информацию из Вашего меню "Избранное" и отображает дополнительные кнопки в главном меню и подменю.Hämtar objekt från dina Kodi-favoriter för att fylla ut hem-menyn med egna knappar.将 Kodi 收藏夹项目用于主界面菜单/子菜单的自定义按钮。Needs skin support for it to be used properlyНеобходима е поддръжка от страна на облика за коректно функциониранеNecessita Suport de la pell perquè sigui utilitzat correctamentPro správné použití je potřeba podpora skinu.Behøver skinsupport for at blive brugt ordentligtBenötigt Skin-Support um korrekt genutzt zu werdenΑπαιτείται υποστήριξη από το κέλυφος για να χρησιμοποιηθεί σωστάNeeds skin support for it to be used properlyNeeds skin support for it to be used properlyNeeds skin support for it to be used properlyNecesita ser soportado por el skin para poder funcionar correctamenteNecesita soporte de mascara para ser usada correctamenteToimiakseen kunnolla, skinin tulee tukea tätäNécessite le support du thème pour qu'il soit utilisé correctementLe prise en charge de l'habillage est nécessaire pour qu'il soit utilisé correctementPrecisa da axuda da pel para que sexa utilizado correctamenteלהפעלה כראוי נדרשת תמיכה במעטפתZahtijeva podršku presvlake za ispravno korištenjeFelszín támogatás szükséges a helyes működéshezMemerlukan dukungan kulit untuk dapat digunakan dengan baikE' necessario che lo skin supporti lo script per funzionare correttamente스킨에서 지원해야 합니다Reikalingas teminės išvaizdos palaikymas tinkamam naudojimuiHeeft skinondersteuning nodig om correct te werkenKrever skallstøtte for å fungere riktigWymagane wsparcie skórki w celu poprawnego działaniaNecessita de um tema compatível para funcionar correctamente.Necessita de suporte da skin para ser usado adequadamenteNecesită suport din partea costumului pentru a fi folosit cum trebuieНеобходима поддержка скинов для корректного отображенияPotrebuje podporo preobleke, da bo uporabljeno pravilno.Behöver skalsupport för att kunna användas riktigtDüzgün kullanılabilmesi için dış görünüm desteğine ihtiyacınız var正常使用需要皮肤支持allGNU GENERAL PUBLIC LICENSE Version 2http://forum.kodi.tv/showthread.php?tid=114671
PK b~JOd script.favourites/changelog.txtv6.0.3
- cleanup
v6.0.2
- update language files from Transifex
v6.0.1
- update language files from Transifex
v6.0.0
- kodi name change
v5.0.4
- don't add return to pvr paths
v5.0.3
- language update
v5.0.2
- fixed launching of android apps
v5.0.1
- no reason
v5.0.0
- gotham release
v4.0.9
- fix encoding issue
v4.0.8
- added 'no action' item to the end of the list
v4.0.7
- add favourite.count window property
v4.0.6
- fix crash when favourites file was not found
v4.0.5
- fix icon not showing up
- fix folders added as a favourite didn't work
v4.0.4
- fix encoding issue
v4.0.3
- re-add setting home window properties
v4.0.2
- fix change title option
v4.0.1
- fix encoding issues
v4.0.0
- remove the old way of passing strings
v3.2.7
- use action.getId() instead of action
v3.2.6
- localize hard-coded string
v3.2.5
- fixed: don't escape apastrophes in the path
v3.2.4
- revert adding slash at the end of the path
v3.2.3
- added option to change favourite label
v3.2.2
- added icon images for reset and playlist items
v3.2.1
- use select dialog with id 6
- added french translation
- bugfixes
v3.2.0
- added readme
- added french localization (thanks to Rififi77)
- select dialog now uses id 6
- fixed escape problems with paths on Windows
v3.1.0
- added clear setting
v3.0.0
- added set favourites dialog
v2.0.1
- fixed: don't add return before each bracket
v2.0.0
- version bump for eden
v1.0.6
- use xbmc.translatePath
PK b~JV script.favourites/default.py# Credits to CF2009 for the original favourites script.
import os, sys, re
import xbmc, xbmcgui, xbmcaddon, xbmcvfs
from xml.dom.minidom import parse
ADDON = xbmcaddon.Addon()
ADDONID = ADDON.getAddonInfo('id')
ADDONVERSION = ADDON.getAddonInfo('version')
CWD = ADDON.getAddonInfo('path').decode("utf-8")
LANGUAGE = ADDON.getLocalizedString
def log(txt):
if isinstance (txt,str):
txt = txt.decode("utf-8")
message = u'%s: %s' % (ADDONID, txt)
xbmc.log(msg=message.encode("utf-8"), level=xbmc.LOGDEBUG)
class Main:
def __init__(self):
self._parse_argv()
found, favourites = self._read_file()
if self.PROPERTY == '':
self._set_properties(favourites)
else:
MyDialog(favourites, self.PROPERTY, self.CHANGETITLE)
if found:
self.doc.unlink()
def _parse_argv(self):
try:
params = dict(arg.split("=") for arg in sys.argv[ 1 ].split("&"))
except:
params = {}
log("### params: %s" % params)
self.PROPERTY = params.get("property", "")
self.CHANGETITLE = params.get("changetitle", "")
self.PLAY = params.get("playlists", False)
def _read_file(self):
# Set path
self.fav_file = xbmc.translatePath('special://profile/favourites.xml').decode("utf-8")
# Check to see if file exists
if xbmcvfs.exists(self.fav_file):
found = True
self.doc = parse(self.fav_file)
favourites = self.doc.documentElement.getElementsByTagName('favourite')
else:
found = False
favourites = []
return found, favourites
def _set_properties(self, listing):
self.WINDOW = xbmcgui.Window(10000)
self.WINDOW.setProperty("favourite.count", str(len(listing)))
for count, favourite in enumerate(listing):
name = favourite.attributes[ 'name' ].nodeValue
path = favourite.childNodes [ 0 ].nodeValue
if ('RunScript' not in path) and ('StartAndroidActivity' not in path) and ('pvr://' not in path) and (',return' not in path):
path = path.rstrip(')')
path = path + ',return)'
if 'playlists/music' in path or 'playlists/video' in path:
thumb = "DefaultPlaylist.png"
if self.PLAY:
if 'playlists/music' in path:
path = path.replace('ActivateWindow(10502,', 'PlayMedia(')
else:
path = path.replace('ActivateWindow(10025,', 'PlayMedia(')
else:
try:
thumb = favourite.attributes[ 'thumb' ].nodeValue
except:
thumb = "DefaultFolder.png"
self.WINDOW.setProperty("favourite.%d.path" % (count + 1,) , path)
self.WINDOW.setProperty("favourite.%d.name" % (count + 1,) , name)
self.WINDOW.setProperty("favourite.%d.thumb" % (count + 1,) , thumb)
class MainGui(xbmcgui.WindowXMLDialog):
def __init__(self, *args, **kwargs):
xbmcgui.WindowXMLDialog.__init__(self)
self.listing = kwargs.get("listing")
self.property = kwargs.get("prop")
self.changetitle = kwargs.get("changetitle")
def onInit(self):
try:
self.fav_list = self.getControl(6)
self.getControl(3).setVisible(False)
except:
print_exc()
self.fav_list = self.getControl(3)
self.getControl(5).setVisible(False)
self.getControl(1).setLabel(xbmc.getLocalizedString(1036))
self.fav_list.addItem(xbmcgui.ListItem(LANGUAGE(32001), iconImage="DefaultAddonNone.png"))
for favourite in self.listing :
listitem = xbmcgui.ListItem(favourite.attributes[ 'name' ].nodeValue)
fav_path = favourite.childNodes [ 0 ].nodeValue
try:
if 'playlists/music' in fav_path or 'playlists/video' in fav_path:
listitem.setIconImage("DefaultPlaylist.png")
listitem.setProperty("Icon", "DefaultPlaylist.png")
else:
listitem.setIconImage(favourite.attributes[ 'thumb' ].nodeValue)
listitem.setProperty("Icon", favourite.attributes[ 'thumb' ].nodeValue)
except:
pass
if ('RunScript' not in fav_path) and ('StartAndroidActivity' not in fav_path) and ('pvr://' not in fav_path) and (',return' not in fav_path):
fav_path = fav_path.rstrip(')')
fav_path = fav_path + ',return)'
listitem.setProperty("Path", fav_path)
self.fav_list.addItem(listitem)
# add a dummy item with no action assigned
listitem = xbmcgui.ListItem(LANGUAGE(32002))
listitem.setProperty("Path", 'noop')
self.fav_list.addItem(listitem)
self.setFocus(self.fav_list)
def onAction(self, action):
if action.getId() in (9, 10, 92, 216, 247, 257, 275, 61467, 61448,):
self.close()
def onClick(self, controlID):
log("### control: %s" % controlID)
if controlID == 6 or controlID == 3:
num = self.fav_list.getSelectedPosition()
log("### position: %s" % num)
if num > 0:
fav_path = self.fav_list.getSelectedItem().getProperty("Path")
result = re.search('"(.*?)"', fav_path)
if result:
fav_abspath = result.group(0)
else:
fav_abspath = ''
fav_label = self.fav_list.getSelectedItem().getLabel()
if 'playlists/music' in fav_path or 'playlists/video' in fav_path:
retBool = xbmcgui.Dialog().yesno(xbmc.getLocalizedString(559), LANGUAGE(32000))
if retBool:
if 'playlists/music' in fav_path:
fav_path = fav_path.replace('ActivateWindow(10502,', 'PlayMedia(')
else:
fav_path = fav_path.replace('ActivateWindow(10025,', 'PlayMedia(')
if self.changetitle == "true":
keyboard = xbmc.Keyboard(fav_label, xbmc.getLocalizedString(528), False)
keyboard.doModal()
if (keyboard.isConfirmed()):
fav_label = keyboard.getText()
xbmc.executebuiltin('Skin.SetString(%s,%s)' % ('%s.%s' % (self.property, "Path",), fav_path.decode('string-escape'),))
xbmc.executebuiltin('Skin.SetString(%s,%s)' % ('%s.%s' % (self.property, "List",), fav_abspath.decode('string-escape'),))
xbmc.executebuiltin('Skin.SetString(%s,%s)' % ('%s.%s' % (self.property, "Label",), fav_label,))
fav_icon = self.fav_list.getSelectedItem().getProperty("Icon")
if fav_icon:
xbmc.executebuiltin('Skin.SetString(%s,%s)' % ('%s.%s' % (self.property, "Icon",), fav_icon,))
xbmc.sleep(300)
self.close()
else:
xbmc.executebuiltin('Skin.Reset(%s)' % '%s.%s' % (self.property, "Path",))
xbmc.executebuiltin('Skin.Reset(%s)' % '%s.%s' % (self.property, "List",))
xbmc.executebuiltin('Skin.Reset(%s)' % '%s.%s' % (self.property, "Label",))
xbmc.executebuiltin('Skin.Reset(%s)' % '%s.%s' % (self.property, "Icon",))
xbmc.sleep(300)
self.close()
def onFocus(self, controlID):
pass
def MyDialog(fav_list, fav_prop, changetitle):
w = MainGui("DialogSelect.xml", CWD, listing=fav_list, prop=fav_prop, changetitle=changetitle)
w.doModal()
del w
if (__name__ == "__main__"):
log('script version %s started' % ADDONVERSION)
Main()
log('script stopped')
PK b~Jj j script.favourites/icon.pngPNG
IHDR \rf bKGD pHYs tIME5a IDATx̽ymWU&ymsssҒ@Bk@ilPWD}UeS*VQE>}O,K@@ШjbM{sFל\{~u;9k5ho^* d (
/_?ɼ~~Q}m}:?cjΥ7>V Xr>k|!
Q|R| c*ST;oP|
?nSi;3yMtM@*XTg2?
??|v:]_ֿk~<>v?F9uv'ssߧ~k]?D'1wF'cY?Jh-zgژ7ڿ$"d
X7u*߄_o:ofwYn@겖#os({80g@Uq`6nƋϋxn;K#ykdHT2jzʖϑ>zkv6D+v|:H9V[|UEg?TkTg+|WjU#2;U%#k}Etś.B^G
vSD(b6R|-{{s!JUH-P!_8O^cUNHs8-[]$Ru#s @xIkч@m^'NR{/PkqC'`wqt^J&Q}
0mxMEayab;(&2>s>@YJIK[5ASyR: -fr s\HOFl}5ħ"# 5l)Hبt7CtmUkr7aHD
[2hHѾxfy:5lHXׇSl:G]v-"6: m.
T#]Ӻu.)6
;_t>?&{ȶFy*so2q*PaBg|!k.ΰ)Bj5tkwllZt<_%F渥mRw\zRz#[
xkH`Kpb==W#3({
7mn!#C?{)IEA6ލLJE~2.\!{o
&Z
&yl̩ClbC=UG9L|R5؛9(UR'{XN{HSWW.6/
y/yLDQ/I~Mf
0Epr!lhFm*#5EfɌ66-pAwjX7BrnL,m)a)v=Xf^[7e?:9SOGJ@~.5a(Z?jIOM!y4)|0A59ƶ_z&@*Ҫ|M 蜍OL; %c
(qe@wћ(0'87m8-b7c %^f%[