The branch, eden has been updated
via d6cc93ffae1896d482b723d9d303e96e2f8061ba (commit)
via 761f37fb14ec029677948faa849565b656d6885e (commit)
from ccde8eac0a8f5106ba9fa9243df470a81ae2c172 (commit)
- Log -----------------------------------------------------------------
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/plugins;a=commit;h=d6cc93ffae1896d482b723d9d303e96e2f8061ba
commit d6cc93ffae1896d482b723d9d303e96e2f8061ba
Author: beenje <[email protected]>
Date: Fri Mar 22 22:37:55 2013 +0100
[plugin.video.bliptv] updated to version 0.8.3
diff --git a/plugin.video.bliptv/BlipTVScraper.py
b/plugin.video.bliptv/BlipTVScraper.py
index a752d18..aad08cf 100644
--- a/plugin.video.bliptv/BlipTVScraper.py
+++ b/plugin.video.bliptv/BlipTVScraper.py
@@ -120,15 +120,15 @@ class BlipTVScraper:
url = self.createUrl(params, page)
result = self.common.fetchPage({"link": url})
- lst = self.common.parseDOM(result["content"], "div", {"class":
"EpisodeCard Extended"})
+ lst = self.common.parseDOM(result["content"], "div", {"class":
"MyBlipEpisodeCardWrap"})
- if len(lst) > 0 and page <= 20:
+ if len(lst) > 0 and page <= 50:
next = "true"
for ep in lst:
- title = self.common.parseDOM(ep, "h5", ret="title")
- videoid = self.common.parseDOM(ep, "a", attrs={"class":
"EpisodeThumb"}, ret="href")
- image = self.common.parseDOM(ep, "img", attrs={"class":
"ThumbnailImage"}, ret="src")
+ title = self.common.parseDOM(ep, "span",
{"class":"EpisodeTitle"})[0]
+ videoid = self.common.parseDOM(ep, "a", attrs={"class":
"EpisodeCardLink"}, ret="href")
+ image = self.common.parseDOM(ep, "img", attrs={"class":
"Thumb"}, ret="src")
item = {}
item["videoid"] = videoid[0][videoid[0].rfind("-") + 1:]
diff --git a/plugin.video.bliptv/addon.xml b/plugin.video.bliptv/addon.xml
index 6119b29..86c92c3 100644
--- a/plugin.video.bliptv/addon.xml
+++ b/plugin.video.bliptv/addon.xml
@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
-<addon id="plugin.video.bliptv" name="BlipTV" provider-name="TheCollective"
version="0.8.2">
+<addon id="plugin.video.bliptv" name="BlipTV" provider-name="TheCollective"
version="0.8.3">
<requires>
<import addon="xbmc.python" version="2.0" />
<import addon="script.common.plugin.cache" version="1.5.1" />
diff --git a/plugin.video.bliptv/changelog.txt
b/plugin.video.bliptv/changelog.txt
index 6b2c2fe..4b38177 100644
--- a/plugin.video.bliptv/changelog.txt
+++ b/plugin.video.bliptv/changelog.txt
@@ -7,6 +7,9 @@
[B]Errata[/B]
+[B]Version 0.8.3[/B]
+- Fixed: site changes broke episode search
+
[B]Version 0.8.2[/B]
- Fixed: site changes broke parts of the show scraper
diff --git a/plugin.video.bliptv/default.py b/plugin.video.bliptv/default.py
index 5f9939d..f60a9bb 100644
--- a/plugin.video.bliptv/default.py
+++ b/plugin.video.bliptv/default.py
@@ -26,7 +26,7 @@ try: import xbmcvfs
except: import xbmcvfsdummy as xbmcvfs
# plugin constants
-version = "0.8.2"
+version = "0.8.3"
plugin = "BlipTV-" + version
author = "TheCollective"
url = "www.xbmc.com"
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/plugins;a=commit;h=761f37fb14ec029677948faa849565b656d6885e
commit 761f37fb14ec029677948faa849565b656d6885e
Author: beenje <[email protected]>
Date: Fri Mar 22 22:37:40 2013 +0100
[plugin.video.youtube] updated to version 3.4.4
diff --git a/plugin.video.youtube/YouTubeCore.py
b/plugin.video.youtube/YouTubeCore.py
index 9bd6ce4..2ff1547 100644
--- a/plugin.video.youtube/YouTubeCore.py
+++ b/plugin.video.youtube/YouTubeCore.py
@@ -476,13 +476,9 @@ class YouTubeCore():
self.common.log("Result: %s " % repr(ret_obj), 9)
- # Return result if it isn't age restricted
- if (ret_obj["content"].find("verify-actions") == -1 and
ret_obj["content"].find("verify-age-actions") == -1):
- self.common.log("done")
- ret_obj["status"] = 200
- return ret_obj
- else:
- self.common.log("Youtube requires you to verify your age to
view this content: " + repr(params))
+ self.common.log("done")
+ ret_obj["status"] = 200
+ return ret_obj
except urllib2.HTTPError, e:
cont = False
@@ -493,47 +489,22 @@ class YouTubeCore():
if e.code == 400 or True:
self.common.log("Unhandled HTTPError : [%s] %s " % (e.code,
msg), 1)
- if msg.find("<?xml") > -1:
- acted = False
-
- self.common.log("REPLACE THIS MINIDOM WITH PARSEDOM: " +
repr(msg))
- import xml.dom.minidom as minidom
- dom = minidom.parseString(msg)
- self.common.log(str(len(msg)))
- domains = dom.getElementsByTagName("domain")
- codes = dom.getElementsByTagName("code")
- for domain in domains:
- self.common.log(repr(domain.firstChild.nodeValue), 5)
- if domain.firstChild.nodeValue == "yt:quota":
- self.common.log("Hit quota... sleeping for 100
seconds")
- time.sleep(100)
- acted = True
-
- if not acted:
- for code in codes:
- self.common.log(repr(code.firstChild.nodeValue), 5)
- if code.firstChild.nodeValue ==
"too_many_recent_calls":
- self.common.log("Hit quota... sleeping for 10
seconds")
- time.sleep(10)
- acted = True
-
- else: # Legacy this.
- if msg.find("yt:quota") > 1:
- self.common.log("Hit quota... sleeping for 10 seconds")
- time.sleep(10)
- elif msg.find("too_many_recent_calls") > 1:
- self.common.log("Hit quota... sleeping for 10 seconds")
- time.sleep(10)
- elif err.find("Token invalid") > -1:
- self.common.log("refreshing token")
- self._oRefreshToken()
- elif err.find("User Rate Limit Exceeded") > -1:
- self.common.log("Hit limit... Sleeping for 10 seconds")
- time.sleep(10)
- else:
- if e.fp:
- cont = e.fp.read()
- self.common.log("HTTPError - Headers: " +
str(e.headers) + " - Content: " + cont)
+ if msg.find("yt:quota") > 1:
+ self.common.log("Hit quota... sleeping for 10 seconds")
+ time.sleep(10)
+ elif msg.find("too_many_recent_calls") > 1:
+ self.common.log("Hit quota... sleeping for 10 seconds")
+ time.sleep(10)
+ elif err.find("Token invalid") > -1:
+ self.common.log("refreshing token")
+ self._oRefreshToken()
+ elif err.find("User Rate Limit Exceeded") > -1:
+ self.common.log("Hit limit... Sleeping for 10 seconds")
+ time.sleep(10)
+ else:
+ if e.fp:
+ cont = e.fp.read()
+ self.common.log("HTTPError - Headers: " + str(e.headers) +
" - Content: " + cont)
params["error"] = get("error", 0) + 1
ret_obj = self._fetchPage(params)
diff --git a/plugin.video.youtube/YouTubeNavigation.py
b/plugin.video.youtube/YouTubeNavigation.py
index 68a3d87..4773d0f 100644
--- a/plugin.video.youtube/YouTubeNavigation.py
+++ b/plugin.video.youtube/YouTubeNavigation.py
@@ -99,8 +99,8 @@ class YouTubeNavigation():
if (cat_get("path").rfind("/") <= len(path + "/")):
setting =
self.settings.getSetting(cat_get("path").replace("/root/explore/",
"").replace("/root/", ""))
if not setting or setting == "true":
- if (cat_get("feed") == "downloads"):
- if (self.settings.getSetting("downloadPath")):
+ if cat_get("feed") == "downloads":
+ if (self.settings.getSetting("download_path")):
self.addListItem(params, category)
else:
self.addListItem(params, category)
@@ -391,7 +391,7 @@ class YouTubeNavigation():
listitem.setProperty("Folder", "true")
if (item("feed") == "downloads"):
- url = self.settings.getSetting("downloadPath")
+ url = self.settings.getSetting("download_path")
self.xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]), url=url,
listitem=listitem, isFolder=True, totalItems=size)
self.common.log("Done", 5)
diff --git a/plugin.video.youtube/YouTubePlayer.py
b/plugin.video.youtube/YouTubePlayer.py
index 736d598..280f43f 100644
--- a/plugin.video.youtube/YouTubePlayer.py
+++ b/plugin.video.youtube/YouTubePlayer.py
@@ -215,7 +215,7 @@ class YouTubePlayer():
return video_url
if get("action") != "download":
- video_url += " | " + self.common.USERAGENT
+ video_url += '|' +
urllib.urlencode({'User-Agent':self.common.USERAGENT})
self.common.log(u"Done")
return video_url
@@ -295,9 +295,9 @@ class YouTubePlayer():
found = False
for line in data.split("\n"):
- if line.strip().startswith("yt.playerConfig = "):
+ if line.strip().find(";ytplayer.config = ") > 0:
found = True
- p1 = line.find("=")
+ p1 = line.find(";ytplayer.config = ") + len(";ytplayer.config
= ") - 1
p2 = line.rfind(";")
if p1 <= 0 or p2 <= 0:
continue
@@ -370,13 +370,12 @@ class YouTubePlayer():
get = params.get
result = self.getVideoPageFromYoutube(get)
- if self.isVideoAgeRestricted(result) and
self.pluginsettings.userName() != "":
- self.login.login()
- result = self.getVideoPageFromYoutube(get)
-
if self.isVideoAgeRestricted(result):
self.common.log(u"Age restricted video")
- if not self.pluginsettings.userHasProvidedValidCredentials():
+ if self.pluginsettings.userHasProvidedValidCredentials():
+ self.login._httpLogin({"new":"true"})
+ result = self.getVideoPageFromYoutube(get)
+ else:
self.utils.showMessage(self.language(30600),
self.language(30622))
if result[u"status"] != 200:
diff --git a/plugin.video.youtube/YouTubeSubtitleControl.py
b/plugin.video.youtube/YouTubeSubtitleControl.py
index ea6bd2a..b1d9a49 100644
--- a/plugin.video.youtube/YouTubeSubtitleControl.py
+++ b/plugin.video.youtube/YouTubeSubtitleControl.py
@@ -53,7 +53,7 @@ class YouTubeSubtitleControl():
style = u""
result = u""
- if self.settings.getSetting("annotations") == "true" and not
"downloadPath" in video:
+ if self.settings.getSetting("annotations") == "true" and not
"download_path" in video:
xml = self.core._fetchPage({"link": self.urls["annotation_url"] %
get('videoid')})
if xml["status"] == 200 and xml["content"]:
(result, style) = self.transformAnnotationToSSA(xml["content"])
@@ -156,8 +156,8 @@ class YouTubeSubtitleControl():
w.close()
- if "downloadPath" in video:
- self.xbmcvfs.rename(path, os.path.join(video["downloadPath"],
filename))
+ if "download_path" in video:
+ self.xbmcvfs.rename(path, os.path.join(video["download_path"],
filename))
def getTranscriptionUrl(self, video={}):
@@ -349,7 +349,7 @@ class YouTubeSubtitleControl():
filename = self.getSubtitleFileName(video)
- download_path =
os.path.join(self.settings.getSetting("downloadPath").decode("utf-8"), filename)
+ download_path =
os.path.join(self.settings.getSetting("download_path").decode("utf-8"),
filename)
path =
os.path.join(self.xbmc.translatePath(self.settings.getAddonInfo("profile")).decode("utf-8"),
filename)
set_subtitle = False
@@ -362,7 +362,7 @@ class YouTubeSubtitleControl():
set_subtitle = True
self.common.log(u"Done trying to locate: " + path, 4)
- if self.xbmcvfs.exists(path) and not "downloadPath" in video and
set_subtitle:
+ if self.xbmcvfs.exists(path) and not "download_path" in video and
set_subtitle:
player = self.xbmc.Player()
i = 0
@@ -380,7 +380,7 @@ class YouTubeSubtitleControl():
get = params.get
result = u""
if (get("action", "") != "download"):
- path = self.settings.getSetting("downloadPath")
+ path = self.settings.getSetting("download_path")
filename = u"".join(c for c in
self.common.makeUTF8(video['Title']) if c not in self.utils.INVALID_CHARS) +
u"-[" + get('videoid') + u"]" + u".mp4"
path = os.path.join(path.decode("utf-8"), filename)
try:
diff --git a/plugin.video.youtube/addon.xml b/plugin.video.youtube/addon.xml
index 7327608..762d367 100644
--- a/plugin.video.youtube/addon.xml
+++ b/plugin.video.youtube/addon.xml
@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
-<addon id="plugin.video.youtube" name="YouTube" provider-name="TheCollective"
version="3.4.3">
+<addon id="plugin.video.youtube" name="YouTube" provider-name="TheCollective"
version="3.4.4">
<requires>
<import addon="xbmc.python" version="2.0" />
<import addon="script.module.simplejson" version="2.0.10" />
diff --git a/plugin.video.youtube/changelog.txt
b/plugin.video.youtube/changelog.txt
index 45b6246..f3a082d 100644
--- a/plugin.video.youtube/changelog.txt
+++ b/plugin.video.youtube/changelog.txt
@@ -13,6 +13,12 @@
- [XBMC] Has Excessive Memory use after running the plugin for prolonged
periods of time
- [RTMPDUMP] Doesn't support handshake type 10 which is required by youtube.
+[B]Version 3.4.4[/B]
+- Fixed playback after youtube javascript site changes
+- Fixed age verification, by making playback always do a full http login on
restricted videos since google changed their detection algorithm
+- Fixed addition of User Agent was causing problems for Windows and IOS
clients. (Thanks to m-hume on github for the fix)
+- Fixed download folder was not working for new users of the plugin. (Thanks
to Ste Robinson, for pointing this out again)
+
[B]Version 3.4.3[/B]
- Fixed login
diff --git a/plugin.video.youtube/default.py b/plugin.video.youtube/default.py
index 3bf7958..1d159c3 100644
--- a/plugin.video.youtube/default.py
+++ b/plugin.video.youtube/default.py
@@ -29,7 +29,7 @@ except ImportError:
import xbmcvfsdummy as xbmcvfs
# plugin constants
-version = "3.4.3"
+version = "3.4.4"
plugin = "YouTube-" + version
author = "TheCollective"
url = "www.xbmc.com"
-----------------------------------------------------------------------
Summary of changes:
plugin.video.bliptv/BlipTVScraper.py | 10 ++--
plugin.video.bliptv/addon.xml | 2 +-
plugin.video.bliptv/changelog.txt | 3 +
plugin.video.bliptv/default.py | 2 +-
plugin.video.youtube/YouTubeCore.py | 67 +++++++-----------------
plugin.video.youtube/YouTubeNavigation.py | 6 +-
plugin.video.youtube/YouTubePlayer.py | 15 +++---
plugin.video.youtube/YouTubeSubtitleControl.py | 12 ++--
plugin.video.youtube/addon.xml | 2 +-
plugin.video.youtube/changelog.txt | 6 ++
plugin.video.youtube/default.py | 2 +-
11 files changed, 53 insertions(+), 74 deletions(-)
hooks/post-receive
--
Plugins
------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_mar
_______________________________________________
Xbmc-addons mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xbmc-addons