The branch, eden has been updated
       via  cdb458537873949fd538b7944d16c2807495bcbb (commit)
      from  00957cdc2671bdee3a9ffb59bbdba92a0490657b (commit)

- Log -----------------------------------------------------------------
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/plugins;a=commit;h=cdb458537873949fd538b7944d16c2807495bcbb

commit cdb458537873949fd538b7944d16c2807495bcbb
Author: spiff <[email protected]>
Date:   Fri Apr 13 09:15:51 2012 +0200

    [plugin.video.ted.talks] updated to version 3.0.1

diff --git a/plugin.video.ted.talks/addon.xml b/plugin.video.ted.talks/addon.xml
index 9323220..5de73f5 100644
--- a/plugin.video.ted.talks/addon.xml
+++ b/plugin.video.ted.talks/addon.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <addon id="plugin.video.ted.talks"
        name="TED Talks"
-       version="3.0.0"
+       version="3.0.1"
        provider-name="rwparris2, moreginger">
   <requires>
     <import addon="xbmc.python" version="2.0"/>
diff --git a/plugin.video.ted.talks/changelog.txt 
b/plugin.video.ted.talks/changelog.txt
index eec7c58..e6d62b4 100644
--- a/plugin.video.ted.talks/changelog.txt
+++ b/plugin.video.ted.talks/changelog.txt
@@ -1,3 +1,6 @@
+[B]Version 3.0.1[/B]
+Full speaker list restored 
(https://github.com/moreginger/xbmc-plugin.video.ted.talks/issues/14)
+
 [B]Version 3.0.0[/B]
 Bump major version for Eden repository
 
diff --git a/plugin.video.ted.talks/resources/lib/ted_talks.py 
b/plugin.video.ted.talks/resources/lib/ted_talks.py
index 7e5d0b5..7c039ee 100644
--- a/plugin.video.ted.talks/resources/lib/ted_talks.py
+++ b/plugin.video.ted.talks/resources/lib/ted_talks.py
@@ -119,7 +119,7 @@ class UI:
 
     def speakers(self):
         newMode = 'speakerVids'
-        speakers = self.ted_talks.Speakers(self.get_HTML, self.args.get('url'))
+        speakers = ted_talks_scraper.Speakers(self.get_HTML, 
self.args.get('url'))
         #add speakers to the list
         for speaker in speakers.getAllSpeakers():
             speaker['mode'] = newMode
@@ -131,7 +131,7 @@ class UI:
 
     def speakerVids(self):
         newMode = 'playVideo'
-        speakers = self.ted_talks.Speakers(self.get_HTML, self.args.get('url'))
+        speakers = ted_talks_scraper.Speakers(self.get_HTML, 
self.args.get('url'))
         for talk in speakers.getTalks():
             talk['mode'] = newMode
             self.addItem(talk, isFolder = False)
diff --git a/plugin.video.ted.talks/resources/lib/ted_talks_scraper.py 
b/plugin.video.ted.talks/resources/lib/ted_talks_scraper.py
index cc04336..539041d 100644
--- a/plugin.video.ted.talks/resources/lib/ted_talks_scraper.py
+++ b/plugin.video.ted.talks/resources/lib/ted_talks_scraper.py
@@ -8,55 +8,55 @@ URLTHEMES = 'http://www.ted.com/themes/atoz/page/'
 URLSPEAKERS = 'http://www.ted.com/speakers/atoz/page/'
 URLSEARCH = 'http://www.ted.com/search?q=%s/page/'
 
+
 def getNavItems(html):
     """self.navItems={'next':url, 'previous':url, 
'selected':pagenumberasaninteger}"""
     navItems = {'next':None, 'previous':None, 'selected':1}
     paginationContainer = SoupStrainer(attrs = 
{'class':re.compile('pagination')})
-    for liTag in BeautifulSoup(html, parseOnlyThese = 
paginationContainer).findAll('li'):
-        if liTag.has_key('class'):
-            if liTag['class'] == 'next':
-                navItems['next'] = URLTED+liTag.a['href']
-            elif liTag['class'] == 'prev':
-                navItems['previous'] = URLTED+liTag.a['href']
-            elif liTag['class'] == 'selected':
-                navItems['selected'] = int(liTag.a.string)
+    for aTag in BeautifulSoup(html, parseOnlyThese = 
paginationContainer).findAll('a'):
+        if aTag.has_key('class'):
+            if aTag['class'] == 'next':
+                navItems['next'] = URLTED+aTag['href']
+            elif aTag['class'] == 'prev':
+                navItems['previous'] = URLTED+aTag['href']
+            elif aTag['class'] == 'selected':
+                navItems['selected'] = int(aTag.string)
     return navItems
 
 
-class NewTalks:
-    """
-    Fetches new talks!
-    """
-    
-    def __init__(self, getHTML, getLS):
-        """
-        getHTML method to getHTML from a URL
-        getLS method to get localized string from an integer code
-        """
-        self.getHTML = getHTML
-        self.getLS = getLS
- 
-    def getNewTalks(self, url = None):
-        """
-        Returns 2-tuples, first value is whether this is a folder, second is 
attributes dict
-        """
-        if url == None:
-            url = 'http://www.ted.com/talks/list/page/'
-        html = self.getHTML(url)
+class Speakers:
+
+    def __init__(self, get_HTML, url):
+        # adding 9999 to the url takes the script to the very last page of the 
list, providing the total # of pages.
+        if url is None:
+            url = URLSPEAKERS + '9999'
+        self.get_HTML = get_HTML
+        self.html = self.get_HTML(url)
+        # only bother with navItems where they have a chance to appear.
+        if URLSPEAKERS in url:
+            self.navItems = getNavItems(self.html)
+
+    def getAllSpeakers(self):
+        speakerContainers = SoupStrainer(attrs = 
{'href':re.compile('/speakers/\S.+?.html')})
+        pages_count = self.navItems['selected']
+        for i in range(pages_count):
+            # don't parse the last page twice.
+            if i is not pages_count:
+                html = self.get_HTML(URLSPEAKERS+str(i+1))
+            else:
+                html = self.html
+            for speaker in BeautifulSoup(html, parseOnlyThese = 
speakerContainers):
+                title = speaker.string
+                link = URLTED+speaker['href']
+                yield {'url':link, 'Title':title}
 
-        # Forward/backwards        
-        navItems = getNavItems(html)
-        if navItems['next']:
-            yield True, {'mode':'newTalks', 'Title': self.getLS(30020), 
'url':navItems['next']}
-        if navItems['previous']:
-            yield True, {'mode':'newTalks', 'Title': self.getLS(30021), 
'url':navItems['previous']}
-        
-        talkContainers = SoupStrainer(attrs = 
{'class':re.compile('talkMedallion')})
-        for talk in BeautifulSoup(html, parseOnlyThese = talkContainers):
+    def getTalks(self):
+        talkContainer = SoupStrainer(attrs = {'class':re.compile('box 
clearfix')})
+        for talk in BeautifulSoup(self.html, parseOnlyThese = talkContainer):
+            title = talk.h4.a.string
             link = URLTED+talk.dt.a['href']
-            title = cleanHTML(talk.dt.a['title'])
             pic = resizeImage(talk.find('img', attrs = 
{'src':re.compile('.+?\.jpg')})['src'])
-            yield False, {'mode':'playVideo', 'url':link, 'Title':title, 
'Thumb':pic}
+            yield {'url':link, 'Title':title, 'Thumb':pic}
 
 
 class TedTalks:
@@ -99,47 +99,6 @@ class TedTalks:
         return {'Title':title, 'Director':speaker, 'Genre':'TED', 'Plot':plot, 
'PlotOutline':plot, 'id':id, 'url':url}
 
 
-    class Speakers:
-
-        def __init__(self, get_HTML, url):
-            # adding 9999 to the url takes the script to the very last page of 
the list, providing the total # of pages.
-            if url is None:
-                url = URLSPEAKERS + '9999'
-            self.get_HTML = get_HTML
-            self.html = self.get_HTML(url)
-            # only bother with navItems where they have a chance to appear.
-            if URLSPEAKERS in url:
-                self.navItems = getNavItems(self.html)
-
-        def getSpeakers(self):
-            # use getAllSpeakers instead... just leaving this function here 
for educational purposes.
-            speakerContainers = SoupStrainer(attrs = 
{'href':re.compile('/speakers/\S.+?.html')})
-            for speaker in BeautifulSoup(self.html, parseOnlyThese = 
speakerContainers):
-                title = speaker.string
-                link = URLTED+speaker['href']
-                yield {'url':link, 'Title':title, 'label':title}
-
-        def getAllSpeakers(self):
-            speakerContainers = SoupStrainer(attrs = 
{'href':re.compile('/speakers/\S.+?.html')})
-            for i in range(self.navItems['selected']):
-                # don't parse the last page twice.
-                if i is not 8:
-                    html = self.get_HTML(URLSPEAKERS+str(i+1))
-                else:
-                    html = self.html
-                for speaker in BeautifulSoup(html, parseOnlyThese = 
speakerContainers):
-                    title = speaker.string
-                    link = URLTED+speaker['href']
-                    yield {'url':link, 'Title':title}
-
-        def getTalks(self):
-            talkContainer = SoupStrainer(attrs = {'class':re.compile('box 
clearfix')})
-            for talk in BeautifulSoup(self.html, parseOnlyThese = 
talkContainer):
-                title = talk.h4.a.string
-                link = URLTED+talk.dt.a['href']
-                pic = resizeImage(talk.find('img', attrs = 
{'src':re.compile('.+?\.jpg')})['src'])
-                yield {'url':link, 'Title':title, 'Thumb':pic}
-
     class Themes:
 
         def __init__(self, get_HTML, url=None):
diff --git a/plugin.video.ted.talks/resources/lib/ted_talks_scraper_test.py 
b/plugin.video.ted.talks/resources/lib/ted_talks_scraper_test.py
index ab525ce..25567ff 100644
--- a/plugin.video.ted.talks/resources/lib/ted_talks_scraper_test.py
+++ b/plugin.video.ted.talks/resources/lib/ted_talks_scraper_test.py
@@ -36,18 +36,15 @@ class TestTedTalks(unittest.TestCase):
         
self.ted_talks.getVideoDetails("http://www.ted.com/talks/bjarke_ingels_hedonistic_sustainability.html";)
 
 
-class TestNewTalks(unittest.TestCase):
-
+class TestSpeakers(unittest.TestCase):
+    
     def setUp(self):
-        self.new_talks = ted_talks_scraper.NewTalks(getHTML, lambda code: "%s" 
% code)
-
+        self.speakers = ted_talks_scraper.Speakers(getHTML, None)
+    
     def test_smoke(self):
-        new_talks_page_1 = list(self.new_talks.getNewTalks())
-        self.assertEqual((True, {'Title':'30020', 'mode':'newTalks', 
'url':u'http://www.ted.com/talks/list?page=2'}), new_talks_page_1[0])
-        assertTalk(self, new_talks_page_1[1])
-        
-        new_talks_page_2 = 
list(self.new_talks.getNewTalks(new_talks_page_1[0][1]['url']))
-        self.assertEqual((True, {'Title':'30020', 'mode':'newTalks', 
'url':u'http://www.ted.com/talks/list?page=3'}), new_talks_page_2[0])
-        self.assertEqual((True, {'Title':'30021', 'mode':'newTalks', 
'url':u'http://www.ted.com/talks/list?page=1'}), new_talks_page_2[1])
-        assertTalk(self, new_talks_page_2[2])
-        
+        speakers = list(self.speakers.getAllSpeakers())
+        # 1027 at time of writing, feel free to update
+        self.assertTrue(len(speakers) >= 1027)
+        # See 
https://github.com/moreginger/xbmc-plugin.video.ted.talks/issues/14 for the 
chosen speaker :)
+        self.assertTrue('Clifford Stoll' in [s['Title'] for s in speakers])
+

-----------------------------------------------------------------------

Summary of changes:
 plugin.video.ted.talks/addon.xml                   |    2 +-
 plugin.video.ted.talks/changelog.txt               |    3 +
 plugin.video.ted.talks/resources/lib/ted_talks.py  |    4 +-
 .../resources/lib/ted_talks_scraper.py             |  119 +++++++-------------
 .../resources/lib/ted_talks_scraper_test.py        |   23 ++--
 5 files changed, 55 insertions(+), 96 deletions(-)


hooks/post-receive
-- 
Plugins

------------------------------------------------------------------------------
For Developers, A Lot Can Happen In A Second.
Boundary is the first to Know...and Tell You.
Monitor Your Applications in Ultra-Fine Resolution. Try it FREE!
http://p.sf.net/sfu/Boundary-d2dvs2
_______________________________________________
Xbmc-addons mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xbmc-addons

Reply via email to