The branch, dharma-pre has been updated
via 5b4d21de2de802e27cfe94791a43531112ae1a6c (commit)
from a71b01e57641a61267f1dfa1b0a28911cde09d7d (commit)
- Log -----------------------------------------------------------------
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/plugins;a=commit;h=5b4d21de2de802e27cfe94791a43531112ae1a6c
commit 5b4d21de2de802e27cfe94791a43531112ae1a6c
Author: Zeljko Ametovic <[email protected]>
Date: Wed Nov 3 17:48:12 2010 +0400
[plugin.audio.shoutcast] -v 1.0.9
- added: search option
- added: sort by listeners, it will only work on trunk > r35146
diff --git a/plugin.audio.shoutcast/addon.xml b/plugin.audio.shoutcast/addon.xml
index 5944b22..b647398 100644
--- a/plugin.audio.shoutcast/addon.xml
+++ b/plugin.audio.shoutcast/addon.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="plugin.audio.shoutcast"
name="Shoutcast"
- version="1.0.7"
+ version="1.0.9"
provider-name="Team XBMC">
<requires>
<import addon="xbmc.python" version="1.0"/>
diff --git a/plugin.audio.shoutcast/default.py
b/plugin.audio.shoutcast/default.py
index c6c1148..60b6020 100644
--- a/plugin.audio.shoutcast/default.py
+++ b/plugin.audio.shoutcast/default.py
@@ -19,14 +19,22 @@
# *
# */
-import urllib2,string,xbmc,xbmcgui,xbmcplugin
+import urllib2,string,xbmc,xbmcgui,xbmcplugin, xbmcaddon
from xml.dom import minidom
from urllib import quote_plus
import unicodedata
+__XBMC_Revision__ = xbmc.getInfoLabel('System.BuildVersion')
+__settings__ = xbmcaddon.Addon(id='plugin.audio.shoutcast')
+__language__ = __settings__.getLocalizedString
+__version__ = __settings__.getAddonInfo('version')
+__cwd__ = __settings__.getAddonInfo('path')
+__addonname__ = "Shoutcast"
+__addonid__ = "plugin.audio.shoutcast"
+__author__ = "Team XBMC"
+
BASE_URL = 'http://yp.shoutcast.com/sbin/newxml.phtml'
-__XBMC_Revision__ = xbmc.getInfoLabel('System.BuildVersion')
def INDEX():
req = urllib2.Request(BASE_URL)
@@ -39,6 +47,7 @@ def INDEX():
def RESOLVE(id):
url = "%s?genre=%s" % (BASE_URL, quote_plus(id),)
+ log("RESOLVE URL: %s" % url )
req3 = urllib2.Request(url)
response = urllib2.urlopen(req3)
link = response.read()
@@ -47,20 +56,39 @@ def RESOLVE(id):
for stat in node.getElementsByTagName('station'):
name =
unicodedata.normalize('NFKD',stat.attributes["name"].value).encode('ascii','ignore')
url = "%s?play=%s&tunein=%s" % (sys.argv[0],
stat.attributes["id"].value,node.getElementsByTagName('tunein')[0].attributes["base"].value)
- addLink(name,url,stat.attributes["br"].value)
+ addLink(name,url,stat.attributes["br"].value, stat.attributes["lc"].value)
+
+def search():
+ kb = xbmc.Keyboard("", __language__(30092), False)
+ kb.doModal()
+ if (kb.isConfirmed() and len(kb.getText()) > 2):
+ url = "%s?search=%s" % (BASE_URL, quote_plus(kb.getText()),)
+ log("SEARCH URL: %s" % url )
+ req3 = urllib2.Request(url)
+ response = urllib2.urlopen(req3)
+ link = response.read()
+ response.close()
+ node = minidom.parseString(link).firstChild
+ for stat in node.getElementsByTagName('station'):
+ name =
unicodedata.normalize('NFKD',stat.attributes["name"].value).encode('ascii','ignore')
+ url = "%s?play=%s&tunein=%s" % (sys.argv[0],
stat.attributes["id"].value,node.getElementsByTagName('tunein')[0].attributes["base"].value)
+ addLink(name,url,stat.attributes["br"].value,
stat.attributes["lc"].value)
def PLAY(st_id, tunein):
if __XBMC_Revision__.startswith("10.0"):
url = "shout://yp.shoutcast.com%s?id=%s" %(tunein,st_id,)
else:
url = "http://yp.shoutcast.com%s?id=%s" %(tunein,st_id,)
- print "#### plugin.audio.shoutcast #### URL: %s" % url
+ log("PLAY URL: %s" % url )
xbmc.Player().play(url)
-def addLink(name,url,size):
+def addLink(name,url,size,rating):
ok=True
liz=xbmcgui.ListItem(name, iconImage="DefaultVideo.png", thumbnailImage="")
- liz.setInfo( type="Video", infoLabels={ "Title": name ,"Size": int(size)} )
+ if __XBMC_Revision__.startswith("10.0"):
+ liz.setInfo( type="Music", infoLabels={ "Title": name ,"Size": int(size)} )
+ else:
+ liz.setInfo( type="Music", infoLabels={ "Title": name ,"Size": int(size),
"Listeners": int(rating)} )
liz.setProperty("IsPlayable","false");
ok=xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]),url=url,listitem=liz,isFolder=False)
return ok
@@ -88,32 +116,61 @@ def addDir(name):
ok=xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]),url=u,listitem=liz,isFolder=True)
return ok
+def log(msg):
+ xbmc.output("### [%s] - %s" % (__addonname__,msg,),level=xbmc.LOGDEBUG )
+
params=get_params()
try:
id = params["id"]
except:
id = "0";
- pass
+try:
+ initial = params["initial"]
+except:
+ initial = "0";
try:
play = params["play"]
except:
play = "0";
- pass
+
-iid = len(id);
+iid = len(id)
iplay = len(play)
+iinitial = len(initial)
if iid > 1 :
RESOLVE(id)
- xbmcplugin.addSortMethod( handle=int( sys.argv[ 1 ] ),
sortMethod=xbmcplugin.SORT_METHOD_LABEL, label2Mask="%X" )
xbmcplugin.addSortMethod( handle=int( sys.argv[ 1 ] ),
sortMethod=xbmcplugin.SORT_METHOD_BITRATE, label2Mask="%X" )
+ xbmcplugin.addSortMethod( handle=int( sys.argv[ 1 ] ),
sortMethod=xbmcplugin.SORT_METHOD_LABEL, label2Mask="%X" )
+ try:
+ xbmcplugin.addSortMethod( handle=int( sys.argv[ 1 ] ),
sortMethod=xbmcplugin.SORT_METHOD_LISTENERS )
+ except: pass
xbmcplugin.endOfDirectory(int(sys.argv[1]))
-else:
- if iplay > 1:
- PLAY(play,params["tunein"] )
- else:
+
+elif iinitial > 1:
+ if initial == "search":
+ search()
+ xbmcplugin.addSortMethod( handle=int( sys.argv[ 1 ] ),
sortMethod=xbmcplugin.SORT_METHOD_BITRATE, label2Mask="%X" )
+ xbmcplugin.addSortMethod( handle=int( sys.argv[ 1 ] ),
sortMethod=xbmcplugin.SORT_METHOD_LABEL, label2Mask="%X" )
+ try:
+ xbmcplugin.addSortMethod( handle=int( sys.argv[ 1 ] ),
sortMethod=xbmcplugin.SORT_METHOD_LISTENERS )
+ except: pass
+ xbmcplugin.endOfDirectory(int(sys.argv[1]))
+ else:
INDEX()
+ xbmcplugin.addSortMethod( handle=int( sys.argv[ 1 ] ),
sortMethod=xbmcplugin.SORT_METHOD_BITRATE )
xbmcplugin.addSortMethod( handle=int( sys.argv[ 1 ] ),
sortMethod=xbmcplugin.SORT_METHOD_LABEL )
- xbmcplugin.endOfDirectory(int(sys.argv[1]))
-
-
+ try:
+ xbmcplugin.addSortMethod( handle=int( sys.argv[ 1 ] ),
sortMethod=xbmcplugin.SORT_METHOD_LISTENERS )
+ except: pass
+ xbmcplugin.endOfDirectory(int(sys.argv[1]))
+elif iplay > 1:
+ PLAY(play,params["tunein"] )
+else:
+ u = "%s?initial=search" % (sys.argv[0],)
+ liz=xbmcgui.ListItem(__language__(30091), iconImage="DefaultFolder.png",
thumbnailImage="")
+
ok=xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]),url=u,listitem=liz,isFolder=True)
+ u = "%s?initial=list" % (sys.argv[0],)
+ liz=xbmcgui.ListItem(__language__(30090), iconImage="DefaultFolder.png",
thumbnailImage="")
+
ok=xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]),url=u,listitem=liz,isFolder=True)
+ xbmcplugin.endOfDirectory(int(sys.argv[1]))
-----------------------------------------------------------------------
Summary of changes:
plugin.audio.shoutcast/addon.xml | 2 +-
plugin.audio.shoutcast/default.py | 91 ++++++++++++++++----
.../resources/language/English/strings.xml | 7 ++
3 files changed, 82 insertions(+), 18 deletions(-)
create mode 100644
plugin.audio.shoutcast/resources/language/English/strings.xml
hooks/post-receive
--
Plugins
------------------------------------------------------------------------------
Achieve Improved Network Security with IP and DNS Reputation.
Defend against bad network traffic, including botnets, malware,
phishing sites, and compromised hosts - saving your company time,
money, and embarrassment. Learn More!
http://p.sf.net/sfu/hpdev2dev-nov
_______________________________________________
Xbmc-addons mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xbmc-addons