The branch, frodo has been updated
       via  8c3aeda985b36598a44a29bb404cf95ed2719495 (commit)
       via  fa0a391eb459fbf14b4088d945cc6fef30f6023e (commit)
      from  6939dae4e8ada846aaf2ddf23a27c8014a1a67e6 (commit)

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

commit 8c3aeda985b36598a44a29bb404cf95ed2719495
Author: beenje <[email protected]>
Date:   Sat Nov 24 22:55:53 2012 +0100

    [plugin.video.svtplay] updated to version 3.1.0

diff --git a/plugin.video.svtplay/addon.xml b/plugin.video.svtplay/addon.xml
index 68a7202..c0856c1 100644
--- a/plugin.video.svtplay/addon.xml
+++ b/plugin.video.svtplay/addon.xml
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <addon id="plugin.video.svtplay"
        name="SVT Play"
-       version="3.0.0"
+       version="3.1.0"
        provider-name="nilzen">
   <requires>
     <import addon="script.module.parsedom" version="1.2.0"/>
-    <import addon="xbmc.python" version="2.0"/>
+    <import addon="xbmc.python" version="2.1"/>
   </requires>
   <extension point="xbmc.python.pluginsource" library="default.py">
         <provides>video</provides>
diff --git a/plugin.video.svtplay/changelog.txt 
b/plugin.video.svtplay/changelog.txt
index a56e0c2..c8e4362 100644
--- a/plugin.video.svtplay/changelog.txt
+++ b/plugin.video.svtplay/changelog.txt
@@ -1,3 +1,11 @@
+Version 3.0.1
+-------------
+- Added search, fixed urls etc (by linqcan)
+
+Version 3.0.0
+-------------
+- Rewrite for Frodo
+
 Version 2.0.4
 -------------
 - Updated SWF-player URL (by dahlSTROM)
diff --git a/plugin.video.svtplay/default.py b/plugin.video.svtplay/default.py
index f433324..0975220 100644
--- a/plugin.video.svtplay/default.py
+++ b/plugin.video.svtplay/default.py
@@ -20,7 +20,10 @@ MODE_CATEGORIES = "categories"
 MODE_CATEGORY = "ti"
 MODE_LETTER = "letter"
 MODE_RECOMMENDED = "rp"
-MODE_PSL = "psl"
+MODE_SEARCH = "search"
+MODE_SEARCH_TITLES = "search_titles"
+MODE_SEARCH_EPISODES = "search_episodes"
+MODE_SEARCH_CLIPS = "search_clips"
 
 BASE_URL = "http://www.svtplay.se";
 
@@ -29,7 +32,7 @@ URL_CATEGORIES = "/kategorier"
 URL_TO_LATEST = "?tab=episodes&sida=1"
 URL_TO_LATEST_NEWS = "?tab=news&sida=1"
 URL_TO_RECOMMENDED = "?tab=recommended&sida=1"
-URL_TO_PSL = "/psl"
+URL_TO_SEARCH = "/sok?q="
 
 VIDEO_PATH_RE = "/(klipp|video|live)/\d+"
 VIDEO_PATH_SUFFIX = "?type=embed"
@@ -65,7 +68,8 @@ def viewStart():
   addDirectoryItem(localize(30002), { "mode": MODE_LIVE })
   addDirectoryItem(localize(30003), { "mode": MODE_LATEST, "page": 1 })
   addDirectoryItem(localize(30004), { "mode": MODE_LATEST_NEWS, "page": 1 })
-  addDirectoryItem(localize(30006), { "mode": MODE_PSL, "page": 1 })
+  addDirectoryItem(localize(30006), { "mode": MODE_SEARCH })
+
 
 def viewAtoO():
   html = getPage(BASE_URL + URL_A_TO_O)
@@ -102,7 +106,7 @@ def viewLive():
 
         if match:
 
