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> &nbsp;&nbsp;&nbsp; <a 
href="(.+?)">Next</a>').findall(link)[0].replace('&amp;','&')

-        
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('&amp;','&')

-            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> &nbsp;&nbsp;&nbsp; <a 
href="(.+?)">Next</a>').findall(link)[0].replace('&amp;','&')

-            
addDir(__language__(30016),'http://www.archive.org'+page,1,xbmc.translatePath(os.path.join(home,
 'resources', 'next.png')))

+            page = re.compile('</a> &nbsp;&nbsp;&nbsp; <a 
href="(.+?)">Next</a>').findall(link)[0]

+            url = 'http://www.archive.org'+page.replace('&amp;','&')

+            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 &amp; Poetry</string>

-  <string id="30002">Community Audio</string>

-  <string id="30003"></string>

-  <string id="30004">Computers &amp; Technology</string>

-  <string id="30005">Live Music Archive</string>

-  <string id="30006">Music &amp; 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 &amp; Public Affairs</string>

-  <string id="30015">Non-English Audio</string>

-  <string id="30016">Next Page</string>

-  <string id="30017">Spirituality &amp; 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

Reply via email to