The branch, frodo has been updated
via da11e6084d63d834a988810e4ec29674c865c2d2 (commit)
via 8d7971d52ee04cc764bb09bfb74865d2360c2cc1 (commit)
from a1a5cf328f67c53c7da82020fb5ae4ad2ca84898 (commit)
- Log -----------------------------------------------------------------
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/plugins;a=commit;h=da11e6084d63d834a988810e4ec29674c865c2d2
commit da11e6084d63d834a988810e4ec29674c865c2d2
Author: beenje <[email protected]>
Date: Sat Jan 19 12:36:14 2013 +0100
[plugin.video.hdtrailers_net] updated to version 1.0.1
diff --git a/plugin.video.hdtrailers_net/addon.xml
b/plugin.video.hdtrailers_net/addon.xml
index 723547a..8cb62cf 100644
--- a/plugin.video.hdtrailers_net/addon.xml
+++ b/plugin.video.hdtrailers_net/addon.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<addon id="plugin.video.hdtrailers_net" name="HD-Trailers.net" version="1.0.0"
provider-name="Tristan Fischer ([email protected])">
+<addon id="plugin.video.hdtrailers_net" name="HD-Trailers.net" version="1.0.1"
provider-name="Tristan Fischer ([email protected])">
<requires>
<import addon="xbmc.python" version="2.1.0"/>
<import addon="script.module.xbmcswift2" version="1.3.0"/>
@@ -11,9 +11,34 @@
<extension point="xbmc.addon.metadata">
<language></language>
<platform>all</platform>
+ <summary lang="ar">اÙÙ
ÙØ§Ø·Ø¹ Ù
Ù Ù
صادر Ù
ختÙÙØ© Ø¨ÙØ¸Ø§Ù
HD</summary>
+ <summary lang="da">Trailer og klip fra adskillige kilder i HD</summary>
<summary lang="de">Trailer und Clips aus verschiedenen Quellen in
HD</summary>
+ <summary lang="el">ÎιαÏημιÏÏικά και ÎÏοÏÏάÏμαÏα
αÏÏ Î´Î¹Î¬ÏοÏÎµÏ ÏηγÎÏ Ïε Ï
Ïηλή ÏοιÏÏηÏα
(HD)</summary>
<summary lang="en">Trailer and Clips from several sources in HD</summary>
+ <summary lang="hu">Ajánlók és videóklipek számos forrásból HD
minÅségben</summary>
+ <summary lang="it">Trailer e Filmati da svariate fonti in HD</summary>
+ <summary lang="ko">ë¤ìí ì¶ì²ì HD ìê³ í¸ê³¼ ë¹ëì¤
í´ë¦½</summary>
+ <summary lang="nl">Trailers en Clips van verschillende bronnen in
HD</summary>
+ <summary lang="no">Trailere og klipp fra flere kilder i HD</summary>
+ <summary lang="pl">Zwiastuny i klipy z kilku źródeŠw HD</summary>
+ <summary lang="pt">Trailers e clipes de várias fontes em HD</summary>
+ <summary lang="pt_BR">Trailers e Clipes de várias fontes em HD</summary>
+ <summary lang="sk">Ukážky a klipy z rôznych zdrojov v HD
kvalite</summary>
+ <summary lang="sv">Trailers och klipp från flera olika källor i
HD</summary>
+ <description lang="ar">ÙØ°Ø§ Ø§ÙØ¨Ø±ÙاÙ
ج اÙÙ
ساعد ÙÙÙØ±
اÙÙØµÙÙ ÙÙ
ÙØ§Ø·Ø¹ اÙÙÙÙÙ
Ù
٠اÙÙ
صادر Ø§ÙØªØ§ÙÙØ©:[CR]-
apple.com[CR]- yahoo.com[CR]- youtube.com[CR]- moviefone.com[CR]- ign.com[CR]-
hd-trailers.net[CR]- aol.com[CR] Ù ØºØ§ÙØ¨ÙØªÙØ§ Ù
تÙÙØ±Ø¨Ù480, 720 Ù
1080</description>
+ <description lang="da">Denne Add-on giver adgang til filmtrailere og klip
fra de følgende kilder:[CR]- apple.com[CR]- yahoo.com[CR]- youtube.com[CR]-
moviefone.com[CR]- ign.com[CR]- hd-trailers.net[CR]- aol.com[CR]De fleste af
dem er tilgængelige i 480p, 720p og 1080p</description>
<description lang="de">Dieses Plugin bietet Zugriff auf verschiedene Film
Trailer und Clips der folgenden Quellen:[CR]- apple.com[CR]- yahoo.com[CR]-
youtube.com[CR]- moviefone.com[CR]- ign.com[CR]- hd-trailers.net[CR]-
aol.com[CR]Die meisten sind verfügbar in 480p, 720p und 1080p</description>
+ <description lang="el">ÎÏ
ÏÏ Ïο Plugin ÏÎ±Ï ÏαÏÎÏει
ÏÏÏÏβαÏη Ïε ÎιαÏημιÏÏικά και ÎÏοÏÏάÏμαÏα
ΤαινιÏν αÏÏ ÏÎ¹Ï Î±ÎºÏλοÏ
Î¸ÎµÏ ÏηγÎÏ:[CR]- apple.com[CR]-
yahoo.com[CR]- youtube.com[CR]- moviefone.com[CR]- ign.com[CR]-
hd-trailers.net[CR]- aol.com[CR]Τα ÏεÏιÏÏÏÏεÏα αÏÏ Î±Ï
Ïά
είναι διαθÎÏιμα Ïε ανάλÏ
Ïη 480p, 720p και
1080p</description>
<description lang="en">This Plugin provides access to Movie Trailers and
Clips from the following sources:[CR]- apple.com[CR]- yahoo.com[CR]-
youtube.com[CR]- moviefone.com[CR]- ign.com[CR]- hd-trailers.net[CR]-
aol.com[CR]Most of them are available in 480p, 720p and 1080p</description>
+ <description lang="hu">Ez a modul hozzáférést biztosÃt
filmajánlókhoz és videóklipekhez a következŠweboldalakról:[CR]-
apple.com[CR]- yahoo.com[CR]- youtube.com[CR]- moviefone.com[CR]- ign.com[CR]-
hd-trailers.net[CR]- aol.com[CR]Legtöbbjük elérhetŠ480p, 720p és 1080p
felbontásban is</description>
+ <description lang="it">This Plugin fornisce accesso a Trailer di Film e
Filmati dalle seguenti fonti::[CR]- apple.com[CR]- yahoo.com[CR]-
youtube.com[CR]- moviefone.com[CR]- ign.com[CR]- hd-trailers.net[CR]-
aol.com[CR]la maggior parte di questi sono disponibili a 480p, 720p e
1080p</description>
+ <description lang="ko">ì´ íë¬ê·¸ì¸ì ë¤ì ìì¤ì ìí ìê³
í¸ê³¼ ë¹ëì¤ í´ë¦½ì ì ê³µí©ëë¤:[CR]- apple.com[CR]- yahoo.com[CR]-
youtube.com[CR]- moviefone.com[CR]- ign.com[CR]- hd-trailers.net[CR]-
aol.com[CR]ëë¶ë¶ì ììì 480p, 720p, 1080p í¬ë§·ì
ì§ìí©ëë¤.</description>
+ <description lang="no">Dette tillegget gir tilgang til Film trailere og
klipp fra følgende kilder:[CR]- apple.com[CR]- yahoo.com[CR]- youtube.com[CR]-
moviefone.com[CR]- ign.com[CR]- hd-trailers.net[CR]- aol.com[CR]De fleste er
tilgjengelig i 480p, 720p and 1080p</description>
+ <description lang="pl">Ten Plugin daje dostÄp do zwiastunów filmowych i
klipów z nastÄpujÄ
cych źródeÅ:[CR]- apple.com[CR]- yahoo.com[CR]-
youtube.com[CR]- moviefone.com[CR]- ign.com[CR]- hd-trailers.net[CR]-
aol.com[CR]WiÄkszoÅÄ z nich jest dostÄpna w 480p, 720p i 1080p</description>
+ <description lang="pt">Este plugin permite-lhe ver trailers e clipes de
filmes a partir das seguintes fontes:[CR]- apple.com[CR]- yahoo.com[CR]-
youtube.com[CR]- moviefone.com[CR]- ign.com[CR]- hd-trailers.net[CR]-
aol.com[CR]A maior parte deles está disponÃvel em 480p, 720p and
1080p</description>
+ <description lang="pt_BR">Este plugin fornece acesso a trailers de filmes
e clipes das seguintes fontes:[CR]- apple.com[CR]- yahoo.com[CR]-
youtube.com[CR]- moviefone.com[CR]- ign.com[CR]- hd-trailers.net[CR]-
aol.com[CR]A maioria deles está disponÃvel em 480p, 720p e 1080p</description>
+ <description lang="sk">Tento doplnok poskytuje prÃstup k ukážkam filmov
a ku klipom z týchto zdrojov: - apple.com - yahoo.com -
youtube.com - moviefone.com - ign.com - hd-trailers.net -
aol.com VäÄÅ¡ina z nich je dostupná v rozlÃÅ¡enà 480p, 720p a
1080p.</description>
+ <description lang="sv">Detta plugin tillhandahåller trailers hämtade
från följande källor:[CR]- apple.com[CR]- yahoo.com[CR]- youtube.com[CR]-
moviefone.com[CR]- ign.com[CR]- hd-trailers.net[CR]- aol.com[CR]De flesta är
tillgängliga i 480p, 720p and 1080p</description>
</extension>
</addon>
diff --git a/plugin.video.hdtrailers_net/changelog.txt
b/plugin.video.hdtrailers_net/changelog.txt
index 4615f63..8b88acf 100644
--- a/plugin.video.hdtrailers_net/changelog.txt
+++ b/plugin.video.hdtrailers_net/changelog.txt
@@ -1,3 +1,7 @@
+1.0.1
+ - fixed coming-soon
+ - updated translations
+
1.0.0
- new icon
- added ability to override content-type in movie-view
diff --git a/plugin.video.hdtrailers_net/resources/language/English/strings.xml
b/plugin.video.hdtrailers_net/resources/language/English/strings.xml
index 19eb7ee..2515a99 100644
--- a/plugin.video.hdtrailers_net/resources/language/English/strings.xml
+++ b/plugin.video.hdtrailers_net/resources/language/English/strings.xml
@@ -1,4 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!-- Translated using Transifex web application. For support, or if you would
like to to help out, please visit your language team! -->
+<!-- English language-Team URL:
http://www.transifex.com/projects/p/xbmc-addons/language/en/ -->
+<!-- Report language file syntax bugs at: [email protected] -->
+
<strings>
<!-- Default strings -->
<string id="30001">Page</string>
diff --git a/plugin.video.hdtrailers_net/resources/language/German/strings.xml
b/plugin.video.hdtrailers_net/resources/language/German/strings.xml
index 9ba843d..5de4177 100644
--- a/plugin.video.hdtrailers_net/resources/language/German/strings.xml
+++ b/plugin.video.hdtrailers_net/resources/language/German/strings.xml
@@ -1,4 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!-- Translated using Transifex web application. For support, or if you would
like to to help out, please visit your language team! -->
+<!-- German language-Team URL:
http://www.transifex.com/projects/p/xbmc-addons/language/de/ -->
+<!-- Report language file syntax bugs at: [email protected] -->
+
<strings>
<!-- Default strings -->
<string id="30001">Seite</string>
diff --git a/plugin.video.hdtrailers_net/resources/lib/scraper.py
b/plugin.video.hdtrailers_net/resources/lib/scraper.py
index 3b3ec2d..7606be7 100644
--- a/plugin.video.hdtrailers_net/resources/lib/scraper.py
+++ b/plugin.video.hdtrailers_net/resources/lib/scraper.py
@@ -125,7 +125,7 @@ def _get_movies(url):
'id': td.a['href'].split('/')[2],
'title': td.a.img['alt'],
'thumb': td.a.img['src']
- } for td in tree.findAll('td', {'class': 'indexTableTrailerImage'})]
+ } for td in tree.findAll('td', 'indexTableTrailerImage') if td.a.img]
has_next_page = tree.find(
'a',
attrs={'class': 'startLink'},
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/plugins;a=commit;h=8d7971d52ee04cc764bb09bfb74865d2360c2cc1
commit 8d7971d52ee04cc764bb09bfb74865d2360c2cc1
Author: beenje <[email protected]>
Date: Sat Jan 19 12:36:10 2013 +0100
[plugin.audio.listenliveeu] updated to version 1.0.1
diff --git a/plugin.audio.listenliveeu/addon.xml
b/plugin.audio.listenliveeu/addon.xml
index 6966571..0def46c 100644
--- a/plugin.audio.listenliveeu/addon.xml
+++ b/plugin.audio.listenliveeu/addon.xml
@@ -1,11 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<addon
id="plugin.audio.listenliveeu"
- version="0.4.5"
+ version="1.0.1"
name="ListenLiveEU"
provider-name="bootsy, xycl">
<requires>
- <import addon="xbmc.python" version="2.0"/>
+ <import addon="xbmc.python" version="2.1.0"/>
</requires>
<extension
point="xbmc.python.pluginsource"
@@ -13,12 +13,13 @@
<provides>audio</provides>
</extension>
<extension point="xbmc.addon.metadata">
- <summary lang="en">European radio stations streaming live on the
internet</summary>
<summary lang="de">Europäische Radiostationen, die live im Internet
streamen</summary>
+ <summary lang="en">European radio stations streaming live on the
internet</summary>
<summary lang="hu">Európai internetes rádiók</summary>
- <description lang="en">Welcome to listenlive.eu, a web radio directory
showcasing over 4000 radio stations from across Europe streaming live on the
internet.</description>
<description lang="de">Listenlive.eu ist ein Web-Radio Aggregator mit mehr
als 4000 Radiostationen aus Europa.</description>
+ <description lang="en">Welcome to listenlive.eu, a web radio directory
showcasing over 4000 radio stations from across Europe streaming live on the
internet.</description>
<description lang="hu">A listenlive.eu több mint 4000 élo rádióadást
tartalmaz Európából, melyeket az interneten keresztül érhetsz
el.</description>
<platform>all</platform>
+ <language></language>
</extension>
-</addon>
\ No newline at end of file
+</addon>
diff --git a/plugin.audio.listenliveeu/changelog.txt
b/plugin.audio.listenliveeu/changelog.txt
index ce0f0a4..5fe2c61 100644
--- a/plugin.audio.listenliveeu/changelog.txt
+++ b/plugin.audio.listenliveeu/changelog.txt
@@ -1,7 +1,25 @@
+[B]Version 1.0.1[/B]
+
+- Update: Language files from Transifex
+
+[B]Version 1.0.0[/B]
+
+- Update: Version set to 1.0.0 for Frodo
+
+
+[B]Version 0.4.6[/B]
+
+- Necessary changes for Frodo Release
+- Unicode error in stream listing corrected. Thanks to georgio.
+- Works now with unicode characters in Windows XBMC path and user profile paths
+- Unix style linefeeds
+
+
[B]Version 0.4.5[/B]
- Necessary changes for Eden Release
+
[B]Version 0.4.3[/B]
- Replaced: os.getcwd() with addon.getAddonInfo('path')
diff --git a/plugin.audio.listenliveeu/default.py
b/plugin.audio.listenliveeu/default.py
index 0070747..b168ff4 100644
--- a/plugin.audio.listenliveeu/default.py
+++ b/plugin.audio.listenliveeu/default.py
@@ -5,15 +5,15 @@
import sys, os, os.path, xbmcaddon
import xbmc, xbmcgui, xbmcplugin
import urllib, re, time
+from HTMLParser import HTMLParser
from shutil import rmtree, copy
import traceback
from pprint import pprint
__plugin__ = "ListenLiveEU"
-__version__ = '0.4.4'
-__author__ = 'bootsy [[email protected]]'
-__date__ = '07-11-2010'
-__svn__ =
'http://xbmc-addons.googlecode.com/svn/addons/plugin.audio.listenliveeu/'
+__version__ = '0.4.6'
+__author__ = 'bootsy, xycl'
+__date__ = '2013-01-16'
BASE_URL = 'http://www.listenlive.eu'
@@ -21,394 +21,398 @@ URL_INDEX = '/'.join( [BASE_URL, 'index.html'] )
URL_NEW = '/'.join( [BASE_URL, 'new.html'] )
addon = xbmcaddon.Addon(id='plugin.audio.listenliveeu')
-DIR_HOME = addon.getAddonInfo('path')
-DIR_HOME = xbmc.translatePath(DIR_HOME)
+DIR_HOME = addon.getAddonInfo('path').decode('utf-8')
+DIR_HOME = xbmc.translatePath(DIR_HOME).decode('utf-8')
FILE_INDEX_PAGE = os.path.join(DIR_HOME, 'index.html')
-DIR_SETTINGS = addon.getAddonInfo('profile')
-DIR_SETTINGS = xbmc.translatePath(DIR_SETTINGS)
+DIR_SETTINGS = addon.getAddonInfo('profile').decode('utf-8')
+DIR_SETTINGS = xbmc.translatePath(DIR_SETTINGS).decode('utf-8')
FILE_FAVS = os.path.join(DIR_SETTINGS, 'favorites.xml')
dialogProgress = xbmcgui.DialogProgress()
dialog = xbmcgui.Dialog()
def log(msg):
- if type(msg) not in (str, unicode):
- xbmc.log("[%s]: %s" % (__plugin__, type(msg)))
- pprint (msg)
- else:
- xbmc.log("[%s]: %s" % (__plugin__, msg))
+ if type(msg) not in (str, unicode):
+ xbmc.log("[%s]: %s" % (__plugin__, type(msg)))
+ pprint (msg)
+ else:
+ if type(msg) in (unicode,):
+ msg = msg.encode('utf-8')
+ xbmc.log("[%s]: %s" % (__plugin__, msg))
def errorOK(title="", msg=""):
- e = str( sys.exc_info()[ 1 ] )
- log(e)
- if not title:
- title = __plugin__ + ' v' + __version__
- if not msg:
- msg = "ERROR!"
- dialog.ok( title, msg, e )
-
+ e = str( sys.exc_info()[ 1 ] )
+ log(e)
+ if not title:
+ title = __plugin__ + ' v' + __version__
+ if not msg:
+ msg = "ERROR!"
+ dialog.ok( title, msg, e )
+
#######################################################################################################################
# write favs file
#######################################################################################################################
def writeFavs():
- f = open(xbmc.translatePath(FILE_FAVS),"w")
- f.write('This is your favorites file.' + '\n')
- f.close()
+ f = open(xbmc.translatePath(FILE_FAVS),"w")
+ f.write('This is your favorites file.' + '\n')
+ f.close()
#######################################################################################################################
# add favorite
#######################################################################################################################
def addFav(url):
- log("> addFav()")
- if url:
- try:
- favoritesRE=re.compile('(?i)name=(.+?)&url=(.+?)\n')
- favorites = favoritesRE.findall(url)
- for favorite in favorites:
- name = favorite[0]
- url = favorite[1]
- nameurl = 'name=%s&url=%s%s' % (name, url, '\n')
- doc = open(FILE_FAVS, "r+")
- text = doc.read().decode('utf-8')
- if nameurl in text:
- doc.close()
- dialog.ok( __plugin__ + ' v' + __version__,
__language__(30015), '', urllib.unquote_plus(name).decode('utf-8') )
- else:
- doc.write(nameurl)
- doc.close()
- dialog.ok( __plugin__ + ' v' + __version__,
__language__(30007), '', urllib.unquote_plus(name).decode('utf-8') )
- except:
- dialog.ok( __plugin__ + ' v' + __version__,
__language__(30008), '', urllib.unquote_plus(name).decode('utf-8') )
- return True
+ log("> addFav()")
+ if url:
+ try:
+ favoritesRE=re.compile('(?i)name=(.+?)&url=(.+?)\n')
+ favorites = favoritesRE.findall(url)
+ for favorite in favorites:
+ name = favorite[0]
+ url = favorite[1]
+ nameurl = 'name=%s&url=%s%s' % (name, url, '\n')
+ doc = open(FILE_FAVS, "r+")
+ text = doc.read().decode('utf-8')
+ if nameurl in text:
+ doc.close()
+ dialog.ok( __plugin__ + ' v' + __version__,
__language__(30015), '', urllib.unquote_plus(name).decode('utf-8') )
+ else:
+ doc.write(nameurl)
+ doc.close()
+ dialog.ok( __plugin__ + ' v' + __version__,
__language__(30007), '', urllib.unquote_plus(name).decode('utf-8') )
+ except:
+ dialog.ok( __plugin__ + ' v' + __version__, __language__(30008),
'', urllib.unquote_plus(name).decode('utf-8') )
+ return True
#######################################################################################################################
# remove favorite
#######################################################################################################################
def remFav(url):
- log("> remFav()")
- if url:
- try:
- favoritesRE=re.compile('(?i)name=(.+?)&url=(.+?)\n')
- favorites = favoritesRE.findall(url)
- for favorite in favorites:
- name = favorite[0]
- url = favorite[1]
- nameurl = 'name=%s&url=%s%s' % (name, url, '\n')
- if dialog.yesno( __plugin__ + ' v' + __version__,
__language__(30009), '', urllib.unquote_plus(name).decode('utf-8') ):
- doc = open(FILE_FAVS, "rU")
- text = doc.read().decode('utf-8')
- doc.close()
- doc = open(FILE_FAVS, "w")
- doc.write(text.replace(nameurl, ''))
- doc.close()
- xbmc.executebuiltin('Container.Refresh')
- dialog.ok( __plugin__ + ' v' + __version__,
__language__(30010), '', urllib.unquote_plus(name).decode('utf-8') )
- doc = open(FILE_FAVS).read().decode('utf-8')
- if doc == 'This is your favorites file.\n':
- dialog.ok( __plugin__ + ' v' +
__version__, __language__(30016) )
- except:
- dialog.ok( __plugin__ + ' v' + __version__,
__language__(30011), '', urllib.unquote_plus(name).decode('utf-8') )
- return True
+ log("> remFav()")
+ if url:
+ try:
+ favoritesRE=re.compile('(?i)name=(.+?)&url=(.+?)\n')
+ favorites = favoritesRE.findall(url)
+ for favorite in favorites:
+ name = favorite[0]
+ url = favorite[1]
+ nameurl = 'name=%s&url=%s%s' % (name, url, '\n')
+ if dialog.yesno( __plugin__ + ' v' + __version__,
__language__(30009), '', urllib.unquote_plus(name).decode('utf-8') ):
+ doc = open(FILE_FAVS, "rU")
+ text = doc.read().decode('utf-8')
+ doc.close()
+ doc = open(FILE_FAVS, "w")
+ doc.write(text.replace(nameurl, ''))
+ doc.close()
+ xbmc.executebuiltin('Container.Refresh')
+ dialog.ok( __plugin__ + ' v' + __version__,
__language__(30010), '', urllib.unquote_plus(name).decode('utf-8') )
+ doc = open(FILE_FAVS).read().decode('utf-8')
+ if doc == 'This is your favorites file.\n':
+ dialog.ok( __plugin__ + ' v' + __version__,
__language__(30016) )
+ except:
+ dialog.ok( __plugin__ + ' v' + __version__, __language__(30011),
'', urllib.unquote_plus(name).decode('utf-8') )
+ return True
#######################################################################################################################
# remove all favs
######################################################################################################
def remallFavs(url):
- log("> remallFavs()")
- if dialog.yesno(__plugin__ + ' v' + __version__, __language__(30012) ):
- try:
- doc = open(FILE_FAVS).read().decode('utf-8')
- if doc == 'This is your favorites file.\n':
- dialog.ok( __plugin__ + ' v' + __version__,
__language__(30017) )
- else:
- deleteFile(FILE_FAVS)
- dialog.ok( __plugin__ + ' v' + __version__,
__language__(30013) )
- xbmc.executebuiltin('Container.Refresh')
- writeFavs()
- except:
- dialog.ok( __plugin__ + ' v' + __version__,
__language__(30014) )
- return True
-
+ log("> remallFavs()")
+ if dialog.yesno(__plugin__ + ' v' + __version__, __language__(30012) ):
+ try:
+ doc = open(FILE_FAVS).read().decode('utf-8')
+ if doc == 'This is your favorites file.\n':
+ dialog.ok( __plugin__ + ' v' + __version__,
__language__(30017) )
+ else:
+ deleteFile(FILE_FAVS)
+ dialog.ok( __plugin__ + ' v' + __version__,
__language__(30013) )
+ xbmc.executebuiltin('Container.Refresh')
+ writeFavs()
+ except:
+ dialog.ok( __plugin__ + ' v' + __version__, __language__(30014) )
+ return True
+
#######################################################################################################################
# get favorite
######################################################################################################
def getFavorites(url):
- log("> getFavorites()")
- doc = open(url).read()
- if doc:
- try:
- favoritesRE=re.compile('(?i)name=(.+?)&url=(.+?)\n')
- favorites = favoritesRE.findall(doc)
- for favorite in favorites:
- name = favorite[0]
- url = favorite[1]
- infolabels = {}
-
addDirectoryItem(urllib.unquote_plus(name).decode('utf-8'),
urllib.unquote_plus(url), 3, infoLabels=infolabels, isFolder=False)
- xbmcplugin.addSortMethod( handle=int( sys.argv[ 1 ] ),
sortMethod=xbmcplugin.SORT_METHOD_LABEL )
- except:
- errorOK("getFavorites()")
- log("< getFavorites()")
- return True
+ log("> getFavorites()")
+ doc = open(url).read()
+ if doc:
+ try:
+ favoritesRE=re.compile('(?i)name=(.+?)&url=(.+?)\n')
+ favorites = favoritesRE.findall(doc)
+ for favorite in favorites:
+ name = favorite[0]
+ url = favorite[1]
+ infolabels = {}
+ addDirectoryItem(urllib.unquote_plus(name).decode('utf-8'),
urllib.unquote_plus(url), 3, infoLabels=infolabels, isFolder=False)
+ xbmcplugin.addSortMethod( handle=int( sys.argv[ 1 ] ),
sortMethod=xbmcplugin.SORT_METHOD_LABEL )
+ except:
+ errorOK("getFavorites()")
+ log("< getFavorites()")
+ return True
#######################################################################################################################
# get initial root category
#######################################################################################################################
def getRootCats():
- log("> getRootCats()")
- doc = open(FILE_FAVS).read().decode('utf-8')
- if doc == 'This is your favorites file.\n':
- items = ( (__language__(30000), "new"),
(__language__(30001),"country"), (__language__(30002),"genre"), )
- else:
- items = ( (__language__(30000), "new"),
(__language__(30003),"favorites"), (__language__(30001),"country"),
(__language__(30002),"genre"), )
+ log("> getRootCats()")
+ doc = open(FILE_FAVS).read().decode('utf-8')
+ if doc == 'This is your favorites file.\n':
+ items = ( (__language__(30000), "new"),
(__language__(30001),"country"), (__language__(30002),"genre"), )
+ else:
+ items = ( (__language__(30000), "new"),
(__language__(30003),"favorites"), (__language__(30001),"country"),
(__language__(30002),"genre"), )
- for title, url in items:
- addDirectoryItem(title, url, 0)
+ for title, url in items:
+ addDirectoryItem(title, url, 0)
- xbmcplugin.addSortMethod( handle=int( sys.argv[ 1 ] ),
sortMethod=xbmcplugin.SORT_METHOD_LABEL )
- log("< getRootCats()")
- return True
+ xbmcplugin.addSortMethod( handle=int( sys.argv[ 1 ] ),
sortMethod=xbmcplugin.SORT_METHOD_LABEL )
+ log("< getRootCats()")
+ return True
#######################################################################################################################
# Get category of by country or by genre
#######################################################################################################################
def getCats(byCountry):
- log("> getCats() byCountry=%s" % byCountry)
- ok = False
-
- doc = getURL(URL_INDEX, FILE_INDEX_PAGE)
- if doc:
- log("getCats() parsing ...")
- try:
- # get section
- baseRE = '<p>Browse by
$SECTION.*?</div>(.+?)</tr></tbody></table></div><br />'
- if byCountry:
- sectionRE = baseRE.replace('$SECTION','country')
- else:
- sectionRE = baseRE.replace('$SECTION','genre')
- #section = re.search(sectionRE, doc, re.IGNORECASE +
re.MULTILINE + re.DOTALL).group(1)
- section = re.search('(?ims)' + sectionRE, doc).group(1)
-
- # parse info from section
- p=re.compile('<a href="(.+?)".*?>(.+?)</a',
re.IGNORECASE)
- matches = p.findall(section)
- for page, name in matches:
- url = "/".join([BASE_URL,page])
- addDirectoryItem(name,url,1)
-
- xbmcplugin.addSortMethod( handle=int( sys.argv[ 1 ] ),
sortMethod=xbmcplugin.SORT_METHOD_LABEL )
- ok = True
- except:
- errorOK("getCats()")
-
- log("< getCats() ok=%s" % ok)
- return ok
+ log("> getCats() byCountry=%s" % byCountry)
+ ok = False
+
+ doc = getURL(URL_INDEX, FILE_INDEX_PAGE)
+ if doc:
+ log("getCats() parsing ...")
+ try:
+ # get section
+ baseRE = '<p>Browse by
$SECTION.*?</div>(.+?)</tr></tbody></table></div><br />'
+ if byCountry:
+ sectionRE = baseRE.replace('$SECTION','country')
+ else:
+ sectionRE = baseRE.replace('$SECTION','genre')
+ #section = re.search(sectionRE, doc, re.IGNORECASE + re.MULTILINE
+ re.DOTALL).group(1)
+ section = re.search('(?ims)' + sectionRE, doc).group(1)
+
+ # parse info from section
+ p=re.compile('<a href="(.+?)".*?>(.+?)</a', re.IGNORECASE)
+ matches = p.findall(section)
+ for page, name in matches:
+ url = "/".join([BASE_URL,page])
+ addDirectoryItem(name,url,1)
+
+ xbmcplugin.addSortMethod( handle=int( sys.argv[ 1 ] ),
sortMethod=xbmcplugin.SORT_METHOD_LABEL )
+ ok = True
+ except:
+ errorOK("getCats()")
+
+ log("< getCats() ok=%s" % ok)
+ return ok
######################################################################################################
def getStreams(url):
- log("> getStreams()")
- ok = False
-
- #doc = open('/'.join( [DIR_HOME, 'top40.html'] ) ).read()
-
- doc = getURL(url)
- if doc:
- try:
- log("parsing doc ...")
- doc=doc.replace('<br />','')
- # get all table rows, one staion per row - with
possible multiple streams
- stationsRE=re.compile('(?ims)(<tr>.*?</tr>)')
-
- # url, name, loc, stream(s), genre
- #stationRE=re.compile('(?ims)<td><a
href=".*?"><b>(.*?)</b>.*?<td>(.*?)</td>.*?alt=".*?".*?<td>(<a
href=.*?</td>).*?(?:<td>(.*?)</td>|</tr>)')
- stationRE=re.compile('(?ims)<td.+?<a
href=".*?"><b>(.*?)</b>.*?<td>(.*?)</td>.*?alt=".*?".*?<td>(<a
href=.*?</td>).*?(?:<td>(.*?)</td>|</tr>)')
-
- #streamsRE=re.compile('(?i)href="(.*?)">(.*?)<')
- streamsRE=re.compile('(?i)href="([^"]+)">(\d+
+[^"]+|\d+[.]\d+ +[^"]+)</a>')
-
- # get all stations
- stations = stationsRE.findall(doc)
- #pprint (stations)
- genreExists = False
- for station in stations:
- #print station
-
- # get station details
- stationInfo = re.search(stationRE, station)
- if not stationInfo:
- log("stationInfo re not matched -
ignore station")
- continue
- #print stationInfo.groups()
-
- # ensure we only use allowed stream type
- #type = stationInfo.group(3)
- #if type not in ('MP3','Windows Media'):
# add allowed type here
- # log("ignored stream type: " + type)
- # continue
-
- name = stationInfo.group(1)
- loc = stationInfo.group(2)
- streamsData = stationInfo.group(3)
- genre = stationInfo.group(4)
-
- # parse station streams
- streams = streamsRE.findall(streamsData)
-
- for stream in streams:
- streamURL = stream[0]
- streamRate = stream[1]
- if not streamRate.endswith('Kbps') or
streamRate.endswith('kbps'):
- log("ignored stream rate: " +
streamRate)
- continue
- # further filter stream playlist types
- #if streamURL.endswith('.m3u') or
streamURL.endswith('.pls'):
- #if not
streamURL.endswith('ogg.m3u') and not streamURL.endswith('aac.m3u'):
- # stream allowed,
display it
- infolabels = {}
- label1 = "%s" % (name)
-
- if list_loc=='true':
- label1 += " | %s" % (loc)
-
- if genre:
- if list_genre=='true':
- label1 += " | %s" %
(genre)
- infolabels["Genre"] = genre
- genreExists = True
# if any have genre then allow SORT_METHOD
-
- if list_rate=='true':
- label1 += " | %s" % (streamRate)
-
- infolabels["Title"] = label1
- streamRate2= streamRate.replace('Kbps',
'')
- streamRate2=
streamRate2.replace('kbps', '')
- #print 'rate2: ' + streamRate2 + ' - '
+ 'min_rate: ' + min_rate
- if float(streamRate2) >=
float(min_rate):
- #print 'show it!'
- addDirectoryItem(label1,
streamURL, 2, infoLabels=infolabels, isFolder=False)
-
- xbmcplugin.addSortMethod( handle=int( sys.argv[ 1 ] ),
sortMethod=xbmcplugin.SORT_METHOD_LABEL )
- if genreExists:
- xbmcplugin.addSortMethod( handle=int( sys.argv[
1 ] ), sortMethod=xbmcplugin.SORT_METHOD_GENRE )
- ok = True
- except:
- errorOK("getStreams()")
- log("< getStreams() ok=%s" % ok)
- return ok
+ log("> getStreams()")
+ ok = False
+
+ #doc = open('/'.join( [DIR_HOME, 'top40.html'] ) ).read()
+
+ doc = getURL(url)
+ if doc:
+ try:
+ log("parsing doc ...")
+ doc=doc.replace('<br />','')
+ # get all table rows, one staion per row - with possible multiple
streams
+ stationsRE=re.compile('(?ims)(<tr>.*?</tr>)')
+
+ # url, name, loc, stream(s), genre
+ #stationRE=re.compile('(?ims)<td><a
href=".*?"><b>(.*?)</b>.*?<td>(.*?)</td>.*?alt=".*?".*?<td>(<a
href=.*?</td>).*?(?:<td>(.*?)</td>|</tr>)')
+ stationRE=re.compile('(?ims)<td.+?<a
href=".*?"><b>(.*?)</b>.*?<td>(.*?)</td>.*?alt=".*?".*?<td>(<a
href=.*?</td>).*?(?:<td>(.*?)</td>|</tr>)')
+
+ #streamsRE=re.compile('(?i)href="(.*?)">(.*?)<')
+ streamsRE=re.compile('(?i)href="([^"]+)">(\d+ +[^"]+|\d+[.]\d+
+[^"]+)</a>')
+
+ # get all stations
+ stations = stationsRE.findall(doc)
+ #pprint (stations)
+ genreExists = False
+ for station in stations:
+ #print station
+
+ # get station details
+ stationInfo = re.search(stationRE, station)
+ if not stationInfo:
+ log("stationInfo re not matched - ignore station")
+ continue
+ #print stationInfo.groups()
+
+ # ensure we only use allowed stream type
+ #type = stationInfo.group(3)
+ #if type not in ('MP3','Windows Media'):
# add allowed type here
+ # log("ignored stream type: " + type)
+ # continue
+
+ name = stationInfo.group(1)
+ loc = stationInfo.group(2)
+ streamsData = stationInfo.group(3)
+ genre = stationInfo.group(4)
+
+ # parse station streams
+ streams = streamsRE.findall(streamsData)
+
+ for stream in streams:
+ streamURL = stream[0]
+ streamRate = stream[1]
+ if not streamRate.endswith('Kbps') or
streamRate.endswith('kbps'):
+ log("ignored stream rate: " + streamRate)
+ continue
+ # further filter stream playlist types
+ #if streamURL.endswith('.m3u') or
streamURL.endswith('.pls'):
+ #if not streamURL.endswith('ogg.m3u') and not
streamURL.endswith('aac.m3u'):
+ # stream allowed, display it
+ infolabels = {}
+ label1 = "%s" % (name)
+
+ if list_loc=='true':
+ label1 += " | %s" % (loc)
+
+ if genre:
+ if list_genre=='true':
+ label1 += " | %s" % (genre)
+ infolabels["Genre"] = genre
+ genreExists = True # if any have genre
then allow SORT_METHOD
+
+ if list_rate=='true':
+ label1 += " | %s" % (streamRate)
+
+ infolabels["Title"] = HTMLParser().unescape(label1)
+ streamRate2= streamRate.replace('Kbps', '')
+ streamRate2= streamRate2.replace('kbps', '')
+ #print 'rate2: ' + streamRate2 + ' - ' + 'min_rate: ' +
min_rate
+ if float(streamRate2) >= float(min_rate):
+ #print 'show it!'
+ addDirectoryItem(HTMLParser().unescape(label1),
streamURL, 2, infoLabels=infolabels, isFolder=False)
+
+ xbmcplugin.addSortMethod( handle=int( sys.argv[ 1 ] ),
sortMethod=xbmcplugin.SORT_METHOD_LABEL )
+ if genreExists:
+ xbmcplugin.addSortMethod( handle=int( sys.argv[ 1 ] ),
sortMethod=xbmcplugin.SORT_METHOD_GENRE )
+ ok = True
+ except:
+ errorOK("getStreams()")
+ log("< getStreams() ok=%s" % ok)
+ return ok
######################################################################################################
# fetch webpage or open filename if exists
######################################################################################################
def getURL(url, fn=''):
- """ read a doc from an url and save to file (if required) """
-
- try:
- doc = ''
- # load local file if exists
- if fn and os.path.isfile(fn):
- doc = open(fn).read()
- if not doc:
- deleteFile(fn) # empty file,
remove it
- log("Empty file removed: " + fn)
- doc = ''
- else:
- log("Loaded existing file: " + fn)
-
- if not doc:
- safe_url = url.replace( " ", "%20" )
- log('Downloading from url=%s' % safe_url)
- sock = urllib.urlopen( safe_url )
- doc = sock.read()
- if fn:
- fp = open(fn, "w")
- fp.write(doc)
- fp.close()
- log("File saved to " + fn)
- sock.close()
-
- if doc:
- return unicode(doc, 'UTF-8')
- else:
- return ''
- except:
- errorOK("getURL()")
- return None
+ """ read a doc from an url and save to file (if required) """
+
+ try:
+ doc = ''
+ # load local file if exists
+ if fn and os.path.isfile(fn):
+ doc = open(fn).read()
+ if not doc:
+ deleteFile(fn) # empty file, remove it
+ log("Empty file removed: " + fn)
+ doc = ''
+ else:
+ log("Loaded existing file: " + fn)
+
+ if not doc:
+ safe_url = url.replace( " ", "%20" )
+ log('Downloading from url=%s' % safe_url)
+ sock = urllib.urlopen( safe_url )
+ doc = sock.read()
+ if fn:
+ fp = open(fn, "w")
+ fp.write(doc)
+ fp.close()
+ log("File saved to " + fn)
+ sock.close()
+
+ if doc:
+ return unicode(doc, 'utf-8', errors='ignore')
+ else:
+ return ''
+ except:
+ errorOK("getURL()")
+ return None
######################################################################################################
def get_params():
- """ extract params from argv[2] to make a dict (key=value) """
- paramDict = {}
- try:
- if sys.argv[2]:
- paramPairs=sys.argv[2][1:].split( "&" )
- for paramsPair in paramPairs:
- paramSplits = paramsPair.split('=')
- if (len(paramSplits))==2:
- paramDict[paramSplits[0]] =
paramSplits[1]
- except:
- errorOK()
- return paramDict
+ """ extract params from argv[2] to make a dict (key=value) """
+ paramDict = {}
+ try:
+ if sys.argv[2]:
+ paramPairs=sys.argv[2][1:].split( "&" )
+ for paramsPair in paramPairs:
+ paramSplits = paramsPair.split('=')
+ if (len(paramSplits))==2:
+ paramDict[paramSplits[0]] = paramSplits[1]
+ except:
+ errorOK()
+ return paramDict
######################################################################################################
def addDirectoryItem(name, url, mode, label2='', infoType="Music", infoLabels
= {}, isFolder=True):
- liz=xbmcgui.ListItem(name, label2)
- if not infoLabels:
- infoLabels = {"Title": name }
- liz.setInfo( infoType, infoLabels )
-
- v = "?name=%s&url=%s" % (urllib.quote_plus(name.encode('utf-8')),
urllib.quote_plus(url.encode('utf-8')), )
- action1 = 'XBMC.RunPlugin(plugin://plugin.audio.listenliveeu/?add%s%s)'
% (v, '\n')
- action2 =
'XBMC.RunPlugin(plugin://plugin.audio.listenliveeu/?remfav%s%s)' % (v, '\n')
- action3 =
'XBMC.RunPlugin(plugin://plugin.audio.listenliveeu/?removeall)'
-
- if mode==2:
- try:
- liz.addContextMenuItems([(__language__(30004),
action1), (__language__(30006), action3)])
- except:
- errorOK("addDirectoryItem()")
-
- elif mode==3:
- try:
- liz.addContextMenuItems([(__language__(30005),
action2), (__language__(30006), action3)])
- except:
- errorOK("addDirectoryItem()")
-
- u = "%s?url=%s&mode=%s&name=%s" % (sys.argv[0], urllib.quote_plus(url),
mode, urllib.quote_plus(name.encode('utf-8')), )
- log("%s" % u)
- return
xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]),url=u,listitem=liz,isFolder=isFolder)
+ liz=xbmcgui.ListItem(name, label2)
+ if not infoLabels:
+ infoLabels = {"Title": name }
+ liz.setInfo( infoType, infoLabels )
+
+ v = "?name=%s&url=%s" % (urllib.quote_plus(name.encode('utf-8')),
urllib.quote_plus(url.encode('utf-8')), )
+ action1 = 'XBMC.RunPlugin(plugin://plugin.audio.listenliveeu/?add%s%s)' %
(v, '\n')
+ action2 = 'XBMC.RunPlugin(plugin://plugin.audio.listenliveeu/?remfav%s%s)'
% (v, '\n')
+ action3 = 'XBMC.RunPlugin(plugin://plugin.audio.listenliveeu/?removeall)'
+
+ if mode==2:
+ try:
+ liz.addContextMenuItems([(__language__(30004), action1),
(__language__(30006), action3)])
+ except:
+ errorOK("addDirectoryItem()")
+
+ elif mode==3:
+ try:
+ liz.addContextMenuItems([(__language__(30005), action2),
(__language__(30006), action3)])
+ except:
+ errorOK("addDirectoryItem()")
+
+ u = "%s?url=%s&mode=%s&name=%s" % (sys.argv[0], urllib.quote_plus(url),
mode, urllib.quote_plus(name.encode('utf-8')), )
+ log("%s" % u)
+ return
xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]),url=u,listitem=liz,isFolder=isFolder)
######################################################################################################
-def playStream(url):
- try:
- log("> playStream() " + url)
- plyr = xbmc.Player()
- plyr.play(str(url))
- isPlaying = plyr.isPlaying()
- log("< playStream() isPlaying=%s" % isPlaying)
- return isPlaying
- except:
- errorOK("playStream()")
- return False
+def playStream(url, title=" "):
+ try:
+ log("> playStream() " + url)
+ log("> playStream() " + title)
+ plyr = xbmc.Player(xbmc.PLAYER_CORE_DVDPLAYER)
+ plyr.play( url )
+ isPlaying = plyr.isPlaying()
+ log("< playStream() isPlaying=%s" % isPlaying)
+ return isPlaying
+ except:
+ errorOK("playStream()")
+ return False
######################################################################################################
def deleteFile(fn):
- try:
- os.remove(fn)
- log("File deleted: " + fn)
- except: pass
-
+ try:
+ os.remove(fn)
+ log("File deleted: " + fn)
+ except: pass
+
#######################################################################################################################
# BEGIN !
#######################################################################################################################
try:
- __settings__ = xbmcaddon.Addon(id='plugin.audio.listenliveeu')
- __language__ = __settings__.getLocalizedString
+ __settings__ = xbmcaddon.Addon(id='plugin.audio.listenliveeu')
+ __language__ = __settings__.getLocalizedString
except:
- errorOK()
+ errorOK()
+
if not os.path.exists(DIR_SETTINGS):
- os.mkdir(DIR_SETTINGS)
+ os.mkdir(DIR_SETTINGS)
if not os.path.exists(FILE_FAVS):
- writeFavs()
+ writeFavs()
#######################################################################################################################
# get settings
@@ -429,30 +433,39 @@ log("URL: %s" % url)
log("Name: %s" % name)
if "?add" in sys.argv[ 2 ] :
- ok = addFav(sys.argv[ 2 ])
+ ok = addFav(sys.argv[ 2 ])
+ xbmcplugin.endOfDirectory(int(sys.argv[1]), ok)
elif "?remfav" in sys.argv[ 2 ] :
- ok = remFav(sys.argv[ 2 ])
+ ok = remFav(sys.argv[ 2 ])
+ xbmcplugin.endOfDirectory(int(sys.argv[1]), ok)
elif "?removeall" in sys.argv[ 2 ] :
- ok = remallFavs(url)
+ ok = remallFavs(url)
+ xbmcplugin.endOfDirectory(int(sys.argv[1]), ok)
if not "?add" in sys.argv[ 2 ] and not "?remfav" in sys.argv[ 2 ] and not
"?removeall" in sys.argv[ 2 ]:
- if not sys.argv[ 2 ] or not url:
- # new start - cleanup old files
- deleteFile(FILE_INDEX_PAGE)
-
- ok = getRootCats()
- elif url == "new":
- ok = getStreams(URL_NEW)
- elif url == "favorites":
- ok = getFavorites(FILE_FAVS)
- elif url == "country":
- ok = getCats(True)
- elif url == "genre":
- ok = getCats(False)
- elif mode==1:
- ok = getStreams(url)
- elif mode==2:
- ok = playStream(url)
- elif mode==3:
- ok = playStream(url)
- xbmcplugin.endOfDirectory(int(sys.argv[1]), ok)
\ No newline at end of file
+ if not sys.argv[ 2 ] or not url:
+ # new start - cleanup old files
+ deleteFile(FILE_INDEX_PAGE)
+
+ ok = getRootCats()
+ xbmcplugin.endOfDirectory(int(sys.argv[1]), ok)
+ elif url == "new":
+ ok = getStreams(URL_NEW)
+ xbmcplugin.endOfDirectory(int(sys.argv[1]), ok)
+ elif url == "favorites":
+ ok = getFavorites(FILE_FAVS)
+ xbmcplugin.endOfDirectory(int(sys.argv[1]), ok)
+ elif url == "country":
+ ok = getCats(True)
+ xbmcplugin.endOfDirectory(int(sys.argv[1]), ok)
+ elif url == "genre":
+ ok = getCats(False)
+ xbmcplugin.endOfDirectory(int(sys.argv[1]), ok)
+ elif mode==1:
+ ok = getStreams(url)
+ xbmcplugin.endOfDirectory(int(sys.argv[1]), ok)
+ elif mode==2:
+ ok = playStream(url, name)
+ elif mode==3:
+ ok = playStream(url, name)
+
\ No newline at end of file
-----------------------------------------------------------------------
Summary of changes:
plugin.audio.listenliveeu/addon.xml | 11 +-
plugin.audio.listenliveeu/changelog.txt | 18 +
plugin.audio.listenliveeu/default.py | 701 ++++++++++----------
.../resources/language/English/strings.po | 162 +++++
.../resources/language/English/strings.xml | 45 --
.../resources/language/Finnish/strings.po | 93 +++
.../resources/language/Finnish/strings.xml | 25 -
.../resources/language/German/strings.po | 105 +++
.../resources/language/German/strings.xml | 33 -
.../resources/language/Hungarian/strings.po | 93 +++
.../resources/language/Hungarian/strings.xml | 26 -
.../resources/language/Swedish/strings.po | 93 +++
.../resources/language/Swedish/strings.xml | 27 -
plugin.video.hdtrailers_net/addon.xml | 27 +-
plugin.video.hdtrailers_net/changelog.txt | 4 +
.../resources/language/Afrikaans/strings.xml | 14 +
.../resources/language/Albanian/strings.xml | 0
.../resources/language/Amharic/strings.xml | 11 +
.../resources/language/Arabic/strings.xml | 28 +
.../resources/language/Basque/strings.xml | 14 +
.../resources/language/Belarusian/strings.xml | 14 +
.../resources/language/Bosnian/strings.xml | 8 +
.../resources/language/Bulgarian/strings.xml | 14 +
.../resources/language/Catalan/strings.xml | 11 +
.../language/Chinese (Simple)/strings.xml | 14 +
.../language/Chinese (Traditional)/strings.xml | 14 +
.../resources/language/Croatian/strings.xml | 14 +
.../resources/language/Czech/strings.xml | 14 +
.../resources/language/Danish/strings.xml | 28 +
.../resources/language/Dutch/strings.xml | 21 +
.../resources/language/English/strings.xml | 4 +
.../resources/language/Esperanto/strings.xml | 9 +
.../resources/language/Estonian/strings.xml | 13 +
.../resources/language/Finnish/strings.xml | 14 +
.../resources/language/French/strings.xml | 14 +
.../resources/language/Galician/strings.xml | 14 +
.../resources/language/German/strings.xml | 4 +
.../resources/language/Greek/strings.xml | 28 +
.../language/Haitian (Haitian Creole)/strings.xml | 9 +
.../resources/language/Hebrew/strings.xml | 14 +
.../language/Hindi (Devanagiri)/strings.xml | 9 +
.../resources/language/Hungarian/strings.xml | 28 +
.../resources/language/Icelandic/strings.xml | 12 +
.../resources/language/Indonesian/strings.xml | 9 +
.../resources/language/Italian/strings.xml | 28 +
.../resources/language/Japanese/strings.xml | 14 +
.../resources/language/Korean/strings.xml | 28 +
.../resources/language/Lithuanian/strings.xml | 14 +
.../resources/language/Macedonian/strings.xml | 14 +
.../resources/language/Malayalam/strings.xml | 8 +
.../resources/language/Maltese/strings.xml | 8 +
.../resources/language/Norwegian/strings.xml | 28 +
.../resources/language/Persian/strings.xml | 11 +
.../resources/language/Polish/strings.xml | 28 +
.../language/Portuguese (Brazil)/strings.xml | 28 +
.../resources/language/Portuguese/strings.xml | 28 +
.../resources/language/Romanian/strings.xml | 14 +
.../resources/language/Russian/strings.xml | 14 +
.../language/Serbian (Cyrillic)/strings.xml | 11 +
.../resources/language/Serbian/strings.xml | 11 +
.../resources/language/Slovak/strings.xml | 28 +
.../resources/language/Slovenian/strings.xml | 14 +
.../language/Spanish (Argentina)/strings.xml | 14 +
.../language/Spanish (Mexico)/strings.xml | 14 +
.../resources/language/Spanish/strings.xml | 14 +
.../resources/language/Swedish/strings.xml | 28 +
.../resources/language/Thai/strings.xml | 14 +
.../resources/language/Turkish/strings.xml | 13 +
.../resources/language/Ukrainian/strings.xml | 11 +
.../resources/language/Vietnamese/strings.xml | 0
.../resources/lib/scraper.py | 2 +-
71 files changed, 1795 insertions(+), 507 deletions(-)
create mode 100644
plugin.audio.listenliveeu/resources/language/English/strings.po
delete mode 100644
plugin.audio.listenliveeu/resources/language/English/strings.xml
create mode 100644
plugin.audio.listenliveeu/resources/language/Finnish/strings.po
delete mode 100644
plugin.audio.listenliveeu/resources/language/Finnish/strings.xml
create mode 100644
plugin.audio.listenliveeu/resources/language/German/strings.po
delete mode 100644
plugin.audio.listenliveeu/resources/language/German/strings.xml
create mode 100644
plugin.audio.listenliveeu/resources/language/Hungarian/strings.po
delete mode 100644
plugin.audio.listenliveeu/resources/language/Hungarian/strings.xml
create mode 100644
plugin.audio.listenliveeu/resources/language/Swedish/strings.po
delete mode 100644
plugin.audio.listenliveeu/resources/language/Swedish/strings.xml
create mode 100644
plugin.video.hdtrailers_net/resources/language/Afrikaans/strings.xml
copy {plugin.video.nasa =>
plugin.video.hdtrailers_net}/resources/language/Albanian/strings.xml (100%)
create mode 100644
plugin.video.hdtrailers_net/resources/language/Amharic/strings.xml
create mode 100644
plugin.video.hdtrailers_net/resources/language/Arabic/strings.xml
create mode 100644
plugin.video.hdtrailers_net/resources/language/Basque/strings.xml
create mode 100644
plugin.video.hdtrailers_net/resources/language/Belarusian/strings.xml
create mode 100644
plugin.video.hdtrailers_net/resources/language/Bosnian/strings.xml
create mode 100644
plugin.video.hdtrailers_net/resources/language/Bulgarian/strings.xml
create mode 100644
plugin.video.hdtrailers_net/resources/language/Catalan/strings.xml
create mode 100644 plugin.video.hdtrailers_net/resources/language/Chinese
(Simple)/strings.xml
create mode 100644 plugin.video.hdtrailers_net/resources/language/Chinese
(Traditional)/strings.xml
create mode 100644
plugin.video.hdtrailers_net/resources/language/Croatian/strings.xml
create mode 100644
plugin.video.hdtrailers_net/resources/language/Czech/strings.xml
create mode 100644
plugin.video.hdtrailers_net/resources/language/Danish/strings.xml
create mode 100644
plugin.video.hdtrailers_net/resources/language/Dutch/strings.xml
create mode 100644
plugin.video.hdtrailers_net/resources/language/Esperanto/strings.xml
create mode 100644
plugin.video.hdtrailers_net/resources/language/Estonian/strings.xml
create mode 100644
plugin.video.hdtrailers_net/resources/language/Finnish/strings.xml
create mode 100644
plugin.video.hdtrailers_net/resources/language/French/strings.xml
create mode 100644
plugin.video.hdtrailers_net/resources/language/Galician/strings.xml
create mode 100644
plugin.video.hdtrailers_net/resources/language/Greek/strings.xml
create mode 100644 plugin.video.hdtrailers_net/resources/language/Haitian
(Haitian Creole)/strings.xml
create mode 100644
plugin.video.hdtrailers_net/resources/language/Hebrew/strings.xml
create mode 100644 plugin.video.hdtrailers_net/resources/language/Hindi
(Devanagiri)/strings.xml
create mode 100644
plugin.video.hdtrailers_net/resources/language/Hungarian/strings.xml
create mode 100644
plugin.video.hdtrailers_net/resources/language/Icelandic/strings.xml
create mode 100644
plugin.video.hdtrailers_net/resources/language/Indonesian/strings.xml
create mode 100644
plugin.video.hdtrailers_net/resources/language/Italian/strings.xml
create mode 100644
plugin.video.hdtrailers_net/resources/language/Japanese/strings.xml
create mode 100644
plugin.video.hdtrailers_net/resources/language/Korean/strings.xml
create mode 100644
plugin.video.hdtrailers_net/resources/language/Lithuanian/strings.xml
create mode 100644
plugin.video.hdtrailers_net/resources/language/Macedonian/strings.xml
create mode 100644
plugin.video.hdtrailers_net/resources/language/Malayalam/strings.xml
create mode 100644
plugin.video.hdtrailers_net/resources/language/Maltese/strings.xml
create mode 100644
plugin.video.hdtrailers_net/resources/language/Norwegian/strings.xml
create mode 100644
plugin.video.hdtrailers_net/resources/language/Persian/strings.xml
create mode 100644
plugin.video.hdtrailers_net/resources/language/Polish/strings.xml
create mode 100644 plugin.video.hdtrailers_net/resources/language/Portuguese
(Brazil)/strings.xml
create mode 100644
plugin.video.hdtrailers_net/resources/language/Portuguese/strings.xml
create mode 100644
plugin.video.hdtrailers_net/resources/language/Romanian/strings.xml
create mode 100644
plugin.video.hdtrailers_net/resources/language/Russian/strings.xml
create mode 100644 plugin.video.hdtrailers_net/resources/language/Serbian
(Cyrillic)/strings.xml
create mode 100644
plugin.video.hdtrailers_net/resources/language/Serbian/strings.xml
create mode 100644
plugin.video.hdtrailers_net/resources/language/Slovak/strings.xml
create mode 100644
plugin.video.hdtrailers_net/resources/language/Slovenian/strings.xml
create mode 100644 plugin.video.hdtrailers_net/resources/language/Spanish
(Argentina)/strings.xml
create mode 100644 plugin.video.hdtrailers_net/resources/language/Spanish
(Mexico)/strings.xml
create mode 100644
plugin.video.hdtrailers_net/resources/language/Spanish/strings.xml
create mode 100644
plugin.video.hdtrailers_net/resources/language/Swedish/strings.xml
create mode 100644
plugin.video.hdtrailers_net/resources/language/Thai/strings.xml
create mode 100644
plugin.video.hdtrailers_net/resources/language/Turkish/strings.xml
create mode 100644
plugin.video.hdtrailers_net/resources/language/Ukrainian/strings.xml
copy {plugin.video.nasa =>
plugin.video.hdtrailers_net}/resources/language/Vietnamese/strings.xml (100%)
hooks/post-receive
--
Plugins
------------------------------------------------------------------------------
Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS,
MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current
with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft
MVPs and experts. SALE $99.99 this month only -- learn more at:
http://p.sf.net/sfu/learnmore_122912
_______________________________________________
Xbmc-addons mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xbmc-addons