The branch, dharma has been updated
via 6d936002077078d06978590be51735ba836c0e97 (commit)
from 6d41aad9520f199a715d173c504ad3a4ca61e913 (commit)
- Log -----------------------------------------------------------------
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/plugins;a=commit;h=6d936002077078d06978590be51735ba836c0e97
commit 6d936002077078d06978590be51735ba836c0e97
Author: spiff <[email protected]>
Date: Tue Nov 22 09:55:04 2011 +0100
[plugin.audio.internet.archive] updated to version 0.1.0
diff --git a/plugin.audio.internet.archive/addon.xml
b/plugin.audio.internet.archive/addon.xml
index 249ff02..1150bf0 100644
--- a/plugin.audio.internet.archive/addon.xml
+++ b/plugin.audio.internet.archive/addon.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="plugin.audio.internet.archive"
name="Internet Archive"
- version="0.0.4"
+ version="0.1.0"
provider-name="divingmule">
<requires>
<import addon="xbmc.python" version="1.0"/>
@@ -9,11 +9,11 @@
</requires>
<extension point="xbmc.python.pluginsource"
library="default.py">
- <provides>audio</provides>
+ <provides>audio video</provides>
</extension>
<extension point="xbmc.addon.metadata">
- <summary>Live Music, Audio Books, and more.</summary>
- <description>The Internet Archive is a 501(c)(3) non-profit that was
founded to build an Internet library. Its purposes include offering permanent
access for researchers, historians, scholars, people with disabilities, and the
general public to historical collections that exist in digital
format.</description>
+ <summary>Internet Archive - archive.org</summary>
+ <description>This add-on covers both the audio and video sections of The
Internet Archive. The Internet Archive is a 501(c)(3) non-profit that was
founded to build an Internet library. Its purposes include offering permanent
access for researchers, historians, scholars, people with disabilities, and the
general public to historical collections that exist in digital
format.</description>
<platform>all</platform>
</extension>
</addon>
diff --git a/plugin.audio.internet.archive/default.py
b/plugin.audio.internet.archive/default.py
index 836f694..69fefc7 100644
--- a/plugin.audio.internet.archive/default.py
+++ b/plugin.audio.internet.archive/default.py
@@ -11,8 +11,12 @@ __settings__ =
xbmcaddon.Addon(id='plugin.audio.internet.archive')
__language__ = __settings__.getLocalizedString
home = __settings__.getAddonInfo('path')
icon = xbmc.translatePath( os.path.join( home, 'icon.png' ) )
+fanart = xbmc.translatePath( os.path.join( home, 'fanart.jpg' ) )
sort = __settings__.getSetting('sort_by')
-if sort==__language__(30009):
+if sort=="":
+ sort = __language__(30011)
+ set = 'downloads'
+elif sort==__language__(30009):
set = 'publicdate'
elif sort==__language__(30010):
set = 'date'
@@ -20,8 +24,6 @@ elif sort==__language__(30011):
set = 'downloads'
elif sort==__language__(30012):
set = 'avg_rating%3B-num_reviews'
-else:
- set = 'publicdate'
def getResponse(url):
@@ -33,214 +35,351 @@ def getResponse(url):
response.close()
return link
except urllib2.URLError, e:
- errorStr = str(e.read())
print 'We failed to open "%s".' % url
if hasattr(e, 'reason'):
print 'We failed to reach a server.'
print 'Reason: ', e.reason
if hasattr(e, 'code'):
print 'We failed with error code - %s.' % e.code
-
xbmc.executebuiltin("XBMC.Notification("+__language__(30028)+","+__language__(30029)+str(e.code)+",5000,"+icon+")")
- return
+
xbmc.executebuiltin("XBMC.Notification("+__language__(30000)+","+__language__(30001)+str(e.code)+",5000,"+icon+")")
-def getCategories():
- addDir(__language__(30005),'getLiveArchive',4,icon)
- addDir(__language__(30001),'getAudioBooks',5,icon)
- addDir(__language__(30024),'getRadioPrograms',9,icon)
- addDir(__language__(30006),'getMusicArts',10,icon)
-
addDir(__language__(30025),'http://www.archive.org/search.php?query=collection%3AGratefulDead&sort=-'+set,1,icon)
-
addDir(__language__(30002),'http://www.archive.org/search.php?query=collection%3Aopensource_audio&sort=-'+set,1,icon)
-
addDir(__language__(30004),'http://www.archive.org/search.php?query=collection%3Aaudio_tech&sort=-'+set,1,icon)
-
addDir(__language__(30013),'http://www.archive.org/search.php?query=collection%3Anetlabels&sort=-'+set,1,icon)
-
addDir(__language__(30014),'http://www.archive.org/search.php?query=collection%3Aaudio_news&sort=-'+set,1,icon)
-
addDir(__language__(30015),'http://www.archive.org/search.php?query=collection%3Aaudio_foreign&sort=-'+set,1,icon)
-
addDir(__language__(30017),'http://www.archive.org/search.php?query=collection%3Aaudio_religion&sort=-'+set,1,icon)
-
-
-def getLiveArchive():
-
addDir(__language__(30020),'etree',8,xbmc.translatePath(os.path.join(home,
'resources', 'search.png')))
-
addDir(__language__(30000),'getArtist',3,xbmc.translatePath(os.path.join(home,
'resources', 'search.png')))
- url =
'http://www.archive.org/search.php?query=%28%28collection%3Aetree%20OR%20mediatype%3Aetree%29%20AND%20NOT%20collection%3AGratefulDead%29%20AND%20-mediatype%3Acollection&sort=-'+set
- link = getResponse(url)
- match = re.compile('<a class="titleLink"
href="(.+?)">(.+?)</a>').findall(link)
- for url,name in match:
- addDir(name,'http://www.archive.org'+url,2,icon)
- page=re.compile('</a> <a
href="(.+?)">Next</a>').findall(link)[0].replace('&','&')
-
addDir(__language__(30016),'http://www.archive.org'+page,1,xbmc.translatePath(os.path.join(home,
'resources', 'next.png')))
-
+def getCategories(url, iconimage):
+ soup = BeautifulSoup(getResponse(url),
convertEntities=BeautifulSoup.HTML_ENTITIES)
+ try:
+ thumb = soup('td', attrs={'style' : "width:80px; height:72px;
vertical-align:middle; text-align:right"})[0].img['src']
+ if thumb.startswith('/'):
+ thumb = 'http://www.archive.org'+thumb
+ if 'animationandcartoons/animation-header.gif' in thumb:
+ thumb = iconimage
+ if 'newsandpublicaffairs/news-header.gif' in thumb:
+ thumb = iconimage
+ if 'artsandmusicvideos/artsmusic-header.gif' in thumb:
+ thumb = iconimage
+ if 'vlogs/vlogs-header.gif' in thumb:
+ thumb = iconimage
+ if 'youth_media/flip-youthmedia-icon.gif' in thumb:
+ thumb = iconimage
+ if 'gamevideos/videogames-header.gif' in thumb:
+ thumb = iconimage
+ if 'ephemera/flip-ephemera-header.gif' in thumb:
+ thumb = iconimage
+ except:
+ thumb = iconimage
+ try:
+ try:
+ spotlight_url = soup('div', attrs={'id' :
"spotlight"})[0]('a')[1]['href']
+ except:
+ try:
+ spotlight_url = soup('div', attrs={'id' :
"spotlight"})[0]('a')[0]['href']
+ except:
+ print '#spotlight_url not found#'
+ raise
-def getAudioBooks():
-
addDir(__language__(30020),'audio_bookspoetry',8,xbmc.translatePath(os.path.join(home,
'resources', 'search.png')))
-
addDir(__language__(30007),'audio_bookspoetry',6,xbmc.translatePath(os.path.join(home,
'resources', 'search.png')))
-
addDir(__language__(30018),'http://www.archive.org/details/audio_bookspoetry',7,icon)
- getSubCategories('http://www.archive.org/details/audio_bookspoetry')
-
url='http://www.archive.org/search.php?query=collection%3Aaudio_bookspoetry&sort=-'+set
- getShows(url)
+ try:
+ spotlight_name = soup('div', attrs={'id' :
"spotlight"})[0]('a')[1].string.encode('utf-8')
+ except:
+ try:
+ spotlight_name = soup('div', attrs={'id' :
"spotlight"})[0]('a')[0].string.encode('utf-8')
+ except:
+ spotlight_name = 'Unknown'
+ try:
+ spotlight_thumb = soup('div', attrs={'id' :
"spotlight"})[0].img['src']
+ except:
+ spotlight_thumb = iconimage
-def getRadioPrograms():
-
addDir(__language__(30020),'radioprograms',8,xbmc.translatePath(os.path.join(home,
'resources', 'search.png')))
-
addDir(__language__(30007),'radioprograms',6,xbmc.translatePath(os.path.join(home,
'resources', 'search.png')))
- getSubCategories('http://www.archive.org/details/radioprograms')
-
url='http://www.archive.org/search.php?query=collection%3Aradioprograms&sort=-'+set
- getShows(url)
+ try:
+ spotlight_desc = soup('div', attrs={'id' :
"spotlight"})[0].br.next.string.encode('utf-8')
+ except:
+ spotlight_desc = 'no desc'
+ addDir(coloring( 'Spotlight Item',"cyan",'Spotlight Item' )+' -
'+spotlight_name, 'http://www.archive.org'+spotlight_url, 3, spotlight_desc,
spotlight_thumb.split('?')[0])
+ except:
+ pass
-def getMusicArts():
-
addDir(__language__(30020),'audio_music',8,xbmc.translatePath(os.path.join(home,
'resources', 'search.png')))
-
addDir(__language__(30007),'audio_music',6,xbmc.translatePath(os.path.join(home,
'resources', 'search.png')))
- getSubCategories('http://www.archive.org/details/audio_music')
-
url='http://www.archive.org/search.php?query=collection%3Aaudio_music&sort=-'+set
- getShows(url)
+ items = soup('div', attrs={'id' : "description"})[0]('a')
+ for i in items:
+ name = i.string
+ if name == 'All items (most recently added first)':
+ addDir(name,'http://www.archive.org'+i['href'],2,'',thumb)
+ name = name.replace('most recently added first','By Addon
Setting: '+sort)
+ href = i['href'].replace('publicdate',set)
+ addDir(name,'http://www.archive.org'+href,2,'',thumb)
+ if name == 'Browse Collection':
+ addDir(name+' by average rating / number of
reviews','http://www.archive.org'+i['href'],2,'',thumb)
+ if name == 'Browse by Subject / Keywords':
+ addDir(name,'http://www.archive.org'+i['href'],7,'',thumb)
+ if name == 'Browse by Language':
+ addDir(name,'http://www.archive.org'+i['href'],8,'',thumb)
+ if name == 'Browse All Artists with Recordings in the Live Music
Archive':
+ addDir(name,i['href'],11,'',thumb)
+ if name == 'Grateful Dead':
+ addDir(name,i['href'],1,'',thumb)
+
+ if soup('div', attrs={'id' : "browseauthor"}):
+ addDir(__language__(30002),url,4,'',thumb)
+ if soup('div', attrs={'id' : "browsetitle"}):
+ addDir(__language__(30003),url,5,'',thumb)
+
+ addDir(__language__(30004),url.split('/')[-1],6,'',thumb)
+ try:
+ categories = soup('div', attrs={'id' : 'subcollections'})[0]('tr')
+ for i in categories:
+ if len(i.nobr.string) > 1:
+ try:
+ name = i('a')[1].string.encode('utf-8')
+ except:
+ try:
+ name = i('a')[0].string.encode('utf-8')
+ except:
+ name = 'Unknown'
+ url = 'http://www.archive.org'+i.a['href']
+ try:
+ thumb = 'http://www.archive.org'+i.img['src']
+ except:
+ pass
+ desc = i.br.next.encode('utf-8', 'ignore')
+ addDir(name+' ('+i.nobr.string+')',url,1,desc,thumb)
+ except:
+ print 'No Categories'
+
+
+def getShowList(url, iconimage):
+ if 'gutenberg' in url:
+ href = url.split('sort=')[0]+'3%20AND%20mediatype%3Aaudio'
+ if set in url:
+ url = href+'sort=-'+set
+ else:
+ url = href
+ link = getResponse(url)
+ try:
+ soup = BeautifulSoup(link,
convertEntities=BeautifulSoup.HTML_ENTITIES)
+ except:
+ print 'SOUP ERROR'
+ soup = BeautifulSoup(link)
-def getSubCategories(url):
- soup = BeautifulSoup(getResponse(url))
- items = soup.findAll('div', attrs={'style' : "padding:10px;"})
+ items = soup('table', attrs={'class' : "resultsTable"})[0]('tr')
for i in items:
- name = i.a.string
- url = i.a['href']
- desc = i.br.next
- url = url.replace('/details/','/search.php?query=collection%3A')
- if name.startswith('Gutenberg'):
- url =
'/search.php?query=%28format%3Amp3%20AND%20collection%3Agutenberg%29%20AND%20-mediatype%3Acollection'
- addDir(name+' ) '+desc.encode('ascii',
'ignore'),'http://www.archive.org'+url+'&sort=-'+set,1,icon)
-
-
-# get by artist listings
-def getArtist():
-
url='http://www.archive.org/browse.php?collection=etree&field=%2Fmetadata%2Fcreator'
- soup = BeautifulSoup(getResponse(url))
- match=re.compile('href="(.+?)">(.+?)</a>, <a
href=".+?">(.+?)</a>').findall(str(soup.find('tr', attrs={'valign' :
'top'}).findAll('a')))
- for url,name,shows in match:
- url=url.replace('/details/','/search.php?query=collection%3A')
- addDir(name+' |
'+shows,'http://www.archive.org'+url+'&sort=-'+set,1,icon)
-
-
-# get the directories
-def getShows(url):
- link = getResponse(url)
- match=re.compile('<a class="titleLink"
href="(.+?)">(.+?)</a>.+?<br/>(.+?)</td>').findall(link)
- for url,name,desc in match:
- name=name.replace('<span
class="searchTerm">','').replace('</span>','').replace('&','&')
- addDir(name,'http://www.archive.org'+url,2,icon)
+ try:
+ href = i.a['href']
+ except:
+ print 'No URL'
+ pass
+ try:
+ if len(i.a.contents)>1:
+ name_list=[]
+ for n in i.a.contents:
+ names = n.string
+ name_list.append(names)
+ try:
+ name = "".join(name_list)
+ except:
+ name = name_list[0]
+ else:
+ try:
+ name = i('a')[0].string
+ except:
+ raise
+ except:
+ name = 'Unknown'
+
+ try:
+ desc = i.br.next
+ except:
+ desc = ''
+ try:
+ if 'class="searchTerm"' in str(desc):
+ desc = i.span.next.next
+ if 'Keywords:</span>' in str(desc):
+ desc = "No Description"
+ except:
+ desc = 'Description Error'
+ try:
+ addDir(name,'http://www.archive.org'+href,3,desc,iconimage)
+ except:
+ try:
+ desc = desc.encode('utf-8', 'ignore')
+ except:
+ desc = 'Description Error 2'
+ try:
+ addDir(name.encode('utf-8',
'ignore'),'http://www.archive.org'+href,3,desc,iconimage)
+ except:
+ print 'There was an error adding show Directory'
+ try:
+ print 'NAME: '+name
+ except:
+ print 'NAME ERROR'
+ pass
+ try:
+ print 'URL: '+href
+ except:
+ print 'URL ERROR'
+ pass
+ try:
+ print 'DESC: '+desc
+ except:
+ print 'DESC ERROR'
+ pass
+
try:
- page=re.compile('</a> <a
href="(.+?)">Next</a>').findall(link)[0].replace('&','&')
-
addDir(__language__(30016),'http://www.archive.org'+page,1,xbmc.translatePath(os.path.join(home,
'resources', 'next.png')))
+ page = re.compile('</a> <a
href="(.+?)">Next</a>').findall(link)[0]
+ url = 'http://www.archive.org'+page.replace('&','&')
+ addDir(__language__(30007),url,2,'',iconimage)
except:
pass
-# gets names and urls
-def playMusic(title, url):
+def getMedia(url, desc, iconimage):
link = getResponse(url)
+ soup = BeautifulSoup(link, convertEntities=BeautifulSoup.HTML_ENTITIES)
+
try:
- thumb = re.compile('<img title="\[item image\]" alt="\[item
image\]" style="max-height:152px; max-width:165px; margin-bottom:0.5em;
border:0px;" id="thumbnail" src="(.+?)"/>').findall(link)[0]
+ thumb = soup('div', attrs={'id' : "col1"})[0]('img')[0]['src']
+ if thumb == '/images/glogo.png?cnt=0':
+ raise
except:
try:
- thumb = re.compile('<a href=".+?"><img title=".+?" alt=".+?"
id=".+?" src="(.+?)"/></a>').findall(link)[0]
+ thumb = 'http://www.archive.org'+soup('table', attrs={'id' :
"ff4"})[0]('a')[0]['href']
+ if not thumb.find('.jpg'):
+ if not thumb.find('.gif'):
+ thumb = 'http://www.archive.org'+soup('table',
attrs={'id' : "ff4"})[0]('a')[1]['href']
+ if not thumb.find('.jpg'):
+ if not thumb.find('.gif'):
+ raise
except:
- thumb = icon
- if thumb.startswith('/'):
- thumb = 'http://www.archive.org'+thumb
- try:
- soupA = BeautifulSoup(link,
convertEntities=BeautifulSoup.HTML_ENTITIES)
- downloads = soupA('p', attrs={'id' : "dl"})[0]('a')
- for i in downloads:
- type = i.string
- href = i['href']
try:
- size = i.fetchPrevious('span')[0].string
- if 'NEW' in size:
- size = ''
+ thumb = re.compile('<a href=".+?"><img title=".+?"
alt=".+?" id=".+?" src="(.+?)?cnt=0"/></a>').findall(link)[0]
except:
- size = ''
- if href[-3:] == 'zip':
- # add Download listitem
-
u=sys.argv[0]+"?url="+urllib.quote_plus('http://www.archive.org'+href)+"&mode=11&name="+urllib.quote_plus(__language__(30026)+type+'
'+size)+"&title="+urllib.quote_plus(title.replace(' ','_'))
- ok=True
- liz=xbmcgui.ListItem(__language__(30026)+type+' '+size,
iconImage="DefaultFolder.png",
thumbnailImage=xbmc.translatePath(os.path.join(home, 'resources',
'download.png')))
-
ok=xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]),url=u,listitem=liz,isFolder=False)
- except:
- pass
+ try:
+ thumb = re.compile('<img id="thumbnail" src="(.+?)"
style=".+?" alt=".+?" title=".+?">').findall(link)[0]
+ except:
+ thumb = iconimage
+ if thumb.startswith('/'):
+ thumb = 'http://www.archive.org'+thumb
try:
match = re.compile("IAD.mrss = '(.+?)'").findall(link)[0]
- soup = BeautifulStoneSoup(match,
convertEntities=BeautifulStoneSoup.XML_ENTITIES)
- if len(soup('item')) > 1:
- #add Play All listitem
-
u=sys.argv[0]+"?url="+urllib.quote_plus(url)+"&mode=12&name="+urllib.quote_plus(__language__(30027))
+ soupRss = BeautifulStoneSoup(match,
convertEntities=BeautifulStoneSoup.XML_ENTITIES)
+ if len(soupRss('item')) > 1:
+ # add Play All listitem
+
u=sys.argv[0]+"?url="+urllib.quote_plus(url)+"&mode=10"+"&iconimage="+urllib.quote_plus(thumb)
ok=True
- liz=xbmcgui.ListItem(__language__(30027),
iconImage="DefaultFolder.png",
thumbnailImage=xbmc.translatePath(os.path.join(home, 'resources', 'play.png')))
+ liz=xbmcgui.ListItem(coloring( __language__(30005), "cyan",
__language__(30005)), iconImage=xbmc.translatePath(os.path.join(home,
'resources', 'play.png')), thumbnailImage=xbmc.translatePath(os.path.join(home,
'resources', 'play.png')))
+ liz.setProperty( "Fanart_Image", fanart )
ok=xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]),url=u,listitem=liz,isFolder=False)
- for i in soup('item'):
+ for i in soupRss('item'):
name =
urllib.unquote_plus(i('media:title')[0].string.encode("utf-8", 'ignore'))
url = i ('media:content')[0]['url']
try:
duration = i('media:content')[0]['duration']
except:
duration = ''
- addLink(name, 'http://www.archive.org'+url, duration, thumb)
+ try:
+ img =
'http://www.archive.org'+i('media:thumbnail')[0]['url']
+ if img == 'http://www.archive.org/images/glogo.png':
+ raise
+ except:
+ img = thumb
+ addLink(name, 'http://www.archive.org'+url, desc, duration,
img)
except:
pass
-
-def getPlaylist(url):
- link = getResponse(url)
try:
- thumb = re.compile('<img title="\[item image\]" alt="\[item
image\]" style="max-height:152px; max-width:165px; margin-bottom:0.5em;
border:0px;" id="thumbnail" src="(.+?)"/>').findall(link)[0]
+ items = soup('p', attrs={'id' : "dl"})[0]('a')
+ for i in items:
+ url = i['href']
+ name = i.string
+ size = i.findPrevious('span').string
+ if 'NEW' in size:
+ size = ''
+ addLink(coloring(
__language__(30006),"orange",__language__(30006) )+name+' '+size,
'http://www.archive.org'+url, desc, '', thumb)
except:
- try:
- thumb = re.compile('<a href=".+?"><img title=".+?" alt=".+?"
id=".+?" src="(.+?)"/></a>').findall(link)[0]
- except:
- thumb = icon
- if thumb.startswith('/'):
- thumb = 'http://www.archive.org'+thumb
+ pass
+
+def getPlaylist(url, iconimage):
player = xbmc.Player()
if player.isPlaying():
player.stop()
playlist = xbmc.PlayList(0)
playlist.clear()
- match = re.compile("IAD.mrss = '(.+?)'").findall(link)[0]
+ match = re.compile("IAD.mrss = '(.+?)'").findall(getResponse(url))[0]
soup = BeautifulStoneSoup(match,
convertEntities=BeautifulStoneSoup.XML_ENTITIES)
for i in soup('item'):
- name =
urllib.unquote_plus(i('media:title')[0].string.encode("ascii", 'ignore'))
+ name =
urllib.unquote_plus(i('media:title')[0].string.encode("utf-8"))
url = i ('media:content')[0]['url']
try:
duration = i('media:content')[0]['duration']
except:
duration = ''
- liz=xbmcgui.ListItem(name, iconImage=thumb, thumbnailImage=thumb)
+ liz=xbmcgui.ListItem(name, iconImage=iconimage,
thumbnailImage=iconimage)
liz.setInfo( type="Video", infoLabels={ "Title": name, "Duration":
duration } )
playlist.add(url='http://www.archive.org'+url, listitem=liz)
xbmc.executebuiltin('playlist.playoffset(music,0)')
-def DownloadFiles(title,url):
- filename = title+'.zip'
- def download(url, dest):
- dialog = xbmcgui.DialogProgress()
- dialog.create(__settings__.getLocalizedString(30022),
__settings__.getLocalizedString(30023), filename)
- urllib.urlretrieve(url, dest, lambda nb, bs, fs, url = url:
_pbhook(nb, bs, fs, url, dialog))
- def _pbhook(numblocks, blocksize, filesize, url = None,dialog = None):
+
+def getBrowseKeyword(url, iconimage):
+ soup = BeautifulSoup(getResponse(url),
convertEntities=BeautifulSoup.HTML_ENTITIES)
+ items = soup('tbody')[3]('li')
+ for i in items:
try:
- percent = min((numblocks * blocksize * 100) / filesize, 100)
- dialog.update(percent)
+ name = i.a.string.encode('utf-8')
+ href = i.a['href']
+ addDir(name,'http://www.archive.org'+href,2,'',iconimage)
except:
- percent = 100
- dialog.update(percent)
- if dialog.iscanceled():
- dialog.close()
- if __settings__.getSetting('download') == '':
- __settings__.openSettings('download')
- filepath =
xbmc.translatePath(os.path.join(__settings__.getSetting('download'),filename))
- download(url, filepath)
+ print 'There was an error adding Directory'
-def Search(url):
+def getBrowseByTitle(url, iconimage):
+ soup = BeautifulSoup(getResponse(url),
convertEntities=BeautifulSoup.HTML_ENTITIES)
+ items = soup('div', attrs={'id' : "browsetitle"})[0]('a')
+ print len(items)
+ for i in items:
+ try:
+ name = i.string.encode('utf-8')
+ href = i['href'].replace(' ','%20')
+ addDir(name,'http://www.archive.org'+href,2,'',iconimage)
+ except:
+ print 'There was an error adding Directory'
+
+
+def getBrowseByAuthor(url, iconimage):
+ soup = BeautifulSoup(getResponse(url),
convertEntities=BeautifulSoup.HTML_ENTITIES)
+ items = soup('div', attrs={'id' : "browseauthor"})[0]('a')
+ for i in items:
+ try:
+ name = i.string.encode('utf-8')
+ href = i['href'].replace(' ','%20')
+ addDir(name,'http://www.archive.org'+href,2,'',iconimage)
+ except:
+ print 'There was an error adding Directory'
+
+
+def getBrowseLanguage(url, iconimage):
+ soup = BeautifulSoup(getResponse(url),
convertEntities=BeautifulSoup.HTML_ENTITIES)
+ items = soup('table', attrs={'id' : "browse"})[0]('a')
+ for i in items:
+ name = i.string.encode('utf-8')
+ items = i.next.next[:-1].encode('utf-8')
+ href = i['href']
+ addDir(name+items,'http://www.archive.org'+href,2,'',iconimage)
+
+
+def getBrowseByArtist(url, iconimage):
+ soup = BeautifulSoup(getResponse(url),
convertEntities=BeautifulSoup.HTML_ENTITIES)
+ items = soup('table', attrs={'id' : "browse"})[0]('li')
+ for i in items:
+ name = i('a')[0].string.encode('utf-8')
+ shows = i('a')[1].string.encode('utf-8')
+ href = i.a['href']
+ addDir(name+' ( '+shows+'
)','http://www.archive.org'+href,1,'',iconimage)
+
+
+def Search(url, iconimage):
searchStr = ''
keyboard = xbmc.Keyboard(searchStr, "Search")
keyboard.doModal()
@@ -251,46 +390,53 @@ def Search(url):
if len(newStr) == 0:
return
url =
'http://www.archive.org/search.php?query='+newStr+'%20AND%20collection%3A'+url+'&sort=-'+set
- getShows(url)
-
-
-def searchByTitle(url):
- url='http://www.archive.org/details/'+url
- soup = BeautifulSoup(getResponse(url),
convertEntities=BeautifulSoup.HTML_ENTITIES)
- items = soup('div', attrs={'id' : "browsetitle"})[0]('a')
- for i in items:
- href = i['href']
- name = i.string
- url = 'http://www.archive.org'+href.replace(' ','%20')
- addDir(name,url,1,icon)
+ getShowList(url, iconimage)
-# search audio books by author
-def searchByAuthor():
- url='http://www.archive.org/details/audio_bookspoetry'
- soup = BeautifulSoup(getResponse(url),
convertEntities=BeautifulSoup.HTML_ENTITIES)
- items = soup('div', attrs={'id' : "browsetitle"})[0]('a')
- for i in items:
- href = i['href']
- name = i.string
- url = 'http://www.archive.org'+href.replace('
','%20').replace('sort=title','sort=creator').replace('firstTitle','firstCreator')
- addDir(name,url,1,icon)
-
-
-def addLink(name,url,duration,iconimage):
- ok=True
- liz=xbmcgui.ListItem(name, iconImage=iconimage,
thumbnailImage=iconimage)
- liz.setInfo( type="video", infoLabels={ "Title": name, "Duration":
duration } )
-
ok=xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]),url=url,listitem=liz)
- return ok
+def DownloadFiles(url):
+ filename = url.split('/')[-1]
+ def download(url, dest):
+ dialog = xbmcgui.DialogProgress()
+ dialog.create(__settings__.getLocalizedString(30000),
__settings__.getLocalizedString(30013), filename)
+ urllib.urlretrieve(url, dest, lambda nb, bs, fs, url = url:
_pbhook(nb, bs, fs, url, dialog))
+ def _pbhook(numblocks, blocksize, filesize, url = None,dialog = None):
+ try:
+ percent = min((numblocks * blocksize * 100) / filesize, 100)
+ dialog.update(percent)
+ except:
+ percent = 100
+ dialog.update(percent)
+ if dialog.iscanceled():
+ dialog.close()
+ if __settings__.getSetting('download') == '':
+
xbmc.executebuiltin("XBMC.Notification("+__language__(30000)+","+__language__(30015)+",5000,"+icon+")")
+ __settings__.openSettings('download')
+ filepath =
xbmc.translatePath(os.path.join(__settings__.getSetting('download'),filename))
+ download(url, filepath)
-def addDir(name,url,mode,iconimage):
-
u=sys.argv[0]+"?url="+urllib.quote_plus(url)+"&mode="+str(mode)+"&name="+urllib.quote_plus(name)
- ok=True
- liz=xbmcgui.ListItem(name, iconImage="DefaultFolder.png",
thumbnailImage=iconimage)
-
ok=xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]),url=u,listitem=liz,isFolder=True)
- return ok
+ # Thanks to gifty for the coloring function!
+def coloring( text , color , colorword ):
+ if color == "white":
+ color="FFFFFFFF"
+ if color == "blue":
+ color="FF0000FF"
+ if color == "cyan":
+ color="FF00B7EB"
+ if color == "violet":
+ color="FFEE82EE"
+ if color == "pink":
+ color="FFFF1493"
+ if color == "red":
+ color="FFFF0000"
+ if color == "green":
+ color="FF00FF00"
+ if color == "yellow":
+ color="FFFFFF00"
+ if color == "orange":
+ color="FFFF4500"
+ colored_text = text.replace( colorword , "[COLOR=%s]%s[/COLOR]" % (
color , colorword ) )
+ return colored_text
def get_params():
@@ -311,10 +457,33 @@ def get_params():
return param
+def addLink(name, url, desc, duration, iconimage):
+ ok=True
+ liz=xbmcgui.ListItem(name, iconImage=iconimage,
thumbnailImage=iconimage)
+ liz.setInfo( type="Video", infoLabels={ "Title": name, "Plot": desc,
"Duration": duration } )
+ contextMenu = [('Download','XBMC.Container.Update(%s?url=%s&mode=9)'
%(sys.argv[0], urllib.quote_plus(url)))]
+ liz.addContextMenuItems(contextMenu)
+ liz.setProperty( "Fanart_Image", fanart )
+
ok=xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]),url=url,listitem=liz,isFolder=False)
+ return ok
+
+
+def addDir(name, url, mode, desc, iconimage):
+
u=sys.argv[0]+"?url="+urllib.quote_plus(url)+"&mode="+str(mode)+"&name="+urllib.quote_plus(name)+"&desc="+urllib.quote_plus(desc)+"&iconimage="+urllib.quote_plus(iconimage)
+ ok=True
+ liz=xbmcgui.ListItem(name, iconImage=iconimage,
thumbnailImage=iconimage)
+ liz.setInfo( type="Video", infoLabels={ "Title": name, "Plot": desc } )
+ liz.setProperty( "Fanart_Image", fanart )
+
ok=xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]),url=u,listitem=liz,isFolder=True)
+ return ok
+
+
params=get_params()
url=None
name=None
mode=None
+iconimage=None
+desc=None
try:
url=urllib.unquote_plus(params["url"])
@@ -325,7 +494,11 @@ try:
except:
pass
try:
- title=urllib.unquote_plus(params["title"])
+ desc=urllib.unquote_plus(params["desc"])
+except:
+ pass
+try:
+ iconimage=urllib.unquote_plus(params["iconimage"])
except:
pass
try:
@@ -339,54 +512,51 @@ print "Name: "+str(name)
if mode==None or url==None or len(url)<1:
print ""
- getCategories()
+
addDir(__language__(30016),'http://www.archive.org/details/audio',1,'','http://ia600304.us.archive.org/25/items/audio/audio.gif')
+
addDir(__language__(30017),'http://www.archive.org/details/movies',1,'','http://ia700303.us.archive.org/0/items/movies/movies.gif')
elif mode==1:
- print ""
- getShows(url)
+ print "getCategories"
+ getCategories(url, iconimage)
elif mode==2:
- print ""
- playMusic(name, url)
+ print "getShowList"
+ getShowList(url, iconimage)
elif mode==3:
- print ""
- getArtist()
+ print "getMedia"
+ getMedia(url, desc, iconimage)
elif mode==4:
- print ""
- getLiveArchive()
+ print "getBrowseByAuthor"
+ getBrowseByAuthor(url, iconimage)
elif mode==5:
- print ""
- getAudioBooks()
+ print "getBrowseByTitle"
+ getBrowseByTitle(url, iconimage)
elif mode==6:
- print ""
- searchByTitle(url)
+ print "Search"
+ Search(url, iconimage)
elif mode==7:
print ""
- searchByAuthor()
+ getBrowseKeyword(url, iconimage)
elif mode==8:
print ""
- Search(url)
+ getBrowseLanguage(url, iconimage)
elif mode==9:
print ""
- getRadioPrograms()
+ DownloadFiles(url)
elif mode==10:
print ""
- getMusicArts()
+ getPlaylist(url, iconimage)
elif mode==11:
print ""
- DownloadFiles(title,url)
-
-elif mode==12:
- print ""
- getPlaylist(url)
+ getBrowseByArtist(url, iconimage)
xbmcplugin.endOfDirectory(int(sys.argv[1]))
\ No newline at end of file
diff --git
a/plugin.audio.internet.archive/resources/language/English/strings.xml
b/plugin.audio.internet.archive/resources/language/English/strings.xml
index 85b2481..fa0b3cb 100644
--- a/plugin.audio.internet.archive/resources/language/English/strings.xml
+++ b/plugin.audio.internet.archive/resources/language/English/strings.xml
@@ -1,33 +1,21 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<strings>
- <string id="30000">Browse by Artist</string>
- <string id="30001">Audio Books & Poetry</string>
- <string id="30002">Community Audio</string>
- <string id="30003"></string>
- <string id="30004">Computers & Technology</string>
- <string id="30005">Live Music Archive</string>
- <string id="30006">Music & Arts</string>
- <string id="30007">Search By Title</string>
- <string id="30008">Sort list by</string>
+ <string id="30000">Internet Archive</string>
+ <string id="30001">HTTP ERROR: </string>
+ <string id="30002">Browse By Author</string>
+ <string id="30003">Browse By Title</string>
+ <string id="30004">Search</string>
+ <string id="30005">Play All</string>
+ <string id="30006">Play / Download </string>
+ <string id="30007">Next Page</string>
+ <string id="30008">Sort by</string>
<string id="30009">Date added</string>
<string id="30010">Date</string>
<string id="30011">Download Count</string>
<string id="30012">Average Rating</string>
- <string id="30013">Netlabels</string>
- <string id="30014">News & Public Affairs</string>
- <string id="30015">Non-English Audio</string>
- <string id="30016">Next Page</string>
- <string id="30017">Spirituality & Religion</string>
- <string id="30018">Search by Author</string>
- <string id="30019">Download Location</string>
- <string id="30020">Search</string>
- <string id="30021">Sorry, no playlist.</string>
- <string id="30022">Internet Archive</string>
- <string id="30023">Downloading</string>
- <string id="30024">Radio Programs</string>
- <string id="30025">The Grateful Dead Collection</string>
- <string id="30026">Download: </string>
- <string id="30027">Play All</string>
- <string id="30028">Internet Archive</string>
- <string id="30029">HTTP ERROR: </string>
+ <string id="30013">Downloading</string>
+ <string id="30014">Download Location</string>
+ <string id="30015">Select a location to download files.</string>
+ <string id="30016">Audio Archive</string>
+ <string id="30017">Movie Archive</string>
</strings>
\ No newline at end of file
-----------------------------------------------------------------------
Summary of changes:
plugin.audio.internet.archive/addon.xml | 8 +-
plugin.audio.internet.archive/default.py | 576 +++++++++++++-------
plugin.audio.internet.archive/fanart.jpg | Bin 0 -> 59614 bytes
.../resources/download.png | Bin 33887 -> 0 bytes
.../resources/language/English/strings.xml | 40 +-
plugin.audio.internet.archive/resources/next.png | Bin 18680 -> 0 bytes
plugin.audio.internet.archive/resources/search.png | Bin 34942 -> 0 bytes
.../resources/thumbnail.txt | 20 -
8 files changed, 391 insertions(+), 253 deletions(-)
create mode 100644 plugin.audio.internet.archive/fanart.jpg
delete mode 100644 plugin.audio.internet.archive/resources/download.png
delete mode 100644 plugin.audio.internet.archive/resources/next.png
delete mode 100644 plugin.audio.internet.archive/resources/search.png
delete mode 100644 plugin.audio.internet.archive/resources/thumbnail.txt
hooks/post-receive
--
Plugins
------------------------------------------------------------------------------
All the data continuously generated in your IT infrastructure
contains a definitive record of customers, application performance,
security threats, fraudulent activity, and more. Splunk takes this
data and makes sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-novd2d
_______________________________________________
Xbmc-addons mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xbmc-addons