Compare commits
45 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 577181bb73 | |||
| f0649bf2b5 | |||
| b630801150 | |||
| 99d57fa1f9 | |||
| f7ccef89ef | |||
| d90af02d8b | |||
| 4429451454 | |||
| 313b413fc5 | |||
| 30d0e8641e | |||
| b18b8e0094 | |||
| 66ae5ee093 | |||
| 426dcf964f | |||
| ce58b6993f | |||
| f51e5c3c28 | |||
| e966b5bfa2 | |||
| 9e7e542585 | |||
| 10bb432a14 | |||
| e6b00afc27 | |||
| 60ebe928b0 | |||
| 2482e56fdc | |||
| 290fa837b3 | |||
| 0344163cd5 | |||
| 3a0efadebb | |||
| 8c2ffe006c | |||
| ebf82b8218 | |||
| d9a18d41e3 | |||
| c6e9cc92e8 | |||
| 3ed7b231cc | |||
| 7d26333ce0 | |||
| d9210dcaef | |||
| 0cda25e07a | |||
| be07844e38 | |||
| 5484614cc1 | |||
| 7e67edd64a | |||
| 8ce871a9f7 | |||
| 3acb61d605 | |||
| c621458704 | |||
| aaac00f69a | |||
| afea46a9e1 | |||
| fb64a2e6fe | |||
| a029490fe8 | |||
| 4a057ba83c | |||
| ef6ba710e2 | |||
| 4179ca8ada | |||
| fcbcccaeb9 |
21
CHANGELOG.md
21
CHANGELOG.md
@ -1,5 +1,26 @@
|
||||
# Changelog
|
||||
|
||||
## v2.0.8
|
||||
Released 29th November 2017 (by Heruwar)
|
||||
* Fixes a security issue where the password is sent as plaintext in the URL query parameters when methods from libsonic_extas are used.
|
||||
Also adds Subsonic hex encoding when using legacy auth.
|
||||
* Adds support for URL paths like https://hostname.com/subsonic as requested in Github issue #17 and also encountered in some of the reports (#14 and #5)
|
||||
* Fixes an error when the password only contains digits, which simpleplugin converts to a Long, which later fails when libsonic tries to salt the password expecting a string.
|
||||
|
||||
## v2.0.7
|
||||
Released 18 April 2017
|
||||
* Added Search (by silascutler)
|
||||
|
||||
## v2.0.6
|
||||
Released 14 January 2017
|
||||
* Upgrade to simpleplugin 2.1.0
|
||||
* Browse/Library menus (file structure vs ID3 tags)
|
||||
* Added multilanguage support
|
||||
|
||||
## v2.0.5
|
||||
Released 15 October 2016
|
||||
* Fixed images when listing entries
|
||||
|
||||
## v2.0.4
|
||||
Released 5 October 2016
|
||||
* Cache (permanently) starred items so we can know everywhere if an item is starred or not without querying it
|
||||
|
||||
22
addon.xml
22
addon.xml
@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<addon id="plugin.audio.subsonic" name="Subsonic" version="2.0.4" provider-name="BasilFX,grosbouff,lrusak">
|
||||
<addon id="plugin.audio.subsonic" name="Subsonic" version="2.0.8" provider-name="BasilFX,grosbouff,silascutler,Heruwar">
|
||||
<requires>
|
||||
<import addon="xbmc.python" version="2.14.0"/>
|
||||
<import addon="script.module.dateutil" version="2.4.2"/>
|
||||
@ -9,6 +9,8 @@
|
||||
</extension>
|
||||
<extension point="xbmc.addon.metadata">
|
||||
<summary lang="en">Subsonic music addon for Kodi.</summary>
|
||||
<summary lang="fr">Extension Subsonic pour Kodi.</summary>
|
||||
<summary lang="de">Subsonic Musik Addon für Kodi.</summary>
|
||||
<description lang="en">
|
||||
Stream, star and download your tunes, directly to Kodi !
|
||||
For feature requests / issues:
|
||||
@ -16,13 +18,27 @@
|
||||
Contributions are welcome:
|
||||
https://github.com/gordielachance/plugin.audio.subsonic
|
||||
</description>
|
||||
<description lang="fr">
|
||||
Jouez, marquez vos favoris et téléchargez votre musique, directement dans Kodi !
|
||||
Pour les demandes et problèmes :
|
||||
https://github.com/gordielachance/plugin.audio.subsonic/issues
|
||||
Les contributions sont les bienvenues :
|
||||
https://github.com/gordielachance/plugin.audio.subsonic
|
||||
</description>
|
||||
<description lang="de">
|
||||
Streame, bewerte und downloade deine Medien direkt in Kodi !
|
||||
Für neue Eigentschaften oder Fehler:
|
||||
https://github.com/gordielachance/plugin.audio.subsonic/issues
|
||||
Beihilfe ist Willkommen:
|
||||
https://github.com/gordielachance/plugin.audio.subsonic
|
||||
</description>
|
||||
<disclaimer lang="en"></disclaimer>
|
||||
<language>en</language>
|
||||
<language>multi</language>
|
||||
<platform>all</platform>
|
||||
<license>MIT</license>
|
||||
<forum></forum>
|
||||
<website>http://www.subsonic.org</website>
|
||||
<source>https://github.com/gordielachance/plugin.audio.subsonic</source>
|
||||
<source>https://github.com/gordielachance/plugin.audio.subsonic</source>
|
||||
<email></email>
|
||||
</extension>
|
||||
</addon>
|
||||
|
||||
@ -60,10 +60,11 @@ class SubsonicClient(libsonic.Connection):
|
||||
# Pick a default port
|
||||
host = "%s://%s" % (scheme, parts.hostname)
|
||||
port = parts.port or {"http": 80, "https": 443}[scheme]
|
||||
path = parts.path.rstrip('/') + '/rest'
|
||||
|
||||
# Invoke original constructor
|
||||
super(SubsonicClient, self).__init__(
|
||||
host, username, password, port=port, appName='Kodi', apiVersion=apiversion, insecure=insecure, legacyAuth=legacyauth)
|
||||
host, username, password, port=port, serverPath=path, appName='Kodi', apiVersion=apiversion, insecure=insecure, legacyAuth=legacyauth)
|
||||
|
||||
def getIndexes(self, *args, **kwargs):
|
||||
"""
|
||||
@ -140,6 +141,7 @@ class SubsonicClient(libsonic.Connection):
|
||||
|
||||
def getArtists(self, *args, **kwargs):
|
||||
"""
|
||||
(ID3 tags)
|
||||
Improve the getArtists method. Ensures IDs are integers.
|
||||
"""
|
||||
|
||||
@ -162,6 +164,7 @@ class SubsonicClient(libsonic.Connection):
|
||||
|
||||
def getArtist(self, *args, **kwargs):
|
||||
"""
|
||||
(ID3 tags)
|
||||
Improve the getArtist method. Ensures IDs are integers.
|
||||
"""
|
||||
|
||||
@ -209,6 +212,7 @@ class SubsonicClient(libsonic.Connection):
|
||||
|
||||
def getAlbum(self, *args, **kwargs):
|
||||
"""
|
||||
(ID3 tags)
|
||||
Improve the getAlbum method. Ensures the IDs are real integers.
|
||||
"""
|
||||
|
||||
@ -289,31 +293,25 @@ class SubsonicClient(libsonic.Connection):
|
||||
parts = list(urlparse.urlparse(
|
||||
args[0].get_full_url() + "?" + args[0].data))
|
||||
parts[4] = dict(urlparse.parse_qsl(parts[4]))
|
||||
parts[4].update({"u": self.username, "p": self.password})
|
||||
if self._legacyAuth:
|
||||
parts[4].update({"u": self.username, "p": 'enc:%s' % self._hexEnc(self._rawPass)})
|
||||
parts[4] = urllib.urlencode(parts[4])
|
||||
|
||||
return urlparse.urlunparse(parts)
|
||||
else:
|
||||
return super(SubsonicClient, self)._doBinReq(*args, **kwargs)
|
||||
|
||||
def walk_index(self):
|
||||
def walk_index(self, folder_id=None):
|
||||
"""
|
||||
Request Subsonic's index and iterate each item.
|
||||
"""
|
||||
|
||||
response = self.getIndexes()
|
||||
response = self.getIndexes(folder_id)
|
||||
|
||||
for index in response["indexes"]["index"]:
|
||||
for index in index["artist"]:
|
||||
for item in self.walk_directory(index["id"]):
|
||||
yield item
|
||||
for artist in index["artist"]:
|
||||
yield artist
|
||||
|
||||
for child in response["indexes"]["child"]:
|
||||
if child.get("isDir"):
|
||||
for child in self.walk_directory(child["id"]):
|
||||
yield child
|
||||
else:
|
||||
yield child
|
||||
|
||||
def walk_playlists(self):
|
||||
"""
|
||||
@ -334,6 +332,12 @@ class SubsonicClient(libsonic.Connection):
|
||||
|
||||
for child in response["playlist"]["entry"]:
|
||||
yield child
|
||||
|
||||
def walk_folders(self):
|
||||
response = self.getMusicFolders()
|
||||
|
||||
for child in response["musicFolders"]["musicFolder"]:
|
||||
yield child
|
||||
|
||||
def walk_directory(self, directory_id):
|
||||
"""
|
||||
@ -361,6 +365,7 @@ class SubsonicClient(libsonic.Connection):
|
||||
|
||||
def walk_artists(self):
|
||||
"""
|
||||
(ID3 tags)
|
||||
Request all artists and iterate over each item.
|
||||
"""
|
||||
|
||||
@ -372,6 +377,7 @@ class SubsonicClient(libsonic.Connection):
|
||||
|
||||
def walk_genres(self):
|
||||
"""
|
||||
(ID3 tags)
|
||||
Request all genres and iterate over each item.
|
||||
"""
|
||||
|
||||
@ -382,6 +388,7 @@ class SubsonicClient(libsonic.Connection):
|
||||
|
||||
def walk_albums(self, ltype, size=None, fromYear=None,toYear=None, genre=None, offset=None):
|
||||
"""
|
||||
(ID3 tags)
|
||||
Request all albums for a given genre and iterate over each album.
|
||||
"""
|
||||
|
||||
@ -403,7 +410,8 @@ class SubsonicClient(libsonic.Connection):
|
||||
|
||||
def walk_album(self, album_id):
|
||||
"""
|
||||
Request an alum and iterate over each item.
|
||||
(ID3 tags)
|
||||
Request an album and iterate over each item.
|
||||
"""
|
||||
|
||||
response = self.getAlbum(album_id)
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
#v2.0.1
|
||||
#v2.1.0
|
||||
#https://github.com/romanvm/script.module.simpleplugin/releases
|
||||
|
||||
from simpleplugin import *
|
||||
@ -267,6 +267,16 @@ class Addon(object):
|
||||
"""
|
||||
return self._configdir
|
||||
|
||||
@property
|
||||
def version(self):
|
||||
"""
|
||||
Addon version
|
||||
|
||||
:return: addon version
|
||||
:rtype: str
|
||||
"""
|
||||
return self._addon.getAddonInfo('version')
|
||||
|
||||
def get_localized_string(self, id_):
|
||||
"""
|
||||
Get localized UI string
|
||||
@ -274,7 +284,7 @@ class Addon(object):
|
||||
:param id_: UI string ID
|
||||
:type id_: int
|
||||
:return: UI string in the current language
|
||||
:rtype: unicode
|
||||
:rtype: str
|
||||
"""
|
||||
return self._addon.getLocalizedString(id_).encode('utf-8')
|
||||
|
||||
@ -327,7 +337,7 @@ class Addon(object):
|
||||
value = str(value)
|
||||
self._addon.setSetting(id_, value)
|
||||
|
||||
def log(self, message, level=0):
|
||||
def log(self, message, level=xbmc.LOGDEBUG):
|
||||
"""
|
||||
Add message to Kodi log starting with Addon ID
|
||||
|
||||
@ -339,7 +349,7 @@ class Addon(object):
|
||||
"""
|
||||
if isinstance(message, unicode):
|
||||
message = message.encode('utf-8')
|
||||
xbmc.log('{0}: {1}'.format(self.id, message), level)
|
||||
xbmc.log('{0} [v.{1}]: {2}'.format(self.id, self.version, message), level)
|
||||
|
||||
def log_notice(self, message):
|
||||
"""
|
||||
@ -879,7 +889,6 @@ class Plugin(Addon):
|
||||
self.log_debug('Creating listing from {0}'.format(str(context)))
|
||||
if context.content is not None:
|
||||
xbmcplugin.setContent(self._handle, context.content) # This must be at the beginning
|
||||
listing = []
|
||||
for item in context.listing:
|
||||
is_folder = item.get('is_folder', True)
|
||||
if item.get('list_item') is not None:
|
||||
@ -889,8 +898,7 @@ class Plugin(Addon):
|
||||
if item.get('is_playable'):
|
||||
list_item.setProperty('IsPlayable', 'true')
|
||||
is_folder = False
|
||||
listing.append((item['url'], list_item, is_folder))
|
||||
xbmcplugin.addDirectoryItems(self._handle, listing, len(listing))
|
||||
xbmcplugin.addDirectoryItem(self._handle, item['url'], list_item, is_folder)
|
||||
if context.sort_methods is not None:
|
||||
[xbmcplugin.addSortMethod(self._handle, method) for method in context.sort_methods]
|
||||
xbmcplugin.endOfDirectory(self._handle,
|
||||
@ -912,4 +920,4 @@ class Plugin(Addon):
|
||||
list_item = xbmcgui.ListItem(path=context.path)
|
||||
else:
|
||||
list_item = self.create_list_item(context.play_item)
|
||||
xbmcplugin.setResolvedUrl(self._handle, context.succeeded, list_item)
|
||||
xbmcplugin.setResolvedUrl(self._handle, context.succeeded, list_item)
|
||||
160
resources/language/English/strings.po
Normal file
160
resources/language/English/strings.po
Normal file
@ -0,0 +1,160 @@
|
||||
# XBMC Media Center language file
|
||||
# Addon Name: Subsonic
|
||||
# Addon id: plugin.audio.subsonic
|
||||
# Addon Provider:
|
||||
# Addon Translate: Moshkopp
|
||||
|
||||
msgid ""
|
||||
msgstr ""
|
||||
|
||||
|
||||
msgctxt "#30000"
|
||||
msgid "General"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30001"
|
||||
msgid "Server"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30002"
|
||||
msgid "Server URL"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30003"
|
||||
msgid "Username"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30004"
|
||||
msgid "Password"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30005"
|
||||
msgid "Display"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30006"
|
||||
msgid "Albums per page"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30007"
|
||||
msgid "Tracks per page (ignored in albums & playlists)"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30008"
|
||||
msgid "Download"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30009"
|
||||
msgid "Download folder"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30010"
|
||||
msgid "Streaming"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30011"
|
||||
msgid "Transcode format"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30012"
|
||||
msgid "Bitrate"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30013"
|
||||
msgid "Advanced Settings"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30014"
|
||||
msgid "API version"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30016"
|
||||
msgid "Allow self signed certificates"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30017"
|
||||
msgid "Cache (in minutes)"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30018"
|
||||
msgid "Cache datas time"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30019"
|
||||
msgid "Library"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30020"
|
||||
msgid "Albums"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30021"
|
||||
msgid "Tracks"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30022"
|
||||
msgid "Playlists"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30023"
|
||||
msgid "Newest albums"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30024"
|
||||
msgid "Most played albums"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30025"
|
||||
msgid "Recently played albums"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30026"
|
||||
msgid "Random albums"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30029"
|
||||
msgid "Next page"
|
||||
msgstr ""
|
||||
|
||||
|
||||
msgctxt "#30030"
|
||||
msgid "Back to Menu"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30031"
|
||||
msgid "Item has been unstarred."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30032"
|
||||
msgid "Item has been starred!"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30033"
|
||||
msgid "Star on Subsonic"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30034"
|
||||
msgid "Unstar on Subsonic"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30035"
|
||||
msgid "Download"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30036"
|
||||
msgid "Starred tracks"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30037"
|
||||
msgid "Random tracks"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30038"
|
||||
msgid "Browse"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30039"
|
||||
msgid "Search"
|
||||
msgstr ""
|
||||
|
||||
|
||||
160
resources/language/French/strings.po
Normal file
160
resources/language/French/strings.po
Normal file
@ -0,0 +1,160 @@
|
||||
# XBMC Media Center language file
|
||||
# Addon Name: Subsonic
|
||||
# Addon id: plugin.audio.subsonic
|
||||
# Addon Provider:
|
||||
# Addon Translate: Gordie
|
||||
|
||||
msgid ""
|
||||
msgstr ""
|
||||
|
||||
|
||||
msgctxt "#30000"
|
||||
msgid "General"
|
||||
msgstr "Général"
|
||||
|
||||
msgctxt "#30001"
|
||||
msgid "Server"
|
||||
msgstr "Serveur"
|
||||
|
||||
msgctxt "#30002"
|
||||
msgid "Server URL"
|
||||
msgstr "URL du serveur"
|
||||
|
||||
msgctxt "#30003"
|
||||
msgid "Username"
|
||||
msgstr "Nom d'utilisateur"
|
||||
|
||||
msgctxt "#30004"
|
||||
msgid "Password"
|
||||
msgstr "Mot de passe"
|
||||
|
||||
msgctxt "#30005"
|
||||
msgid "Display"
|
||||
msgstr "Affichage"
|
||||
|
||||
msgctxt "#30006"
|
||||
msgid "Albums per page"
|
||||
msgstr "Albums par page"
|
||||
|
||||
msgctxt "#30007"
|
||||
msgid "Tracks per page (ignored in albums & playlists)"
|
||||
msgstr "Pistes par page (ignoré dans les albums & listes de lecture)"
|
||||
|
||||
msgctxt "#30008"
|
||||
msgid "Download"
|
||||
msgstr "Télécharger"
|
||||
|
||||
msgctxt "#30009"
|
||||
msgid "Download folder"
|
||||
msgstr "Répertoire de téléchargement"
|
||||
|
||||
msgctxt "#30010"
|
||||
msgid "Streaming"
|
||||
msgstr "Diffusion"
|
||||
|
||||
msgctxt "#30011"
|
||||
msgid "Transcode format"
|
||||
msgstr "Format de transcodage"
|
||||
|
||||
msgctxt "#30012"
|
||||
msgid "Bitrate"
|
||||
msgstr "Bitrate"
|
||||
|
||||
msgctxt "#30013"
|
||||
msgid "Advanced Settings"
|
||||
msgstr "Paramètres avancés"
|
||||
|
||||
msgctxt "#30014"
|
||||
msgid "API version"
|
||||
msgstr "Version de l'API"
|
||||
|
||||
msgctxt "#30016"
|
||||
msgid "Allow self signed certificates"
|
||||
msgstr "Autoriser les certificats auto-signés"
|
||||
|
||||
msgctxt "#30017"
|
||||
msgid "Cache (in minutes)"
|
||||
msgstr "Cache (en minutes)"
|
||||
|
||||
msgctxt "#30018"
|
||||
msgid "Cache datas time"
|
||||
msgstr "Durée du cache pour les données"
|
||||
|
||||
msgctxt "#30019"
|
||||
msgid "Library"
|
||||
msgstr "Bibliothèque"
|
||||
|
||||
msgctxt "#30020"
|
||||
msgid "Albums"
|
||||
msgstr "Albums"
|
||||
|
||||
msgctxt "#30021"
|
||||
msgid "Tracks"
|
||||
msgstr "Pistes"
|
||||
|
||||
msgctxt "#30022"
|
||||
msgid "Playlists"
|
||||
msgstr "Playlists"
|
||||
|
||||
msgctxt "#30023"
|
||||
msgid "Newest albums"
|
||||
msgstr "Nouveaux albums"
|
||||
|
||||
msgctxt "#30024"
|
||||
msgid "Most played albums"
|
||||
msgstr "Albums les plus joués"
|
||||
|
||||
msgctxt "#30025"
|
||||
msgid "Recently played albums"
|
||||
msgstr "Albums joués récemment"
|
||||
|
||||
msgctxt "#30026"
|
||||
msgid "Random albums"
|
||||
msgstr "Albums au hasard"
|
||||
|
||||
msgctxt "#30029"
|
||||
msgid "Next page"
|
||||
msgstr "Page suivante"
|
||||
|
||||
msgctxt "#30030"
|
||||
msgid "Back to Menu"
|
||||
msgstr "Retour au menu"
|
||||
|
||||
msgctxt "#30031"
|
||||
msgid "Item has been unstarred."
|
||||
msgstr "Cet élément a été retiré des favoris"
|
||||
|
||||
msgctxt "#30032"
|
||||
msgid "Item has been starred!"
|
||||
msgstr "Cet élément a été ajouté aux favoris !"
|
||||
|
||||
msgctxt "#30033"
|
||||
msgid "Star on Subsonic"
|
||||
msgstr "Ajouter aux favoris Subsonic"
|
||||
|
||||
msgctxt "#30034"
|
||||
msgid "Unstar on Subsonic"
|
||||
msgstr "Retirer des favoris Subsonic"
|
||||
|
||||
msgctxt "#30035"
|
||||
msgid "Download"
|
||||
msgstr "Télécharger"
|
||||
|
||||
msgctxt "#30036"
|
||||
msgid "Starred tracks"
|
||||
msgstr "Pistes favorites"
|
||||
|
||||
msgctxt "#30037"
|
||||
msgid "Random tracks"
|
||||
msgstr "Pistes au hasard"
|
||||
|
||||
msgctxt "#30038"
|
||||
msgid "Browse"
|
||||
msgstr "Parcourir"
|
||||
|
||||
|
||||
msgctxt "#30039"
|
||||
msgid "Search"
|
||||
msgstr "Rechercher"
|
||||
|
||||
|
||||
157
resources/language/German/strings.po
Normal file
157
resources/language/German/strings.po
Normal file
@ -0,0 +1,157 @@
|
||||
# XBMC Media Center language file
|
||||
# Addon Name: Subsonic
|
||||
# Addon id: plugin.audio.subsonic
|
||||
# Addon Provider:
|
||||
# Addon Translate: Moshkopp
|
||||
|
||||
msgid ""
|
||||
msgstr ""
|
||||
|
||||
|
||||
msgctxt "#30000"
|
||||
msgid "General"
|
||||
msgstr "Allgemein"
|
||||
|
||||
msgctxt "#30001"
|
||||
msgid "Server"
|
||||
msgstr "Server"
|
||||
|
||||
msgctxt "#30002"
|
||||
msgid "Server URL"
|
||||
msgstr "Serveradresse"
|
||||
|
||||
msgctxt "#30003"
|
||||
msgid "Username"
|
||||
msgstr "Benutzername"
|
||||
|
||||
msgctxt "#30004"
|
||||
msgid "Password"
|
||||
msgstr "Passwort"
|
||||
|
||||
msgctxt "#30005"
|
||||
msgid "Display"
|
||||
msgstr "Anzeige"
|
||||
|
||||
msgctxt "#30006"
|
||||
msgid "Albums per page"
|
||||
msgstr "Alben pro Seite"
|
||||
|
||||
msgctxt "#30007"
|
||||
msgid "Tracks per page (ignored in albums & playlists)"
|
||||
msgstr "Lieder pro Seite (wird in Alben und Playlisten ignoriert)"
|
||||
|
||||
msgctxt "#30008"
|
||||
msgid "Download"
|
||||
msgstr "Download"
|
||||
|
||||
msgctxt "#30009"
|
||||
msgid "Download folder"
|
||||
msgstr "Download Verzeichnis"
|
||||
|
||||
msgctxt "#30010"
|
||||
msgid "Streaming"
|
||||
msgstr "Übertragung"
|
||||
|
||||
msgctxt "#30011"
|
||||
msgid "Transcode format"
|
||||
msgstr "Umwandlungs Format"
|
||||
|
||||
msgctxt "#30012"
|
||||
msgid "Bitrate"
|
||||
msgstr "Bitrate"
|
||||
|
||||
msgctxt "#30013"
|
||||
msgid "Advanced Settings"
|
||||
msgstr "Erweitert"
|
||||
|
||||
msgctxt "#30014"
|
||||
msgid "API version"
|
||||
msgstr "API Version"
|
||||
|
||||
msgctxt "#30016"
|
||||
msgid "Allow self signed certificates"
|
||||
msgstr "Erlaube eigensignierte Zertifikate"
|
||||
|
||||
msgctxt "#30017"
|
||||
msgid "Cache (in minutes)"
|
||||
msgstr "Speicher (in Minuten)"
|
||||
|
||||
msgctxt "#30018"
|
||||
msgid "Cache datas time"
|
||||
msgstr "Speicher Daten Zeit"
|
||||
|
||||
msgctxt "#30019"
|
||||
msgid "Library"
|
||||
msgstr "Bibliothek"
|
||||
|
||||
msgctxt "#30020"
|
||||
msgid "Albums"
|
||||
msgstr "Alben"
|
||||
|
||||
msgctxt "#30021"
|
||||
msgid "Tracks"
|
||||
msgstr "Lieder"
|
||||
|
||||
msgctxt "#30022"
|
||||
msgid "Playlists"
|
||||
msgstr "Playlisten"
|
||||
|
||||
msgctxt "#30023"
|
||||
msgid "Newest albums"
|
||||
msgstr "Neueste Alben"
|
||||
|
||||
msgctxt "#30024"
|
||||
msgid "Most played albums"
|
||||
msgstr "Häufig gehörte Alben"
|
||||
|
||||
msgctxt "#30025"
|
||||
msgid "Recently played albums"
|
||||
msgstr "Zuletzt gehörte Alben"
|
||||
|
||||
msgctxt "#30026"
|
||||
msgid "Random albums"
|
||||
msgstr "Zufällige Alben"
|
||||
|
||||
msgctxt "#30029"
|
||||
msgid "Next page"
|
||||
msgstr "Nächste Seite"
|
||||
|
||||
msgctxt "#30030"
|
||||
msgid "Back to Menu"
|
||||
msgstr "Hauptmenü"
|
||||
|
||||
msgctxt "#30031"
|
||||
msgid "Item has been unstarred."
|
||||
msgstr "Bewertung entfernt"
|
||||
|
||||
msgctxt "#30032"
|
||||
msgid "Item has been starred!"
|
||||
msgstr "Bewertung hinzugefügt"
|
||||
|
||||
msgctxt "#30033"
|
||||
msgid "Star on Subsonic"
|
||||
msgstr "Bewerten auf Subsonic"
|
||||
|
||||
msgctxt "#30034"
|
||||
msgid "Unstar on Subsonic"
|
||||
msgstr "Löschen auf Subsonic"
|
||||
|
||||
msgctxt "#30035"
|
||||
msgid "Download"
|
||||
msgstr "Herunterladen"
|
||||
|
||||
msgctxt "#30036"
|
||||
msgid "Starred tracks"
|
||||
msgstr "Lieblings lieder"
|
||||
|
||||
msgctxt "#30037"
|
||||
msgid "Random tracks"
|
||||
msgstr "Zufällig lieder"
|
||||
|
||||
msgctxt "#30038"
|
||||
msgid "Browse"
|
||||
msgstr "Durchsuchen"
|
||||
|
||||
msgctxt "#30039"
|
||||
msgid "Search"
|
||||
msgstr "Suche"
|
||||
@ -1,27 +1,28 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<settings>
|
||||
<!-- GENERAL -->
|
||||
<category label="General">
|
||||
<setting label="Server" type="lsep" />
|
||||
<setting id="subsonic_url" type="text" label="Server URL" default="http://demo.subsonic.org"/>
|
||||
<setting id="username" type="text" label="Username" default="guest3"/>
|
||||
<setting id="password" type="text" option="hidden" label="Password" default="guest"/>
|
||||
<setting label="Display" type="lsep" />
|
||||
<setting id="albums_per_page" type="labelenum" label="Albums per page" default="50" values="10|25|50|100|250|500"/>
|
||||
<setting id="tracks_per_page" type="labelenum" label="Tracks per page (ignored in albums & playlists)" default="100" values="10|25|50|100|250|500"/>
|
||||
<setting label="Download" type="lsep" />
|
||||
<setting id="download_folder" type="folder" label="Download folder" source="auto" option="writeable"/>
|
||||
<setting label="Streaming" type="lsep" />
|
||||
<setting id="transcode_format_streaming" type="labelenum" label="Transcode format" values="mp3|raw|flv|ogg"/>
|
||||
<setting id="bitrate_streaming" type="labelenum" label="Bitrate" values="320|256|224|192|160|128|112|96|80|64|56|48|40|32"/>
|
||||
<category label="30000">
|
||||
<setting label="30001" type="lsep" />
|
||||
<setting label="30002" id="subsonic_url" type="text" default="http://demo.subsonic.org"/>
|
||||
<setting label="30003" id="username" type="text" default="guest3"/>
|
||||
<setting label="30004" id="password" type="text" option="hidden" default="guest"/>
|
||||
<setting label="30005" type="lsep" />
|
||||
<setting label="30006" id="albums_per_page" type="labelenum" default="50" values="10|25|50|100|250|500"/>
|
||||
<setting label="30007" id="tracks_per_page" type="labelenum" default="100" values="10|25|50|100|250|500"/>
|
||||
<setting label="30008" type="lsep" />
|
||||
<setting label="30009" id="download_folder" type="folder" source="auto" option="writeable"/>
|
||||
<setting label="30010" type="lsep" />
|
||||
<setting label="30011" id="transcode_format_streaming" type="labelenum" values="mp3|raw|flv|ogg"/>
|
||||
<setting label="30012" id="bitrate_streaming" type="labelenum" values="320|256|224|192|160|128|112|96|80|64|56|48|40|32"/>
|
||||
</category>
|
||||
|
||||
<!-- ADVANCED -->
|
||||
<category label="Advanced Settings">
|
||||
<setting label="Server" type="lsep" />
|
||||
<setting id="apiversion" type="labelenum" label="API version" values="1.11.0|1.12.0|1.13.0|1.14.0" default="1.13.0"/>
|
||||
<setting id="insecure" type="bool" label="Allow self signed certificates" default="false" />
|
||||
<setting label="Cache (in minutes) - not yet implemented" type="lsep" />
|
||||
<setting id="cachetime" type="labelenum" label="Cache datas time" default="5" values="1|5|15|30|60|120|180|720|1440"/>
|
||||
<category label="30013">
|
||||
<setting label="30001" type="lsep" />
|
||||
<setting label="30014" id="apiversion" type="labelenum" values="1.11.0|1.12.0|1.13.0|1.14.0" default="1.13.0"/>
|
||||
<setting label="30016" id="insecure" type="bool" default="false" />
|
||||
<setting label="30017" type="lsep" />
|
||||
<setting label="30018" id="cachetime" type="labelenum" default="15" values="1|5|15|30|60|120|180|720|1440"/>
|
||||
|
||||
</category>
|
||||
</settings>
|
||||
|
||||
Reference in New Issue
Block a user