The branch, frodo has been updated
via 32d0fbc34b16300151cb0db0cfa381abb47620d9 (commit)
via d79b4096374480494559a752d597be59799d0f22 (commit)
via 5589f1bf8582a595459c45ed3a42ccac749eda9e (commit)
via d4dd0d11126f5bc54690fd0eda0a4f6c98ee7bb8 (commit)
via 5b5fcd42197d364c14d2fdbd48fdcc42e715c396 (commit)
from a21bfecd6b9faab2aa8094e8a86b775c81265891 (commit)
- Log -----------------------------------------------------------------
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/plugins;a=commit;h=32d0fbc34b16300151cb0db0cfa381abb47620d9
commit 32d0fbc34b16300151cb0db0cfa381abb47620d9
Author: beenje <[email protected]>
Date: Thu Apr 11 22:30:44 2013 +0200
[plugin.video.mediathek] updated to version 0.5.3
diff --git a/plugin.video.mediathek/addon.xml b/plugin.video.mediathek/addon.xml
index 84cf2f6..9e8f941 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.5.2"
+ version="0.5.3"
name="Mediathek"
provider-name="Raptor 2101 [[email protected]]">
<requires>
diff --git a/plugin.video.mediathek/changelog.txt
b/plugin.video.mediathek/changelog.txt
index 06d9c09..0b3c65d 100644
--- a/plugin.video.mediathek/changelog.txt
+++ b/plugin.video.mediathek/changelog.txt
@@ -1,3 +1,4 @@
+0.5.2 - FIX: adopt some specialities in the ARD Format
0.5.2 - FIX: Get all ARD features back working
0.5.1 - FIX: Get ARD working again (without "Sendungen A-Z")
0.5.0 - FIX: ORF-Program listing is parsed from Webseite instead of being
hardcoded
diff --git a/plugin.video.mediathek/mediathek/ard.py
b/plugin.video.mediathek/mediathek/ard.py
index f3b2c2e..fdb835f 100644
--- a/plugin.video.mediathek/mediathek/ard.py
+++ b/plugin.video.mediathek/mediathek/ard.py
@@ -160,18 +160,21 @@ class ARDMediathek(Mediathek):
else:
self.gui.log("Search AjaxLinks");
for htmlTag in self.regex_ajaxLinkTag.finditer(mainPage):
- htmlTag = self.regex_ajaxLinkTag.search(htmlTag.group()).group();
- link = self.regex_ajaxLink.search(htmlTag).group();
- ajaxPage = self.loadPage(self.rootLink + link);
- elementCount = self.extractVideoObjects(ajaxPage);
- if(elementCount == 0):
- self.gui.log("no video objects found - retry search for ajax
link");
- htmlTag = self.regex_ajaxLinkTag.search(ajaxPage);
- if(htmlTag is not None):
- htmlTag = htmlTag.group();
- link = self.regex_ajaxLink.search(htmlTag).group();
- ajaxPage = self.loadPage(self.rootLink + link);
- elementCount = self.extractVideoObjects(ajaxPage);
+ try:
+ htmlTag = self.regex_ajaxLinkTag.search(htmlTag.group()).group();
+ link = self.regex_ajaxLink.search(htmlTag).group();
+ ajaxPage = self.loadPage(self.rootLink + link);
+ elementCount = self.extractVideoObjects(ajaxPage);
+ if(elementCount == 0):
+ self.gui.log("no video objects found - retry search for ajax
link");
+ htmlTag = self.regex_ajaxLinkTag.search(ajaxPage);
+ if(htmlTag is not None):
+ htmlTag = htmlTag.group();
+ link = self.regex_ajaxLink.search(htmlTag).group();
+ ajaxPage = self.loadPage(self.rootLink + link);
+ elementCount = self.extractVideoObjects(ajaxPage);
+ except:
+ continue;
except:
elementCount = 0;
if(elementCount == 0):
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/plugins;a=commit;h=d79b4096374480494559a752d597be59799d0f22
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/plugins;a=commit;h=5589f1bf8582a595459c45ed3a42ccac749eda9e
commit 5589f1bf8582a595459c45ed3a42ccac749eda9e
Author: beenje <[email protected]>
Date: Thu Apr 11 22:30:41 2013 +0200
[plugin.video.myvideo_de] updated to version 0.2.2
diff --git a/plugin.video.myvideo_de/addon.py b/plugin.video.myvideo_de/addon.py
index 4bc7f78..b928e34 100644
--- a/plugin.video.myvideo_de/addon.py
+++ b/plugin.video.myvideo_de/addon.py
@@ -104,7 +104,7 @@ def __add_items(entries):
title = '>> %s %s >>' % (_('page'), entry['title'])
items.append({
'label': title,
- 'icon': 'DefaultFolder.png',
+ 'thumbnail': 'DefaultFolder.png',
'path': plugin.url_for(
endpoint='show_path',
path=entry['path']
@@ -113,7 +113,7 @@ def __add_items(entries):
elif entry['is_folder']:
items.append({
'label': entry['title'],
- 'icon': entry.get('thumb', 'DefaultFolder.png'),
+ 'thumbnail': entry.get('thumb', 'DefaultFolder.png'),
'path': plugin.url_for(
endpoint='show_path',
path=entry['path']
@@ -126,7 +126,7 @@ def __add_items(entries):
)
items.append({
'label': entry['title'],
- 'icon': entry.get('thumb', 'DefaultVideo.png'),
+ 'thumbnail': entry.get('thumb', 'DefaultVideo.png'),
'info': {
'plot': entry.get('description', ''),
'studio': entry.get('username', ''),
@@ -171,6 +171,9 @@ def download_video(video_id):
sd = SimpleDownloader.SimpleDownloader()
video = scraper.get_video(video_id)
filename = __get_legal_filename(video['title'])
+ if 'hls_playlist' in video:
+ plugin.notify(_('Download not supported'))
+ return
if not video['rtmpurl']:
params = {
'url': video['filepath'] + video['file'],
@@ -193,6 +196,9 @@ def download_video(video_id):
@plugin.route('/video/<video_id>/play')
def watch_video(video_id):
video = scraper.get_video(video_id)
+ if 'hls_playlist' in video:
+ __log('watch_video using HLS')
+ video_url = video['hls_playlist']
if not video['rtmpurl']:
__log('watch_video using FLV')
video_url = video['filepath'] + video['file']
diff --git a/plugin.video.myvideo_de/addon.xml
b/plugin.video.myvideo_de/addon.xml
index 6bc5716..ee406a5 100644
--- a/plugin.video.myvideo_de/addon.xml
+++ b/plugin.video.myvideo_de/addon.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<addon id="plugin.video.myvideo_de" name="MyVideo.de" version="0.2.1"
provider-name="Tristan Fischer ([email protected])">
+<addon id="plugin.video.myvideo_de" name="MyVideo.de" version="0.2.2"
provider-name="Tristan Fischer ([email protected])">
<requires>
<import addon="xbmc.python" version="2.1.0"/>
<import addon="script.module.xbmcswift2" version="2.4.0"/>
diff --git a/plugin.video.myvideo_de/changelog.txt
b/plugin.video.myvideo_de/changelog.txt
index 9d29cfc..18713f5 100644
--- a/plugin.video.myvideo_de/changelog.txt
+++ b/plugin.video.myvideo_de/changelog.txt
@@ -1,3 +1,7 @@
+0.2.2 (11.04.2013)
+ - added possibility to play HLS videos
+ - fixed thumbnails in fullscreen OSD
+
0.2.1 (04.04.2013)
- added download possibility (rtmpdump binary needed!)
- updated translations
diff --git a/plugin.video.myvideo_de/resources/lib/scraper.py
b/plugin.video.myvideo_de/resources/lib/scraper.py
index 29c002d..9530c48 100644
--- a/plugin.video.myvideo_de/resources/lib/scraper.py
+++ b/plugin.video.myvideo_de/resources/lib/scraper.py
@@ -158,8 +158,8 @@ def get_video(video_id):
encxml = ''
videopage_url = MAIN_URL + 'watch/%s/' % video_id
html = __get_url(videopage_url, MAIN_URL)
- video['title'] = re.search(r_title, html).group(1)
- sec = re.search(r_adv, html).group(1)
+ video['title'] = r_title.search(html).group(1)
+ sec = r_adv.search(html).group(1)
for (a, b) in re.findall(r_adv_p, sec):
if not a == '_encxml':
params[a] = b
@@ -178,24 +178,25 @@ def get_video(video_id):
enc_data_b = unhexlify(enc_data)
sk = __md5(b64decode(b64decode(GK)) + __md5(str(video_id)))
dec_data = __rc4crypt(enc_data_b, sk)
- rtmpurl = re.search(r_rtmpurl, dec_data).group(1)
+ rtmpurl = r_rtmpurl.search(dec_data).group(1)
video['rtmpurl'] = unquote(rtmpurl)
if 'myvideo2flash' in video['rtmpurl']:
__log('get_video forcing RTMPT')
video['rtmpurl'] = video['rtmpurl'].replace('rtmpe://', 'rtmpt://')
- playpath = re.search(r_playpath, dec_data).group(1)
+ playpath = r_playpath.search(dec_data).group(1)
video['file'] = unquote(playpath)
+ m_filepath = r_path.search(dec_data)
+ video['filepath'] = m_filepath.group(1)
if not video['file'].endswith('f4m'):
ppath, prefix = unquote(playpath).split('.')
video['playpath'] = '%s:%s' % (prefix, ppath)
else:
- raise NotImplementedError
- video['playpath'] = video['file']
- swfobj = re.search(r_swf, html).group(1)
+ video['hls_playlist'] = (
+ video['filepath'] + video['file']
+ ).replace('.f4m', '.m3u8')
+ swfobj = r_swf.search(html).group(1)
video['swfobj'] = unquote(swfobj)
video['pageurl'] = videopage_url
- m_filepath = re.search(r_path, dec_data)
- video['filepath'] = m_filepath.group(1)
return video
@@ -442,7 +443,7 @@ def __parse_channels(tree):
'a', {'class': 'pView pSmaller pnBack'}
)
if prev_link:
- link = re.search(r_pagelink, prev_link['onclick']).group(1)
+ link = r_pagelink.search(prev_link['onclick']).group(1)
items.append({
'title': prev_link['title'],
'pagenination': 'PREV',
@@ -452,7 +453,7 @@ def __parse_channels(tree):
'a', {'class': 'pView pSmaller pnNext'}
)
if next_link:
- link = re.search(r_pagelink, next_link['onclick']).group(1)
+ link = r_pagelink.search(next_link['onclick']).group(1)
items.append({
'title': next_link['title'],
'pagenination': 'NEXT',
@@ -484,7 +485,7 @@ def __parse_channels(tree):
if pagination:
prev_link = pagination.find('a', {'class': 'pView pnBack'})
if prev_link:
- link = re.search(r_pagelink, prev_link['onclick']).group(1)
+ link = r_pagelink.search(prev_link['onclick']).group(1)
items.append({
'title': prev_link['title'],
'pagenination': 'PREV',
@@ -492,7 +493,7 @@ def __parse_channels(tree):
})
next_link = pagination.find('a', {'class': 'pView pnNext'})
if next_link:
- link = re.search(r_pagelink, next_link['onclick']).group(1)
+ link = r_pagelink.search(next_link['onclick']).group(1)
items.append({
'title': next_link['title'],
'pagenination': 'NEXT',
@@ -549,7 +550,7 @@ def __parse_movies(tree):
if pagination:
prev_link = pagination.find('a', {'class': 'pView pnBack'})
if prev_link:
- link = re.search(r_pagelink, prev_link['onclick']).group(1)
+ link = r_pagelink.search(prev_link['onclick']).group(1)
items.append({
'title': prev_link['title'],
'pagenination': 'PREV',
@@ -557,7 +558,7 @@ def __parse_movies(tree):
})
next_link = pagination.find('a', {'class': 'pView pnNext'})
if next_link:
- link = re.search(r_pagelink, next_link['onclick']).group(1)
+ link = r_pagelink.search(next_link['onclick']).group(1)
items.append({
'title': next_link['title'],
'pagenination': 'NEXT',
@@ -635,7 +636,7 @@ def __format_length(length_str):
def __detect_folder(path):
video_id = None
is_folder = True
- m_id = re.search(R_ID, path)
+ m_id = R_ID.search(path)
if m_id:
video_id = m_id.group(1)
is_folder = False
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/plugins;a=commit;h=d4dd0d11126f5bc54690fd0eda0a4f6c98ee7bb8
commit d4dd0d11126f5bc54690fd0eda0a4f6c98ee7bb8
Author: beenje <[email protected]>
Date: Thu Apr 11 22:30:35 2013 +0200
[plugin.video.neterratv] updated to version 0.1.9
diff --git a/plugin.video.neterratv/addon.xml b/plugin.video.neterratv/addon.xml
index b924b2d..f1270be 100644
--- a/plugin.video.neterratv/addon.xml
+++ b/plugin.video.neterratv/addon.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<addon id="plugin.video.neterratv" name="Neterra.TV" version="0.0.8"
provider-name="[email protected]">
+<addon id="plugin.video.neterratv" name="Neterra.TV" version="0.1.9"
provider-name="[email protected]">
<requires>
<import addon="xbmc.python" version="2.1.0"/>
<import addon="script.module.xbmcswift" version="0.2.0"/>
@@ -14,12 +14,13 @@
<summary lang="de">Video plugin für Neterra.TV
http://www.neterra.tv/</summary>
<description lang="en">
This plugin provides access to tv videos streams from Neterra.TV.
- Note: Neterra.TV account is required.
- </description>
+ Note: Neterra.TV account is required.</description>
<description lang="de">
Dieses plugin bietet Zugriff auf alle Videos Streams from Neterra.TV.
- Note: Neterra.TV Benutzer ist erforderlich.
- </description>
+ Note: Neterra.TV Benutzer ist erforderlich.</description>
<disclaimer lang="en">You have to sign up and pay to access Neterra.TV TV
streams</disclaimer>
+ <website></website>
+ <source>git://github.com/mrolix/plugin.video.neterratv.git</source>
+ <email>[email protected]</email>
</extension>
</addon>
\ No newline at end of file
diff --git a/plugin.video.neterratv/changelog.txt
b/plugin.video.neterratv/changelog.txt
index 6301949..7699cdb 100644
--- a/plugin.video.neterratv/changelog.txt
+++ b/plugin.video.neterratv/changelog.txt
@@ -30,3 +30,6 @@ Todo: Need function to delete cookie file
0.0.8
- changed code to work with new neterra website using flashplayer
- some code make-up
+
+0.1.9
+- increased version number to Frodo version
\ No newline at end of file
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/plugins;a=commit;h=5b5fcd42197d364c14d2fdbd48fdcc42e715c396
commit 5b5fcd42197d364c14d2fdbd48fdcc42e715c396
Author: beenje <[email protected]>
Date: Thu Apr 11 22:30:34 2013 +0200
[plugin.video.day9] updated to version 2.1.5
diff --git a/plugin.video.day9/addon.xml b/plugin.video.day9/addon.xml
index 13e31d4..f2d6242 100644
--- a/plugin.video.day9/addon.xml
+++ b/plugin.video.day9/addon.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="plugin.video.day9"
name="Day[9].tv archive"
- version="2.1.4"
+ version="2.1.5"
provider-name="Robert">
<requires>
<import addon="xbmc.python" version='2.1.0'/>
@@ -18,5 +18,11 @@
<platform>all</platform>
<summary>Day[9].tv Archive</summary>
<description>Casts from the awesome guy Sean "Day[9]" Plott teaching "How
to be a better gamer" in Starcraft.</description>
+ <license>GNU AFFERO GENERAL PUBLIC LICENSE. Version 3, November
+2007</license>
+ <forum>http://forum.xbmc.org/showthread.php?tid=143022</forum>
+ <website>https://github.com/rfdrake/xbmc-plugin-day9tv</website>
+ <source>https://github.com/rfdrake/xbmc-plugin-day9tv.git</source>
+ <email>rfdrake at gmail</email>
</extension>
</addon>
diff --git a/plugin.video.day9/changelog.txt b/plugin.video.day9/changelog.txt
index 97a1f42..a7818e8 100644
--- a/plugin.video.day9/changelog.txt
+++ b/plugin.video.day9/changelog.txt
@@ -1,5 +1,9 @@
+v2.1.5
+- fixed encoding issues again caused by quoted '+' in the base64. (patch from
cpher)
+ Scrapes links when videos are not embedded (cpher)
+
v2.1.4
-- fix for addon.xml being encoded wrong
+- fixed some DOS encoded CRLF files
v2.1.3
- hopefully permanently fixed encoding issues with the URL/title by base64
encoding them between menu screens
diff --git a/plugin.video.day9/day9.py b/plugin.video.day9/day9.py
index d2b50e9..bc1bc20 100644
--- a/plugin.video.day9/day9.py
+++ b/plugin.video.day9/day9.py
@@ -95,7 +95,7 @@ class Day9:
def showTitles(self, params = {}):
get = params.get
- link = self.getRequest(base64.decodestring(get("url")))
+ link = self.getRequest(base64.decodestring(urllib.unquote(get("url"))))
tree = BeautifulSoup(link, convertEntities=BeautifulSoup.HTML_ENTITIES)
# narrow down the search to get rid of upcoming shows
# I'd like to add them just to inform people of what/when things are
@@ -118,10 +118,10 @@ class Day9:
def showGames(self, params = {}):
get = params.get
- link = self.getRequest(base64.decodestring(get("url")))
+ link = self.getRequest(base64.decodestring(urllib.unquote(get("url"))))
tree = BeautifulSoup(link)
airdate = tree.find('time')
- title = base64.decodestring(get("title"))
+ title = base64.decodestring(urllib.unquote(get("title")))
try:
description = tree.find(text='Description').findNext('p')
except:
@@ -131,6 +131,14 @@ class Day9:
v=re.match('http://www.youtube.com/embed/(.*)', video.get('src'))
i=i+1
self.addVideo(str(title)+' Part '+str(i), youtubeid=v.group(1),
description=description)
+ if i == 0:
+ # No embedded videos, try scraping links
+ for L in tree.findAll('a'):
+ m = re.match('http://www.youtube.com/watch\?v=(.*)',
L.get('href', ''))
+ if m:
+ print "Matched"
+ vid_title = L.string if L.string is not None else 'Part
%d'%i
+ self.addVideo(str(title)+' - ' + vid_title,
youtubeid=m.group(1), description=description)
def showVideo(self, params = {}):
get = params.get
-----------------------------------------------------------------------
Summary of changes:
plugin.video.day9/addon.xml | 8 +-
plugin.video.day9/changelog.txt | 6 +-
plugin.video.day9/day9.py | 14 +-
plugin.video.mediathek/addon.xml | 2 +-
plugin.video.mediathek/changelog.txt | 1 +
plugin.video.mediathek/mediathek/ard.py | 27 +-
plugin.video.myvideo_de/addon.py | 12 +-
plugin.video.myvideo_de/addon.xml | 2 +-
plugin.video.myvideo_de/changelog.txt | 4 +
plugin.video.myvideo_de/resources/lib/scraper.py | 33 +-
plugin.video.neterratv/addon.xml | 11 +-
plugin.video.neterratv/changelog.txt | 3 +
.../LICENSE.txt | 0
plugin.video.trakt_list_manager/addon.py | 481 ++++++++++++++++++++
plugin.video.trakt_list_manager/addon.xml | 21 +
plugin.video.trakt_list_manager/changelog.txt | 19 +
plugin.video.trakt_list_manager/icon.png | Bin 0 -> 6095 bytes
.../resources}/__init__.py | 0
.../resources/language/English/strings.xml | 43 ++
.../resources/lib}/__init__.py | 0
.../resources/lib/api.py | 200 ++++++++
.../resources/settings.xml | 8 +
22 files changed, 852 insertions(+), 43 deletions(-)
copy {plugin.audio.booksshouldbefree_com =>
plugin.video.trakt_list_manager}/LICENSE.txt (100%)
create mode 100644 plugin.video.trakt_list_manager/addon.py
create mode 100644 plugin.video.trakt_list_manager/addon.xml
create mode 100644 plugin.video.trakt_list_manager/changelog.txt
create mode 100644 plugin.video.trakt_list_manager/icon.png
copy {plugin.audio.qobuz/resources/lib/qobuz/gui =>
plugin.video.trakt_list_manager/resources}/__init__.py (100%)
create mode 100644
plugin.video.trakt_list_manager/resources/language/English/strings.xml
copy {plugin.audio.qobuz/resources/lib/qobuz/gui =>
plugin.video.trakt_list_manager/resources/lib}/__init__.py (100%)
create mode 100644 plugin.video.trakt_list_manager/resources/lib/api.py
create mode 100644 plugin.video.trakt_list_manager/resources/settings.xml
hooks/post-receive
--
Plugins
------------------------------------------------------------------------------
Precog is a next-generation analytics platform capable of advanced
analytics on semi-structured data. The platform includes APIs for building
apps and a phenomenal toolset for data science. Developers can use
our toolset for easy data analysis & visualization. Get a free account!
http://www2.precog.com/precogplatform/slashdotnewsletter
_______________________________________________
Xbmc-addons mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xbmc-addons