The branch, frodo has been updated
via 0cc20e32923a2b24a47bf2da6a55697162078724 (commit)
from dc67eb170a66e4976640e7216da20f07f35e64a0 (commit)
- Log -----------------------------------------------------------------
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/plugins;a=commit;h=0cc20e32923a2b24a47bf2da6a55697162078724
commit 0cc20e32923a2b24a47bf2da6a55697162078724
Author: beenje <[email protected]>
Date: Fri Dec 13 00:20:31 2013 +0100
[plugin.video.arte_tv] updated to version 2.0.5
diff --git a/plugin.video.arte_tv/addon.xml b/plugin.video.arte_tv/addon.xml
index 607bffb..34062d0 100644
--- a/plugin.video.arte_tv/addon.xml
+++ b/plugin.video.arte_tv/addon.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<addon id="plugin.video.arte_tv" name="Arte.tv" version="2.0.4"
provider-name="AddonScriptorDE">
+<addon id="plugin.video.arte_tv" name="Arte.tv" version="2.0.5"
provider-name="AddonScriptorDE">
<requires>
<import addon="xbmc.python" version="2.1.0"/>
</requires>
@@ -12,13 +12,13 @@
<summary lang="en">ARTE Media Library (DE/FR)</summary>
<summary lang="fr">ARTE médiathèque (DE/FR)</summary>
<language>de fr</language>
- <description lang="de">ARTE Mediathek (DE/FR)</description>
- <description lang="en">ARTE Media Library (DE/FR)</description>
- <description lang="fr">ARTE médiathèque (DE/FR)</description>
- <disclaimer lang="en">Some parts of this addon may not be legal in
your country of residence - please check with your local laws before
installing.</disclaimer>
- <website>http://www.arte.tv</website>
+ <description lang="de">Videos aus der ARTE Mediathek anschauen +
Livestream (DE/FR)</description>
+ <description lang="en">Watch Videos from the ARTE Media Library +
Livestream (DE/FR)</description>
+ <description lang="fr">Regarder des vidéos de la ARTE médiathèque +
Livestream (DE/FR)</description>
+ <license>GNU GENERAL PUBLIC LICENSE. Version 2, June 1991</license>
<source>https://github.com/AddonScriptorDE/plugin.video.arte_tv</source>
<forum>http://forum.xbmc.org/showthread.php?tid=132563</forum>
<email>AddonScriptorDE at yahoo dot de</email>
+ <website>http://www.arte.tv</website>
</extension>
</addon>
diff --git a/plugin.video.arte_tv/changelog.txt
b/plugin.video.arte_tv/changelog.txt
index d1a3da2..8536b63 100644
--- a/plugin.video.arte_tv/changelog.txt
+++ b/plugin.video.arte_tv/changelog.txt
@@ -12,3 +12,6 @@
- Added support for HD videos
1.0.4 / 2.0.4
- Added Arte Livestream
+2.0.5
+- Changed streaming type
+- Changed default view
diff --git a/plugin.video.arte_tv/default.py b/plugin.video.arte_tv/default.py
index 88ddb26..f03f357 100644
--- a/plugin.video.arte_tv/default.py
+++ b/plugin.video.arte_tv/default.py
@@ -6,6 +6,7 @@ import socket
import sys
import re
import os
+import json
import xbmcplugin
import xbmcaddon
import xbmcgui
@@ -15,10 +16,10 @@ socket.setdefaulttimeout(30)
pluginhandle = int(sys.argv[1])
addonID = "plugin.video.arte_tv"
addon = xbmcaddon.Addon(id=addonID)
-translation = addon.getLocalizedString
-forceViewMode = addon.getSetting("forceViewMode") == "true"
+forceViewMode = addon.getSetting("forceView") == "true"
useThumbAsFanart = addon.getSetting("useThumbAsFanart") == "true"
-viewMode = str(addon.getSetting("viewMode"))
+viewMode = str(addon.getSetting("viewID"))
+icon = xbmc.translatePath('special://home/addons/'+addonID+'/icon.png')
baseUrl = "http://www.arte.tv"
while (not
os.path.exists(xbmc.translatePath("special://profile/addon_data/"+addonID+"/settings.xml"))):
@@ -40,43 +41,88 @@ def index():
addDir(translation(30007), "by_date", "listCats", "")
addDir(translation(30008), "", "search", "")
addDir(translation(30012), "", "listWebLiveMain", "")
- addLink(translation(30009), "", "playLiveStream", "")
+ addLink(translation(30009), "", "playLiveStream", icon)
xbmcplugin.endOfDirectory(pluginhandle)
-def listVideosOld(url):
- urlMain = url
+def listVideosNew(url):
+ xbmcplugin.setContent(pluginhandle, "episodes")
content = getUrl(url)
- spl = content.split('<div class="video">')
- for i in range(1, len(spl), 1):
- entry = spl[i]
- match = re.compile('<p>(.+?)</p>', re.DOTALL).findall(entry)
- date = ""
- if match:
- date = match[0]
- match = re.compile('<p class="teaserText">(.+?)</p>',
re.DOTALL).findall(entry)
- desc = ""
- if match:
- desc = cleanTitle(match[0])
- desc = date+"\n"+desc
- match = re.compile('<h2><a href="(.+?)">(.+?)</a></h2>',
re.DOTALL).findall(entry)
- url = "http://videos.arte.tv"+match[0][0]
- title = cleanTitle(match[0][1])
- entry = entry[entry.find('class="thumbnail"'):]
- match = re.compile('src="(.+?)"', re.DOTALL).findall(entry)
- thumb = "http://videos.arte.tv"+match[0]
- addLink(title, url, 'playVideo', thumb, desc, "")
+ content = json.loads(content)
+ for item in content["videos"]:
+ title = item["title"].encode('utf-8')
+ try:
+ desc = item["desc"].encode('utf-8')
+ except:
+ desc = ""
+ try:
+ duration = str(item["duration"])
+ except:
+ duration = ""
+ try:
+ date = item["airdate_long"].encode('utf-8')
+ except:
+ date = ""
+ try:
+ url = item["url"]
+ except:
+ url = ""
+ try:
+ thumb = item["image_url"]
+ except:
+ thumb = ""
+ try:
+ channels = item["video_channels"].encode('utf-8')
+ except:
+ channels = ""
+ try:
+ views = str(item["video_views"])
+ except:
+ views = ""
+ try:
+ until = item["video_rights_until"].encode('utf-8')
+ except:
+ until = ""
+ try:
+ rank = str(item["video_rank"])
+ except:
+ rank = ""
+ desc = views+" | "+date+"\n"+channels+"\n"+desc
+ addLink(cleanTitle(title), baseUrl+url, 'playVideoNew', thumb, desc,
duration)
xbmcplugin.endOfDirectory(pluginhandle)
if forceViewMode:
xbmc.executebuiltin('Container.SetViewMode('+viewMode+')')
-def listVideosNew(url):
- content = getUrl(url)
- match =
re.compile('\\{"image_url":"(.+?)","title":"(.+?)","duration":(.+?),"airdate_long":"(.+?)","desc":(.*?),"url":"(.+?)","video_channels":"(.*?)","video_views":"(.+?)","video_rights_until":"(.+?)","video_rank":(.*?)\\}',
re.DOTALL).findall(content)
- for thumb, title, duration, date, desc, url, channels, views, until, rank
in match:
- desc = views+" |
"+date+"\n"+channels+"\n"+cleanTitle(desc).replace('"', '').replace("null", "")
- addLink(cleanTitle(title), baseUrl+url, 'playVideoNew', thumb, desc,
duration)
+def listSearchVideos(urlMain):
+ xbmcplugin.setContent(pluginhandle, "episodes")
+ try:
+ content = getUrl(urlMain)
+ spl = content.split('<div class="video-block has-play"')
+ for i in range(1, len(spl), 1):
+ entry = spl[i]
+ match = re.compile('alt="(.+?)"', re.DOTALL).findall(entry)
+ title = cleanTitle(match[0])
+ match = re.compile('data-description="(.+?)"',
re.DOTALL).findall(entry)
+ desc = ""
+ if match:
+ desc = cleanTitle(match[0])
+ match = re.compile('<p class="time-row">.+?<span
class=".+?">.+?</span>(.+?)</p>.+?<p class=".+?">.+?<span
class=".+?">.+?</span>(.+?)</p>', re.DOTALL).findall(entry)
+ if match:
+ date = match[0][0].strip()
+ desc = date+"\n"+desc
+ duration = match[0][1].strip()
+ duration = duration.split(" ")[0]
+ match = re.compile('href="(.+?)"', re.DOTALL).findall(entry)
+ url = match[0]
+ match = re.compile('src="(.+?)"', re.DOTALL).findall(entry)
+ thumb = match[0]
+ addLink(title, url, 'playVideoNew', thumb, desc, duration)
+ currentPage = urlMain[urlMain.find("page=")+5:]
+ nextPage = str(int(currentPage)+1)
+ addDir(translation(30010),
urlMain.replace("page="+currentPage,"page="+nextPage), "listSearchVideos", "")
+ except:
+ pass
xbmcplugin.endOfDirectory(pluginhandle)
if forceViewMode:
xbmc.executebuiltin('Container.SetViewMode('+viewMode+')')
@@ -95,19 +141,19 @@ def listCats(type):
def search():
- keyboard = xbmc.Keyboard('', translation(30005))
+ keyboard = xbmc.Keyboard('', translation(30008))
keyboard.doModal()
if keyboard.isConfirmed() and keyboard.getText():
search_string = keyboard.getText().replace(" ", "+")
if language == "de":
- url =
"http://videos.arte.tv/de/do_search/videos/suche?q="+search_string
+ url =
"http://www.arte.tv/guide/de/suchergebnisse?keyword="+search_string+"&page=1"
elif language == "fr":
- url =
"http://videos.arte.tv/fr/do_search/videos/recherche?q="+search_string
- listVideosOld(url)
+ url =
"http://www.arte.tv/guide/fr/resultats-de-recherche?keyword="+search_string+"&page=1"
+ listSearchVideos(url)
def searchWebLive():
- keyboard = xbmc.Keyboard('', translation(30005))
+ keyboard = xbmc.Keyboard('', translation(30008))
keyboard.doModal()
if keyboard.isConfirmed() and keyboard.getText():
search_string = keyboard.getText().replace(" ", "+")
@@ -163,42 +209,22 @@ def listWebLive(url):
xbmc.executebuiltin('Container.SetViewMode('+viewMode+')')
-def playVideo(url):
- url = url.replace("/videos/", "/do_delegate/videos/").replace(".html",
",view,asPlayerXml.xml")
- content = getUrl(url)
- match = re.compile('<video lang="'+language+'" ref="(.+?)"',
re.DOTALL).findall(content)
- url = match[0]
- content = getUrl(url)
- match1 = re.compile('<url quality="hd">(.+?)</url>',
re.DOTALL).findall(content)
- match2 = re.compile('<url quality="sd">(.+?)</url>',
re.DOTALL).findall(content)
- urlNew = ""
- if match1:
- urlNew = match1[0]
- elif match2:
- urlNew = match2[0]
- if urlNew != "":
- urlNew = urlNew.replace("MP4:", "mp4:")
- base = urlNew[:urlNew.find("mp4:")]
- playpath = urlNew[urlNew.find("mp4:"):]
- listitem = xbmcgui.ListItem(path=base+" playpath="+playpath+" swfVfy=1
swfUrl=http://videos.arte.tv/blob/web/i18n/view/player_24-3188338-data-5168030.swf")
- xbmcplugin.setResolvedUrl(pluginhandle, True, listitem)
+def playVideoNew(url):
+ listitem = xbmcgui.ListItem(path=getStreamUrlNew(url))
+ xbmcplugin.setResolvedUrl(pluginhandle, True, listitem)
-def playVideoNew(url):
+def getStreamUrlNew(url):
content = getUrl(url)
match = re.compile('arte_vp_url="(.+?)">', re.DOTALL).findall(content)
- url = match[0]
+ url = match[0].replace("/player/","/")
content = getUrl(url)
- match1 = re.compile('"RTMP_SQ_1":\\{"quality":"HD -
720p","width":.+?,"height":.+?,"mediaType":"rtmp","mimeType":"application/x-fcs","bitrate":.+?,"streamer":"(.+?)","url":"(.+?)"',
re.DOTALL).findall(content)
- match2 = re.compile('"RTMP_MQ_1":\\{"quality":"SD -
400p","width":.+?,"height":.+?,"mediaType":"rtmp","mimeType":"application/x-fcs","bitrate":.+?,"streamer":"(.+?)","url":"(.+?)"',
re.DOTALL).findall(content)
+ match1 = re.compile('"HBBTV","VQU":"SQ","VMT":"mp4","VUR":"(.+?)"',
re.DOTALL).findall(content)
+ match2 = re.compile('"HBBTV","VQU":"EQ","VMT":"mp4","VUR":"(.+?)"',
re.DOTALL).findall(content)
if match1 and maxVideoQuality == "720p":
- base = match1[0][0]
- playpath = match1[0][1]
+ return match1[0]
elif match2:
- base = match2[0][0]
- playpath = match2[0][1]
- listitem = xbmcgui.ListItem(path=base+" playpath=mp4:"+playpath)
- xbmcplugin.setResolvedUrl(pluginhandle, True, listitem)
+ return match2[0]
def queueVideo(url, name):
@@ -263,6 +289,10 @@ def getUrl(url, cookie=None):
return link
+def translation(id):
+ return addon.getLocalizedString(id).encode('utf-8')
+
+
def parameters_string_to_dict(parameters):
paramDict = {}
if parameters:
@@ -280,7 +310,7 @@ def addLink(name, url, mode, iconimage, desc="",
duration=""):
liz = xbmcgui.ListItem(name, iconImage="DefaultVideo.png",
thumbnailImage=iconimage)
liz.setInfo(type="Video", infoLabels={"Title": name, "Plot": desc,
"Duration": duration})
liz.setProperty('IsPlayable', 'true')
- if useThumbAsFanart:
+ if useThumbAsFanart and iconimage!=icon:
liz.setProperty("fanart_image", iconimage)
liz.addContextMenuItems([(translation(30020),
'RunPlugin(plugin://'+addonID+'/?mode=queueVideo&url='+urllib.quote_plus(u)+'&name='+urllib.quote_plus(name)+')',)])
ok = xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]), url=u,
listitem=liz)
@@ -300,14 +330,12 @@ mode = urllib.unquote_plus(params.get('mode', ''))
url = urllib.unquote_plus(params.get('url', ''))
name = urllib.unquote_plus(params.get('name', ''))
-if mode == 'listVideos':
- listVideos(url)
-elif mode == 'listVideosNew':
+if mode == 'listVideosNew':
listVideosNew(url)
+elif mode == 'listSearchVideos':
+ listSearchVideos(url)
elif mode == 'listCats':
listCats(url)
-elif mode == 'playVideo':
- playVideo(url)
elif mode == 'queueVideo':
queueVideo(url, name)
elif mode == 'playVideoNew':
diff --git a/plugin.video.arte_tv/resources/language/English/strings.xml
b/plugin.video.arte_tv/resources/language/English/strings.xml
index 9161df8..5bb66e6 100644
--- a/plugin.video.arte_tv/resources/language/English/strings.xml
+++ b/plugin.video.arte_tv/resources/language/English/strings.xml
@@ -14,9 +14,9 @@
<string id="30012">Concerts</string>
<string id="30013">Pop, Rock, Electro</string>
<string id="30014">Classic</string>
- <string id="30015">Jazz & Blues</string>
+ <string id="30015">Jazz & Blues</string>
<string id="30016">World Music</string>
- <string id="30017">Theater & Dance</string>
+ <string id="30017">Theater & Dance</string>
<string id="30018">Video is not available yet</string>
<string id="30019">Video is no longer available</string>
<string id="30020">Add to queue</string>
diff --git a/plugin.video.arte_tv/resources/language/German/strings.xml
b/plugin.video.arte_tv/resources/language/German/strings.xml
index 1cd6286..df28bdd 100644
--- a/plugin.video.arte_tv/resources/language/German/strings.xml
+++ b/plugin.video.arte_tv/resources/language/German/strings.xml
@@ -14,7 +14,7 @@
<string id="30012">Konzerte</string>
<string id="30018">Video ist noch nicht verfuegbar</string>
<string id="30019">Video ist nicht mehr verfuegbar</string>
- <string id="30020">Zu Wiedergabeliste hinzufügen</string>
+ <string id="30020">In Abspielliste einreihen</string>
<string id="30101">Sprache (Videos)</string>
<string id="30104">View erzwingen</string>
<string id="30106">Maximale Videoqualität</string>
diff --git a/plugin.video.arte_tv/resources/settings.xml
b/plugin.video.arte_tv/resources/settings.xml
index 7cdd3b9..6184b04 100644
--- a/plugin.video.arte_tv/resources/settings.xml
+++ b/plugin.video.arte_tv/resources/settings.xml
@@ -1,7 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<settings>
<setting id="language" type="enum" label="30101" values="DE|FR"/>
<setting id="maxVideoQuality" type="enum" label="30106" values="480p|720p"
default="1"/>
<setting id="useThumbAsFanart" type="bool" label="30107" default="true"/>
- <setting id="forceViewMode" type="bool" label="30104" default="true"/>
- <setting id="viewMode" type="number" label="30105" default="500"/>
+ <setting id="forceView" type="bool" label="30104" default="true"/>
+ <setting id="viewID" type="number" label="30105" default="503"/>
</settings>
-----------------------------------------------------------------------
Summary of changes:
plugin.video.arte_tv/addon.xml | 12 +-
plugin.video.arte_tv/changelog.txt | 3 +
plugin.video.arte_tv/default.py | 170 ++++++++++++--------
.../resources/language/English/strings.xml | 4 +-
.../resources/language/German/strings.xml | 2 +-
plugin.video.arte_tv/resources/settings.xml | 5 +-
6 files changed, 114 insertions(+), 82 deletions(-)
hooks/post-receive
--
Plugins
------------------------------------------------------------------------------
Rapidly troubleshoot problems before they affect your business. Most IT
organizations don't have a clear picture of how application performance
affects their revenue. With AppDynamics, you get 100% visibility into your
Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349831&iu=/4140/ostg.clktrk
_______________________________________________
Xbmc-addons mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xbmc-addons