The branch, eden has been updated
via bd5b21f07dad3e59b6e7a16847129aedd749f358 (commit)
from 471b17b1ad67d472a97480b97fcbc8dbd2bb1a5d (commit)
- Log -----------------------------------------------------------------
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/plugins;a=commit;h=bd5b21f07dad3e59b6e7a16847129aedd749f358
commit bd5b21f07dad3e59b6e7a16847129aedd749f358
Author: Martijn Kaijser <[email protected]>
Date: Sat May 26 22:03:06 2012 +0200
[plugin.video.mediathek] updated to 0.4.4
diff --git a/plugin.video.mediathek/addon.xml b/plugin.video.mediathek/addon.xml
index 3a7d07c..9e3df0b 100644
--- a/plugin.video.mediathek/addon.xml
+++ b/plugin.video.mediathek/addon.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<addon
id="plugin.video.mediathek"
- version="0.4.3"
+ version="0.4.4"
name="Mediathek"
provider-name="Raptor 2101 [[email protected]]">
<requires>
diff --git a/plugin.video.mediathek/changelog.txt
b/plugin.video.mediathek/changelog.txt
index b472fae..e18d8ce 100644
--- a/plugin.video.mediathek/changelog.txt
+++ b/plugin.video.mediathek/changelog.txt
@@ -1,3 +1,4 @@
+0.4.4 - FIX: Get ARD working again (base code from soern)
0.4.3 - FIX: NDR streams / NDR changed their streaming adresses by soern
0.4.2 - FIX: WDR add search function, add stream duration, add "pageSize"
optioni (Soern)
FIX: bayrisches FS podcasts eingefügt, Auswahl nach Sendungen, Suche
(Soern)
diff --git a/plugin.video.mediathek/mediathek/ard.py
b/plugin.video.mediathek/mediathek/ard.py
index 0028df2..c0f657b 100644
--- a/plugin.video.mediathek/mediathek/ard.py
+++ b/plugin.video.mediathek/mediathek/ard.py
@@ -25,24 +25,24 @@ class ARDMediathek(Mediathek):
self.menuTree = (
TreeNode("0","Neuste
Videos",self.rootLink+"/ard/servlet/content/3474442",True),
TreeNode("1","Kategorien","",False,(
-
TreeNode("1.0",u"Nachrichten",self.rootLink+"/ard/servlet/content/3516690?documentId=506",True),
- TreeNode("1.1",u"Politik &
Zeitgeschehen",self.rootLink+"/ard/servlet/content/3516690?documentId=206",True),
- TreeNode("1.2",u"Wirtschaft &
Börse",self.rootLink+"/ard/servlet/content/3516690?documentId=726",True),
-
TreeNode("1.3",u"Sport",self.rootLink+"/ard/servlet/content/3516690?documentId=618",True),
- TreeNode("1.4",u"Ratgeber &
Technik",self.rootLink+"/ard/servlet/content/3516690?documentId=636",True),
- TreeNode("1.5",u"Gesundheit &
Ernährung",self.rootLink+"/ard/servlet/content/3516690?documentId=548",True),
- TreeNode("1.6",u"Kultur &
Gesellschaft",self.rootLink+"/ard/servlet/content/3516690?documentId=564",True),
-
TreeNode("1.7",u"Musik",self.rootLink+"/ard/servlet/content/3516690?documentId=1062",True),
-
TreeNode("1.8",u"Literatur",self.rootLink+"/ard/servlet/content/3516690?documentId=1228",True),
-
TreeNode("1.9",u"Medien",self.rootLink+"/ard/servlet/content/3516690?documentId=1230",True),
- TreeNode("1.10",u"Filme &
Serien",self.rootLink+"/ard/servlet/content/3516690?documentId=546",True),
- TreeNode("1.11",u"Unterhaltung &
Lifestyle",self.rootLink+"/ard/servlet/content/3516690?documentId=1232",True),
- TreeNode("1.12",u"Comedy &
Satire",self.rootLink+"/ard/servlet/content/3516690?documentId=544",True),
- TreeNode("1.13",u"Wissen &
Bildung",self.rootLink+"/ard/servlet/content/3516690?documentId=568",True),
- TreeNode("1.14",u"Natur &
Freizeit",self.rootLink+"/ard/servlet/content/3516690?documentId=920",True),
- TreeNode("1.15",u"Kinder &
Familie",self.rootLink+"/ard/servlet/content/3516690?documentId=608",True),
- TreeNode("1.16",u"Religion &
Kirche",self.rootLink+"/ard/servlet/content/3516690?documentId=678",True),
- TreeNode("1.17",u"In der
Region",self.rootLink+"/ard/servlet/content/3516690?documentId=550",True),
+
TreeNode("1.0",u"Nachrichten",self.rootLink+"/kategorien/nachrichten?clipFilter=fernsehen&documentId=506",True),
+ TreeNode("1.1",u"Politik &
Zeitgeschehen",self.rootLink+"/ard/servlet/content/3516690?clipFilter=fernsehen&documentId=206",True),
+ TreeNode("1.2",u"Wirtschaft &
Börse",self.rootLink+"/ard/servlet/content/3516690?clipFilter=fernsehen&documentId=726",True),
+
TreeNode("1.3",u"Sport",self.rootLink+"/ard/servlet/content/3516690?clipFilter=fernsehen&documentId=618",True),
+ TreeNode("1.4",u"Ratgeber &
Technik",self.rootLink+"/kategorien/ratgeber-und-technik?clipFilter=fernsehen&documentId=636",True),
+ TreeNode("1.5",u"Gesundheit &
Ernährung",self.rootLink+"/ard/servlet/content/3516690?clipFilter=fernsehen&documentId=548",True),
+ TreeNode("1.6",u"Kultur &
Gesellschaft",self.rootLink+"/ard/servlet/content/3516690?clipFilter=fernsehen&documentId=564",True),
+
TreeNode("1.7",u"Musik",self.rootLink+"/ard/servlet/content/3516690?clipFilter=fernsehen&documentId=1062",True),
+
TreeNode("1.8",u"Literatur",self.rootLink+"/ard/servlet/content/3516690?clipFilter=fernsehen&documentId=1228",True),
+
TreeNode("1.9",u"Medien",self.rootLink+"/ard/servlet/content/3516690?clipFilter=fernsehen&documentId=1230",True),
+ TreeNode("1.10",u"Filme &
Serien",self.rootLink+"/ard/servlet/content/3516690?clipFilter=fernsehen&documentId=546",True),
+ TreeNode("1.11",u"Unterhaltung &
Lifestyle",self.rootLink+"/ard/servlet/content/3516690?clipFilter=fernsehen&documentId=1232",True),
+ TreeNode("1.12",u"Comedy &
Satire",self.rootLink+"/ard/servlet/content/3516690?clipFilter=fernsehen&documentId=544",True),
+ TreeNode("1.13",u"Wissen &
Bildung",self.rootLink+"/ard/servlet/content/3516690?clipFilter=fernsehen&documentId=568",True),
+ TreeNode("1.14",u"Natur &
Freizeit",self.rootLink+"/ard/servlet/content/3516690?clipFilter=fernsehen&documentId=920",True),
+ TreeNode("1.15",u"Kinder &
Familie",self.rootLink+"/ard/servlet/content/3516690?clipFilter=fernsehen&documentId=608",True),
+ TreeNode("1.16",u"Religion &
Kirche",self.rootLink+"/ard/servlet/content/3516690?clipFilter=fernsehen&documentId=678",True),
+ TreeNode("1.17",u"In der
Region",self.rootLink+"/ard/servlet/content/3516690?clipFilter=fernsehen&documentId=550",True),
)),
TreeNode("2","Sendungen von A-Z","",False,(
TreeNode("2.0","0-9",self.rootLink+"/ard/servlet/ajax-cache/3474820/view=list/initial=0-9/index.html",True),
@@ -75,16 +75,16 @@ class ARDMediathek(Mediathek):
)),
)
- videoDocument_link_Regex = "/ard/servlet/content/\\d*\\?documentId=\\d*"
- metaInfo_link_Regex = "/ard/servlet/ajax-cache/\\d*/view=ajax/index.html"
- ajaxDocumentLink =
"/ard/servlet/ajax-cache/\\d*/view=(switch|ajax|list)(/documentId=\\d*){0,1}/index.html"
-
+ videoDocument_link_Regex = "/.*?documentId=(\\d*)"
+ metaInfo_link_Regex =
"/ard/servlet/ajax-cache/\\d*/view=ajax(/clipFilter=fernsehen){0,1}(/isFromList=true){0,1}/index.html"
+ ajaxDocumentLink =
"/ard/servlet/ajax-cache/(\\d*)/view=(switch|ajax|list)(/clipFilter=fernsehen){0,1}(/content=fernsehen){0,1}(/documentId=\\d*){0,1}/index.html"
+ self.findImage_regex = "<img.*?src=\".*?\".*?/>"; #?
#Regex für das Parsen der hauptseiten
self.regex_ajaxLinkTag = re.compile("<a href=\""+ajaxDocumentLink+"\"
title=\"\"><span>Neueste Clips</span></a>")
self.regex_ajaxLink = re.compile(ajaxDocumentLink);
- self.regex_videoLinks = re.compile("<a
href=\""+videoDocument_link_Regex+"\" class=\".*\"
rel=\""+metaInfo_link_Regex+"\">");
+ self.regex_videoLinks =
re.compile("<img.*?src=\"(.*?)\".*?/>\\s*?</div>\\s*?<h3
class=\"mt-title\">\\s*?<a href=\""+videoDocument_link_Regex+"\" class=\".*\"
rel=\""+metaInfo_link_Regex+"\">");
self.regex_videoSeriesLinks = re.compile("<a id=\".*\" class=\".*\"
rel=\""+metaInfo_link_Regex+"\" href=\""+videoDocument_link_Regex+"\">");
- self.regex_subLinks = re.compile("<a class=\"mt-box_preload
mt-box-overflow\" href=\""+ajaxDocumentLink+"\">");
+ self.regex_subLinks = re.compile("<a class=\"mt-box_preload.*?\"
href=\""+ajaxDocumentLink+"\">");
self.regex_videoDocumentLink = re.compile(videoDocument_link_Regex);
self.regex_MetaInfo = re.compile(metaInfo_link_Regex);
self.regex_Date = re.compile("\\d{2}\\.\\d{2}\\.\\d{2}");
@@ -96,10 +96,10 @@ class ARDMediathek(Mediathek):
self.regex_pictureLink = re.compile("ard/[^\"]*");
self.regex_title = re.compile("<h3 class=\"mt-title\">.*<a.*>[^<]*?</a>")
self.regex_category = re.compile("<p class=\"mt-source\">.*</p>");
- self.regex_description = re.compile("<p
class=\"mt-description\">.*?</p>",re.DOTALL);
+ self.regex_description = re.compile("<p.*?>.*?</p>",re.DOTALL);
#regex für das extrahieren des Medialinks
- self.regex_MediaCollection =
re.compile("mediaCollection\\.addMediaStream\\(\\d*, \\d*, \".*\", \".*\"\\);");
+ self.regex_MediaCollection =
re.compile("mediaCollection\\.addMediaStream\\(\\d*, \\d*, \".*\", \".*\",
\".*?\"\\);");
self.regex_findLinks = re.compile("\".*?\"");
self.searchLink =
"http://www.ardmediathek.de/ard/servlet/content/3517006?detail=%d&s=%s"
@@ -133,10 +133,11 @@ class ARDMediathek(Mediathek):
return list(self.regex_videoLinks.finditer(resultPage));
def buildSearchResultLink(self, element, isPlayable, elementCount):
+ imageLink = element.group(1);
element = element.group()
videoDocumentLink = self.regex_videoDocumentLink.search(element).group();
metaInfoLink = self.regex_MetaInfo.search(element).group();
- displayObject = self.extractMetaInfo(self.rootLink+metaInfoLink);
+ displayObject = self.extractMetaInfo(self.rootLink+metaInfoLink,
imageLink);
if(isPlayable):
displayObject.link = self.getVideoLink(self.rootLink+videoDocumentLink);
@@ -148,7 +149,7 @@ class ARDMediathek(Mediathek):
def buildPageMenu(self, link, initCount, subLink = False):
- self.gui.log(link);
+ self.gui.log("Build Page Menu: "+link);
mainPage = self.loadPage(link);
try:
@@ -161,6 +162,7 @@ class ARDMediathek(Mediathek):
link = self.regex_ajaxLink.search(htmlTag).group();
ajaxPage = self.loadPage(self.rootLink + link);
+
return self.extractVideoObjects(ajaxPage);
except:
self.gui.log("Categorien");
@@ -182,37 +184,45 @@ class ARDMediathek(Mediathek):
elements = list(self.regex_videoLinks.finditer(mainPage));
counter = len(elements);
for element in elements:
- element = element.group()
+ imageLink = element.group(1);
+ element = element.group(0)
videoDocumentLink = self.regex_videoDocumentLink.search(element).group();
metaInfoLink = self.regex_MetaInfo.search(element).group();
- displayObject = self.extractMetaInfo(self.rootLink+metaInfoLink);
- displayObject.link = self.rootLink+videoDocumentLink;
- displayObject.isPlayable = False;
- self.gui.buildVideoLink(displayObject, self, counter);
+ displayObject = self.extractMetaInfo(self.rootLink+metaInfoLink,
imageLink);
+ if displayObject is not None:
+ displayObject.link = self.rootLink+videoDocumentLink;
+ displayObject.isPlayable = False;
+ self.gui.buildVideoLink(displayObject, self, counter);
return counter;
def extractVideoObjects(self,mainPage):
elements = list(self.regex_videoLinks.finditer(mainPage));
counter = len(elements);
for element in elements:
- element = element.group()
+
+ imageLink = element.group(1);
+ element = element.group(0)
videoDocumentLink = self.regex_videoDocumentLink.search(element).group();
metaInfoLink = self.regex_MetaInfo.search(element).group();
- displayObject = self.extractMetaInfo(self.rootLink+metaInfoLink);
+ displayObject = self.extractMetaInfo(self.rootLink+metaInfoLink,
imageLink);
displayObject.link = self.getVideoLink(self.rootLink+videoDocumentLink);
self.gui.buildVideoLink(displayObject,self, counter);
return counter;
- def extractMetaInfo(self, link):
- self.gui.log(link);
+ def extractMetaInfo(self, link, imageLink):
+ self.gui.log("MetaInfoLink %s"%link);
metaInfoPage = self.loadPage(link);
- pictureLink = self.regex_pictureLink.search(metaInfoPage).group();
+ if not metaInfoPage.find("Livestream") == -1:
+ print "Livestream"
+ return None
+
+ pictureLink = self.rootLink + imageLink;
title = self.regex_title.search(metaInfoPage).group()
title = self.replace_html.sub("",title);
title = unicode(title,"UTF-8");
-----------------------------------------------------------------------
Summary of changes:
plugin.video.mediathek/addon.xml | 2 +-
plugin.video.mediathek/changelog.txt | 1 +
plugin.video.mediathek/mediathek/ard.py | 86 +++++++++++++++++--------------
3 files changed, 50 insertions(+), 39 deletions(-)
hooks/post-receive
--
Plugins
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Xbmc-addons mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xbmc-addons