The branch, eden has been updated
       via  0803003d4468a2ebbbdc660cd5b109ff3dc8ad5b (commit)
      from  9269dd1b5ee04e3a8226378f0e6b36c7523c2662 (commit)

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

commit 0803003d4468a2ebbbdc660cd5b109ff3dc8ad5b
Author: spiff <[email protected]>
Date:   Wed Apr 18 20:40:43 2012 +0200

    [plugin.video.eredivisie-live] updated to version 2.0.2

diff --git a/plugin.video.eredivisie-live/addon.xml 
b/plugin.video.eredivisie-live/addon.xml
index dd7bf63..a97658b 100644
--- a/plugin.video.eredivisie-live/addon.xml
+++ b/plugin.video.eredivisie-live/addon.xml
@@ -1,11 +1,10 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <addon id="plugin.video.eredivisie-live"
        name="Eredivisie Live"
-       version="2.0.1"
+       version="2.0.2"
        provider-name="ErwinJunge">
   <requires>
     <import addon="xbmc.python" version="2.0"/>
-    <import addon="script.module.beautifulsoup" version="3.0.8"/>
   </requires>
   <extension point="xbmc.python.pluginsource"
              provides="video"
diff --git a/plugin.video.eredivisie-live/changelog.txt 
b/plugin.video.eredivisie-live/changelog.txt
index f61d9fc..7890b65 100644
--- a/plugin.video.eredivisie-live/changelog.txt
+++ b/plugin.video.eredivisie-live/changelog.txt
@@ -6,3 +6,6 @@ Version bump for eden, nothing changed
 
 [B]2.0.1:[/B]
 Filter paywall items from listing
+
+[B]2.0.2:[/B]
+Improve speed, add next page button
diff --git a/plugin.video.eredivisie-live/default.py 
b/plugin.video.eredivisie-live/default.py
index 17c5e65..acec9a9 100644
--- a/plugin.video.eredivisie-live/default.py
+++ b/plugin.video.eredivisie-live/default.py
@@ -23,11 +23,19 @@ import xbmcplugin
 import xbmcgui
 import sys
 import urllib2
-from BeautifulSoup import BeautifulSoup, SoupStrainer
 import re
 
+link_re = re.compile(r'<a.*?/a>', re.S)
+href_re = re.compile(r'href="(.*?)"')
+title_re = re.compile(r'title="(.*?)"')
+name_re = re.compile(r'<span class="name">(.*?)</span>')
+bandwidth_re = re.compile(r'BANDWIDTH=([0-9]+)')
+playlist_re = re.compile(r'id="video-smil" value="(.*?)"')
+
 base_url = 'http://eredivisielive.nl'
 
+number_of_items = 100
+
 def get_params():
   param={}
   paramstring=sys.argv[2]
@@ -51,11 +59,12 @@ def addFilterDir(name, filterString):
 
 def get_filter_list(filter_string):
   results = []
-  filter_options = SoupStrainer('div', {'id': 
"filter-"+filter_string+"-options"})
-  soup = BeautifulSoup(urllib2.urlopen(base_url+'/video').read(), 
parseOnlyThese=filter_options)
-  for tag in soup.findAll("a"):
-    if tag['href'] != '/video/overzicht/':
-      results.append({"name": tag.find("span", {"class": "name"}).text, 
"location": base_url+tag['href']})
+  filter_re = re.compile(r'<div 
id="filter-'+filter_string+'-options".*?</div>', re.S)
+  links = 
link_re.findall(filter_re.search(urllib2.urlopen(base_url+'/video').read()).group(0))
+  for link in links:
+    location = href_re.search(link).group(1)
+    if location != '/video/overzicht/':
+      results.append({"name": name_re.search(link).group(1), "location": 
base_url+location})
   return results
 
 def addListingDir(item):
@@ -63,20 +72,13 @@ def addListingDir(item):
   liz=xbmcgui.ListItem(item['name'])
   
xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]),url=u,listitem=liz,isFolder=True)
 
-def get_videos(url):
-  results = []
-  videos = SoupStrainer('li', {'class': 'video-item'})
-  soup = BeautifulSoup(urllib2.urlopen(url).read(), parseOnlyThese=videos)
-  for link in soup.findAll('a'):
-    if not link.find('span', {'class': 'video-payment-noprice-button'}):
-      results.append({"name": link.find('span', {'class': 'title'}).text, 
"location": base_url+link['href']})
-  return results
+def get_videos(links):
+  results = [{"name": title_re.search(string).group(1), "location": 
base_url+href_re.search(string).group(1)} for string in links if 
'video-play-button' in string]
+  return results 
   
 def get_bitrates(url):
   results = []
-  bandwidth_re = re.compile(r'BANDWIDTH=([0-9]+)')
-  playlist = SoupStrainer('input', {'id':"video-smil"})
-  playlist_url = BeautifulSoup(urllib2.urlopen(url).read(), 
parseOnlyThese=playlist).input['value']
+  playlist_url = playlist_re.search(urllib2.urlopen(url).read()).group(1)
   playlist = urllib2.urlopen(playlist_url).readlines()
   bandwidth_found = False
   for line in playlist:
@@ -97,7 +99,25 @@ def addVideoLink(item):
   u=item['location']
   liz=xbmcgui.ListItem(item['name'], thumbnailImage=None)
   xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]), url=u, listitem=liz, 
isFolder=False)
-  
+
+def get_next_page(links):
+  result = {"name": "Next page"}
+  for string in links:
+    if 'class="forward active"' in string:
+      result['location'] = base_url+href_re.search(string).group(1)
+      return result
+
+def listVideoItems(url):
+  next_page={'location': url}
+  items=[]
+  while next_page and len(items)<number_of_items:
+    links = link_re.findall(urllib2.urlopen(next_page['location']).read())
+    items += get_videos(links)
+    next_page = get_next_page(links)
+  for item in items:
+    addVideoItem(item)
+  addListingDir(next_page)
+
 ## Begin of main script
 params=get_params() # First, get the parameters
 
@@ -107,14 +127,10 @@ if 'filter' in params: # Filter chosen, load items
     for item in items:
       addListingDir(item)
   else:
-    items = get_videos(base_url+'/video')
-    for item in items:
-      addVideoItem(item)
+    listVideoItems(base_url+'/video')
 
 elif 'listing' in params: # Listing mode
-  items = get_videos(params['listing'])
-  for item in items:
-    addVideoItem(item)
+  listVideoItems(params['listing'])
 
 elif 'item' in params: # Item selected, show bitrate options
   items = get_bitrates(params['item'])

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

Summary of changes:
 plugin.video.eredivisie-live/addon.xml     |    3 +-
 plugin.video.eredivisie-live/changelog.txt |    3 +
 plugin.video.eredivisie-live/default.py    |   64 +++++++++++++++++----------
 3 files changed, 44 insertions(+), 26 deletions(-)


hooks/post-receive
-- 
Plugins

------------------------------------------------------------------------------
Better than sec? Nothing is better than sec when it comes to
monitoring Big Data applications. Try Boundary one-second 
resolution app monitoring today. Free.
http://p.sf.net/sfu/Boundary-dev2dev
_______________________________________________
Xbmc-addons mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xbmc-addons

Reply via email to