-          url = match.group() + VIDEO_PATH_SUFFIX
+          url = urllib.quote(match.group() + VIDEO_PATH_SUFFIX)
 
           addDirectoryItem(common.replaceHTMLCodes(text), { "mode": 
MODE_VIDEO, "url": url }, None, False, True)
 
@@ -183,8 +187,93 @@ def viewCategory(url,page,index):
 def viewProgram(url,page,index):
   createDirectory(url,page,index,MODE_PROGRAM,MODE_VIDEO)
 
-def viewPSL(page,index):
-  createDirectory(URL_TO_PSL,page,index,MODE_PSL,MODE_VIDEO)
+def viewSearch():
+
+  keyword = common.getUserInput(localize(30102))
+  keyword = urllib.quote(keyword)
+  common.log("Search string: " + keyword)
+
+  if keyword == "" or not keyword:
+    viewStart()
+    return 
+
+  keyword = re.sub(r" ","+",keyword) 
+
+  url = URL_TO_SEARCH + keyword
+  html = getPage(BASE_URL + url)
+  foundTab = False
+  url = urllib.quote(url)
+ 
+  # Try fetching the "titles" tab. If it exists; create link to result 
directory   
+  try:
+    common.parseDOM(html, "div", attrs = { "data-tabname": "titles" })[0]
+    foundTab = True
+  except:
+    # Do nothing
+    common.log("No titles found")
+  else:
+    addDirectoryItem(localize(30104), { 
+                    "mode": MODE_SEARCH_TITLES,
+                    "url": url,
+                    "page": 1,
+                    "index": 0 })
+
+  # Try fetching the "episodes" tab. If it exists; create link to result 
directory   
+  try:
+    common.parseDOM(html, "div", attrs = { "data-tabname": "episodes" })[0]
+    foundTab = True
+  except:
+    # Do nothing
+    common.log("No episodes found")
+  else:
+    addDirectoryItem(localize(30105), { 
+                    "mode": MODE_SEARCH_EPISODES,
+                    "url": url,
+                    "page": 1,
+                    "index": 0 })
+
+  # Try fetching the "clips" tab. If it exists; create link to result 
directory   
+  try:
+    common.parseDOM(html, "div", attrs = { "data-tabname": "clips" })[0]
+    foundTab = True
+  except:
+    # Do nothing 
+    common.log("No clips found")
+  else:
+    addDirectoryItem(localize(30106), { 
+                    "mode": MODE_SEARCH_CLIPS,
+                    "url": url,
+                    "page": 1,
+                    "index": 0 })
+ 
+  if not foundTab:
+    # Raise dialog with a "No results found" message
+    common.log("No search result") 
+    dialog = xbmcgui.Dialog()
+    dialog.ok("SVT Play",localize(30103))
+    viewSearch()
+    return
+
+def viewSearchResults(url,mode,page,index):
+  """
+  Creates a directory for the search results from
+  the tab specified by the mode parameter.
+  """ 
+  common.log("url: " + url + " mode: " + mode)
+  dirtype = None
+
+  if MODE_SEARCH_TITLES == mode:
+    dirtype = MODE_PROGRAM
+  elif MODE_SEARCH_EPISODES == mode:
+    dirtype = MODE_VIDEO
+  elif MODE_SEARCH_CLIPS == mode:
+    dirtype = MODE_VIDEO
+  else:
+    common.log("Undefined mode")
+    viewStart()
+    return
+
+  createDirectory(url,page,index,mode,dirtype)
 
 def createDirectory(url,page,index,callertype,dirtype):
   """
@@ -197,19 +286,19 @@ def createDirectory(url,page,index,callertype,dirtype):
     url = "/" + url
 
   tabname = "episodes"
-  if callertype == MODE_RECOMMENDED:
+  if MODE_RECOMMENDED == callertype:
     tabname = "recommended"
-  elif callertype == MODE_LATEST_NEWS:
+  elif MODE_LATEST_NEWS == callertype:
     tabname = "news"
-  elif callertype == MODE_PSL:
+  elif MODE_SEARCH_CLIPS == callertype:
     tabname = "clips"
-  elif callertype == MODE_CATEGORY:
+  elif MODE_CATEGORY == callertype or MODE_SEARCH_TITLES == callertype:
     tabname = "titles"
 
   (foundUrl,ajaxurl,lastpage) = parseAjaxUrlAndLastPage(url,tabname)
 
   if not foundUrl:
-    populateDirNoPaging(url,MODE_VIDEO)
+    populateDirNoPaging(url,dirtype,tabname)
     return
 
   fetchitems = True
@@ -242,14 +331,16 @@ def parseAjaxUrlAndLastPage(url,tabname):
   Fetches the Ajax URL and the the last page number
   from a program page.
   """
+  common.log("url: " + url + ", tabname: " + tabname)
   classexp = "[^\"']*playShowMoreButton[^\"']*"
   dataname = "sida"
   html = getPage(BASE_URL + url)
+
   container = common.parseDOM(html,
                               "div",
-                              attrs = { "class": "[^\"']*playBoxBody[^\"']*", 
"data-tabname": tabname })[0]
+                              attrs = { "class": 
"[^\"']*[playBoxBody|playBoxAltBody][^\"']*", "data-tabname": tabname })[0]
   try:
-      ajaxurl = common.parseDOM(container,
+    ajaxurl = common.parseDOM(container,
                                 "a",
                                 attrs = { "class": classexp, "data-name": 
dataname },
                                 ret = "data-baseurl")[0]
@@ -272,6 +363,8 @@ def populateDir(ajaxurl,mode,page,index):
   all items on a page were used to populate the previous
   directory.
   """
+  common.log("ajaxurl: " + ajaxurl + ", mode: " + mode + ", page: " + page + 
", index: " + str(index))
+
   global CURR_DIR_ITEMS
 
   articles = getArticles(ajaxurl,page)
@@ -283,70 +376,73 @@ def populateDir(ajaxurl,mode,page,index):
     if CURR_DIR_ITEMS >= MAX_DIR_ITEMS:
       CURR_DIR_ITEMS = 0
       return (False,index)
-
-    text = common.parseDOM(article, "h5")[0]
-    href = common.parseDOM(article, "a",
-                           attrs = { "class": "[^\"']*playLink[^\"']*" },
-                           ret = "href")[0]
-    thumbnail = common.parseDOM(article,
-                  "img",
-                  attrs = { "class": "playGridThumbnail" },
-                  ret = "src")[0]
-    thumbnail = thumbnail.replace("/medium/", "/lbnail" },k[^\"']*" },+ 
", index: " + str(index))name": tabname 
})[0]b5ÿpb5ÿuê5¹+€
7¹+W¹+’øRº+pb5ÿ€uº+`b5ÿ0b5ÿk6¹+6
 
èè!è!b5ÿpb5ÿx´Rº+`b5ÿ’â5¹+†6¹+b5ÿ`â5¹+?b5ÿÀ¯¶º+uê5¹+ ¶º+ؤ¶º+¨©¶º+€
7¹+x´Rº+`b5ÿ0b5ÿk6¹+à!à!b5ÿpb5ÿH~2º+@b5ÿ’â5¹+†6¹+b5ÿ`â5¹+?b5ÿ0b5ÿ(b5ÿ8W¹+Œp˜pb5ÿuê5¹+€
7¹+@b5ÿb5ÿk6¹+GHIJKMNOPb5ÿpb5ÿH5
        
º+àb5ÿ’â5¹+†6¹+b5ÿ0¯¶º+uê5¹+ÀRº+ iæ¹+ ¶º+ؤ¶º+¨©¶º+€
7¹+H5        º+àb5ÿ b5ÿk6¹+85 
º+àb5ÿPb5ÿk6¹+(5 
º+àb5ÿ€b5ÿk6¹+5 
º+àb5ÿ°b5ÿk6¹+   
¨®¶º+uê5¹+¨©¶º+0b5ÿЏæ¹+eé5¹+ؤ¶º+Pb5ÿy¸æ¹+eé5¹+ ¶º+€b5ÿZ¸æ¹+eé5¹+Ødæ¹+ÀRº+ iæ¹+ ¶º+ØÄRº+ؤ¶º+¨©¶º+€
7¹+8W¹+-²¹+pb5ÿpûå¹+0b5ÿb5ÿk6¹+5678:<=>?@BDb5ÿpb5ÿà-¯¹+pb5ÿuê5¹+W¹+°b5ÿ-²¹+eé5¹+W¹+Õ_@fÆS
 
Qöl±íÁC~¹+pb5ÿà-¯¹+@b5ÿb5ÿk6¹+u]ÞÓ
      
4Q ÷U^Qʉ§¶uª¹ñìò*ēvb5ÿpb5ÿH~{¹+Ä·¹+°b5ÿ¦Ð»+¦Ð»+µ¹+?b5ÿpb5ÿ(b5ÿb5ÿÏRº+uê5¹+ØÄRº+ðb5ÿ¢Ð»+Àb5ÿPb5ÿÿÿÿÿÿÿÿÿ¢Ð»+xb5ÿarge/")
-
-    if settings.getSetting("hidesignlanguage") == "false" or 
text.lower().endswith("teckentolkad") == False:
-
-      if mode == MODE_VIDEO:
-        href = href + VIDEO_PATH_SUFFIX
-        addDirectoryItem(common.replaceHTMLCodes(text),
-                 { "mode": mode, "url": href }, thumbnail, False)
-      elif mode == MODE_PROGRAM:
-        addDirectoryItem(common.replaceHTMLCodes(text),
-                 { "mode": mode, "url": href, "page": 1 }, thumbnail)
-
-      CURR_DIR_ITEMS += 1
+      
+    createDirItem(article,mode)      
 
     index += 1
 
   return (True,0)
 
-def populateDirNoPaging(url,mode):
+def populateDirNoPaging(url,mode,tabname):
   """
   Program pages that have less than 8 videos
   does not have a way to fetch the Ajax URL.
   Therefore we need a separate parse function
   for these programs.
   """
+  common.log("url: " + url + ", mode: " + mode + ", tabname: " + tabname)
 
-  articles = getArticles(url,None)
-
+  articles = getArticles(url,None,tabname)
+  
   for article in articles:
-    text = common.parseDOM(article, "h5")[0]
-    href = common.parseDOM(article, "a",
-                            attrs = { "class": "[^\"']*playLink[^\"']*" },
-                            ret = "href")[0]
-    thumbnail = common.parseDOM(article,
-                                "img",
-                                attrs = { "class": "playGridThumbnail" },
-                                ret = "src")[0]
-    thumbnail = thumbnail.replace("/medium/", "/large/")
+    createDirItem(article,mode)
+
+def createDirItem(article,mode):
+  """
+  Given an article and a mode; create directory item
+  for the article.
+  """
+  global CURR_DIR_ITEMS
+
+  text = common.parseDOM(article, "h5")[0]
+  href = common.parseDOM(article, "a",
+                          attrs = { "class": 
"[^\"']*[playLink|playAltLink][^\"']*" },
+                          ret = "href")[0]
+  thumbnail = common.parseDOM(article,
+                              "img",
+                              attrs = { "class": "playGridThumbnail" },
+                              ret = "src")[0]
+  thumbnail = thumbnail.replace("/medium/", "/large/")
+
+  if settings.getSetting("hidesignlanguage") == "false" or \
+     text.lower().endswith("teckentolkad") == False:
 
     if(mode == MODE_VIDEO):
-      href = href + VIDEO_PATH_SUFFIX
+      href = urllib.quote(href + VIDEO_PATH_SUFFIX)
+      addDirectoryItem(common.replaceHTMLCodes(text),
+                      { "mode": mode, "url": href }, thumbnail, False)
+    elif mode == MODE_PROGRAM:
       addDirectoryItem(common.replaceHTMLCodes(text),
-                       { "mode": mode, "url": href, "page": 1 }, thumbnail, 
False)
+                      { "mode": mode, "url": href, "page": 1 }, thumbnail, 
True)
+    CURR_DIR_ITEMS += 1
 
-def getArticles(ajaxurl,page):
+def getArticles(ajaxurl,page,tabname=None):
   """
-  Fetches all "articles" DOM elements in a "svtGridBlock".
+  Fetches all "article" DOM elements in a "svtGridBlock".
   """
   if page:
     html = getPage(BASE_URL + ajaxurl + "sida=" + page)
   else:
     html = getPage(BASE_URL + ajaxurl)
-  container = common.parseDOM(html,
-                "div",
-                attrs = { "class": "[^\"']*svtGridBlock[^\"']*" })[0]
+
+  if not tabname:
+    container = common.parseDOM(html,
+                  "div",
+                  attrs = { "class": "[^\"']*svtGridBlock[^\"']*" })[0]
+  else:
+    container = common.parseDOM(html,
+                  "div",
+                  attrs = { "data-tabname": tabname })[0]
 
   articles = common.parseDOM(container, "article")
   return articles
@@ -528,7 +624,11 @@ elif mode == MODE_LETTER:
   viewProgramsByLetter(letter)
 elif mode == MODE_RECOMMENDED:
   viewLatest(mode,page,index)
-elif mode == MODE_PSL:
-  viewPSL(page,index)
+elif mode == MODE_SEARCH:
+  viewSearch()
+elif mode == MODE_SEARCH_TITLES or \
+     mode == MODE_SEARCH_EPISODES or \
+     mode == MODE_SEARCH_CLIPS:
+  viewSearchResults(url,mode,page,index)
 
 xbmcplugin.endOfDirectory(pluginHandle)
diff --git a/plugin.video.svtplay/resources/language/English/strings.xml 
b/plugin.video.svtplay/resources/language/English/strings.xml
index 5eea8c0..8ccce3d 100644
--- a/plugin.video.svtplay/resources/language/English/strings.xml
+++ b/plugin.video.svtplay/resources/language/English/strings.xml
@@ -6,9 +6,14 @@
   <string id="30003">Latest programs</string>  
   <string id="30004">Latest news broadcast</string>
   <string id="30005">Recommended</string>
-  <string id="30006">PSL</string>
+  <string id="30006">Search</string>
   <string id="30100">This program is only available at www.svtplay.se</string>
-  <string id="30101">More programs...</string>
+  <string id="30101">Show more...</string>
+  <string id="30102">Search for:</string>
+  <string id="30103">The search returned no results</string>
+  <string id="30104">Programs</string>
+  <string id="30105">Episodes</string>
+  <string id="30106">Clips</string>
   <string id="30500">Debug</string>
   <string id="30501">Show subtitles</string>
   <string id="30502">Group programs in A-Ö by first character</string>
diff --git a/plugin.video.svtplay/resources/language/Swedish/strings.xml 
b/plugin.video.svtplay/resources/language/Swedish/strings.xml
index 214f401..82773f5 100644
--- a/plugin.video.svtplay/resources/language/Swedish/strings.xml
+++ b/plugin.video.svtplay/resources/language/Swedish/strings.xml
@@ -6,9 +6,14 @@
   <string id="30003">Senaste program</string>
   <string id="30004">Senaste nyhetsprogram</string>
   <string id="30005">Rekommenderat</string>
-  <string id="30006">PSL</string>
+  <string id="30006">Sök</string>
   <string id="30100">Detta program är endast tillgängligt på 
www.svtplay.se</string>
-  <string id="30101">Fler program...</string>
+  <string id="30101">Visa fler...</string>
+  <string id="30102">Sök efter:</string>
+  <string id="30103">Sökningen gav inga räffar</string>
+  <string id="30104">Program</string>
+  <string id="30105">Avsnitt</string>
+  <string id="30106">Klipp</string>
   <string id="30500">Debug</string>
   <string id="30501">Visa undertexter</string>
   <string id="30502">Gruppera program i A-Ö efter första bokstav</string>

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

commit fa0a391eb459fbf14b4088d945cc6fef30f6023e
Author: beenje <[email protected]>
Date:   Sat Nov 24 22:16:56 2012 +0100

    [plugin.video.cnet.podcasts] updated to version 1.0.8

diff --git a/plugin.video.cnet.podcasts/addon.xml 
b/plugin.video.cnet.podcasts/addon.xml
index f46bc1a..7f8e541 100644
--- a/plugin.video.cnet.podcasts/addon.xml
+++ b/plugin.video.cnet.podcasts/addon.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>

 <addon id="plugin.video.cnet.podcasts"

        name="cnet Podcasts"

-       version="1.0.7"

+       version="1.0.8"

        provider-name="divingmule">

   <requires>

     <import addon="xbmc.python" version="2.0"/>

diff --git a/plugin.video.cnet.podcasts/changelog.txt 
b/plugin.video.cnet.podcasts/changelog.txt
index 6159840..966ad19 100644
--- a/plugin.video.cnet.podcasts/changelog.txt
+++ b/plugin.video.cnet.podcasts/changelog.txt
@@ -1,3 +1,6 @@
+version 1.0.8

+fix for changes in Frodo

+

 version 1.0.7

 updated podcasts list 

 

diff --git a/plugin.video.cnet.podcasts/default.py 
b/plugin.video.cnet.podcasts/default.py
index 5a5b098..7540ddc 100644
--- a/plugin.video.cnet.podcasts/default.py
+++ b/plugin.video.cnet.podcasts/default.py
@@ -56,7 +56,7 @@ def INDEX(url,hd_url,audio_url,iconimage):
         link = 'http://feeds.feedburner.com/cnet/'+link+'?format=xml'

         replace_list = ['rumorhasit', 'crackingopen', 'alwayson', 
'cnetupdate', 'cnetoncars']

         for i in replace_list:

-            if i in link:

+            if i.lower() in link.lower():

                 link = link.replace('cnet/','')

         print 'Feed Url: '+link

         req = urllib2.Request(link)

@@ -135,6 +135,8 @@ params=get_params()
 url=None

 name=None

 mode=None

+hd_url=None

+audio_url=None

 

 try:

     url=urllib.unquote_plus(params["url"])


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

Summary of changes:
 plugin.video.cnet.podcasts/addon.xml               |    2 +-
 plugin.video.cnet.podcasts/changelog.txt           |    3 +
 plugin.video.cnet.podcasts/default.py              |    4 +-
 plugin.video.svtplay/addon.xml                     |    4 +-
 plugin.video.svtplay/changelog.txt                 |    8 +
 plugin.video.svtplay/default.py                    |  212 ++++++++++++++-----
 .../resources/language/English/strings.xml         |    9 +-
 .../resources/language/Swedish/strings.xml         |    9 +-
 8 files changed, 187 insertions(+), 64 deletions(-)


hooks/post-receive
-- 
Plugins

------------------------------------------------------------------------------
Monitor your physical, virtual and cloud infrastructure from a single
web console. Get in-depth insight into apps, servers, databases, vmware,
SAP, cloud infrastructure, etc. Download 30-day Free Trial.
Pricing starts from $795 for 25 servers or applications!
http://p.sf.net/sfu/zoho_dev2dev_nov
_______________________________________________
Xbmc-addons mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xbmc-addons

Reply via email to