The branch, frodo has been updated
via db69cca01d5c05778b99785f872901a614860480 (commit)
via 9640d57f15dbc0b52cfd09596f74b2dab49c275f (commit)
via b774983fa12c5f33b34abc733057e603441c4bcd (commit)
via d4733adf612c3997ad68f8452e2b740bdb0ff405 (commit)
via b7c98f07688793dd2e4e030bc1ec893f8db17b77 (commit)
from 94bd7b5ea5f67ad21c2a07517da189ce84d679ea (commit)
- Log -----------------------------------------------------------------
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/plugins;a=commit;h=db69cca01d5c05778b99785f872901a614860480
commit db69cca01d5c05778b99785f872901a614860480
Author: beenje <[email protected]>
Date: Wed Aug 28 22:23:49 2013 +0200
[plugin.video.tageswebschau] updated to version 2.0.5
diff --git a/plugin.video.tageswebschau/addon.xml
b/plugin.video.tageswebschau/addon.xml
index 0fa04f0..f1da594 100644
--- a/plugin.video.tageswebschau/addon.xml
+++ b/plugin.video.tageswebschau/addon.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<addon id="plugin.video.tageswebschau" name="TagesWEBschau" version="2.0.3"
provider-name="AddonScriptorDE">
+<addon id="plugin.video.tageswebschau" name="WochenWEBschau" version="2.0.5"
provider-name="AddonScriptorDE">
<requires>
<import addon="xbmc.python" version="2.1.0"/>
</requires>
@@ -13,7 +13,7 @@
<language>de</language>
<description lang="de">Die neuesten Web-Nachrichten</description>
<description lang="en">Latest Web-News</description>
- <website></website>
+ <website>http://wochenwebschau.de</website>
<source>https://github.com/AddonScriptorDE/plugin.video.tageswebschau</source>
<forum>http://forum.xbmc.org/showthread.php?tid=132563</forum>
<email>AddonScriptorDE at yahoo dot de</email>
diff --git a/plugin.video.tageswebschau/changelog.txt
b/plugin.video.tageswebschau/changelog.txt
index dee7aab..c08b60d 100644
--- a/plugin.video.tageswebschau/changelog.txt
+++ b/plugin.video.tageswebschau/changelog.txt
@@ -6,3 +6,7 @@
- Fixed site changes
1.0.3 / 2.0.3
- Fixed site changes
+1.0.4 / 2.0.4
+- Changed content/name to WochenWEBschau
+1.0.5 / 2.0.5
+- Fixed site changes
diff --git a/plugin.video.tageswebschau/default.py
b/plugin.video.tageswebschau/default.py
index bf8b665..ce44435 100644
--- a/plugin.video.tageswebschau/default.py
+++ b/plugin.video.tageswebschau/default.py
@@ -9,44 +9,55 @@ import xbmcaddon
import xbmcplugin
pluginhandle = int(sys.argv[1])
+xbox = xbmc.getCondVisibility("System.Platform.xbox")
def index():
- content =
getUrl("http://www.radiobremen.de/extranet/tws/json/tws_toc.json?_=1367168129910")
- spl = content.split('{\n "titel" : ')
+ content = getUrl("http://wochenwebschau.tumblr.com/")
+ spl = content.split('<div class="post-panel"')
for i in range(1, len(spl), 1):
entry = spl[i]
- match = re.compile('"(.+?)"', re.DOTALL).findall(entry)
+ match = re.compile('<div class="copy">(.+?)</div>',
re.DOTALL).findall(entry)
title = match[0]
+ match = re.compile('<strong>(.+?)</strong>', re.DOTALL).findall(title)
+ if match:
+ title = match[0]
+ title = title.replace("<p>", "").replace("</p>", "").replace("<span>",
"").replace("</span>", "")
+ if ">" in title:
+ title = title[title.find(">")+1:]
+ if ">" in title:
+ title = title[title.find(">")+1:]
+ if title[len(title)-1:]==":":
+ title = title[:-1]
title = cleanTitle(title)
- match = re.compile('"img" : "(.+?)"', re.DOTALL).findall(entry)
- thumb = match[0]
- title = cleanTitle(title)
- match = re.compile('"jsonurl" : "(.+?)"', re.DOTALL).findall(entry)
- url = "http://www.radiobremen.de"+match[0]
- addLink(title, url, 'playVideo', thumb)
+ match = re.compile('src="http://www.youtube.com/embed/(.+?)\\?',
re.DOTALL).findall(entry)
+ id = match[0]
+ thumb = "http://img.youtube.com/vi/"+id+"/0.jpg"
+ addLink(title, id, 'playVideo', thumb)
xbmcplugin.endOfDirectory(pluginhandle)
-def playVideo(url):
- content = getUrl(url)
- match1 = re.compile('"url" : "http://(.+?)_L.mp4"',
re.DOTALL).findall(content)
- match2 = re.compile('"url":"http://(.+?)_L.mp4"',
re.DOTALL).findall(content)
- if match1:
- url = "http://"+match1[0]+"_L.mp4"
- elif match2:
- url = "http://"+match2[0]+"_L.mp4"
- listitem = xbmcgui.ListItem(path=url)
+def playVideo(id):
+ listitem = xbmcgui.ListItem(path=getYoutubePluginUrl(id))
xbmcplugin.setResolvedUrl(pluginhandle, True, listitem)
+def getYoutubePluginUrl(id):
+ if xbox:
+ return
"plugin://video/YouTube/?path=/root/video&action=play_video&videoid=" + id
+ else:
+ return
"plugin://plugin.video.youtube/?path=/root/video&action=play_video&videoid=" +
id
+
+
def cleanTitle(title):
- return title.replace("<", "<").replace(">", ">").replace("&",
"&").replace("'", "\\").replace(""", "\"").strip()
+ title = title = title.replace("'", "'").replace("–",
"-").replace("“", "-").replace("”", "-").replace("’",
"'").replace("…", "â¦")
+ title = title.replace("<", "<").replace(">", ">").replace("&",
"&").replace("'", "\\").replace(""", "\"").strip()
+ return title
def getUrl(url):
req = urllib2.Request(url)
- req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 6.1; rv:19.0)
Gecko/20100101 Firefox/19.0')
+ req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 6.1; rv:23.0)
Gecko/20100101 Firefox/23.0')
response = urllib2.urlopen(req)
link = response.read()
response.close()
diff --git a/plugin.video.tageswebschau/icon.png
b/plugin.video.tageswebschau/icon.png
index 98fbce9..bfe424b 100644
Binary files a/plugin.video.tageswebschau/icon.png and
b/plugin.video.tageswebschau/icon.png differ
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/plugins;a=commit;h=9640d57f15dbc0b52cfd09596f74b2dab49c275f
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/plugins;a=commit;h=b774983fa12c5f33b34abc733057e603441c4bcd
commit b774983fa12c5f33b34abc733057e603441c4bcd
Author: beenje <[email protected]>
Date: Wed Aug 28 22:23:47 2013 +0200
[plugin.video.filmstarts_de] updated to version 2.1.1
diff --git a/plugin.video.filmstarts_de/addon.xml
b/plugin.video.filmstarts_de/addon.xml
index aa3d8b0..4ad3c40 100644
--- a/plugin.video.filmstarts_de/addon.xml
+++ b/plugin.video.filmstarts_de/addon.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<addon id="plugin.video.filmstarts_de" name="FilmStarts.de" version="2.1.0"
provider-name="AddonScriptorDE">
+<addon id="plugin.video.filmstarts_de" name="FilmStarts.de" version="2.1.1"
provider-name="AddonScriptorDE">
<requires>
<import addon="xbmc.python" version="2.1.0"/>
</requires>
diff --git a/plugin.video.filmstarts_de/changelog.txt
b/plugin.video.filmstarts_de/changelog.txt
index ec05af6..bfab065 100644
--- a/plugin.video.filmstarts_de/changelog.txt
+++ b/plugin.video.filmstarts_de/changelog.txt
@@ -27,3 +27,5 @@
1.1.0 / 2.1.0
- Fixed site changes
- Some small improvements
+1.1.1 / 2.1.1
+- Fixed video playback for some trailers
diff --git a/plugin.video.filmstarts_de/default.py
b/plugin.video.filmstarts_de/default.py
index 114981c..780ce2a 100644
--- a/plugin.video.filmstarts_de/default.py
+++ b/plugin.video.filmstarts_de/default.py
@@ -9,12 +9,12 @@ import xbmcgui
import re
import sys
+addon = xbmcaddon.Addon()
socket.setdefaulttimeout(30)
pluginhandle = int(sys.argv[1])
-xbox = xbmc.getCondVisibility("System.Platform.xbox")
-addonId = 'plugin.video.filmstarts_de'
-addon = xbmcaddon.Addon(id=addonId)
+addonId = addon.getAddonInfo('id')
translation = addon.getLocalizedString
+xbox = xbmc.getCondVisibility("System.Platform.xbox")
showAllTrailers = addon.getSetting("showAllTrailers") == "true"
forceViewMode = addon.getSetting("forceViewMode") == "true"
useCoverAsFanart = addon.getSetting("useCoverAsFanart") == "true"
@@ -70,14 +70,14 @@ def listVideos(urlFull):
if currentPage == 1:
match = re.compile('<a href=".+?">\n<img src="(.+?)" alt=""
/>\n</a>\n</div>\n<div style=".+?">\n<h2 class=".+?" style=".+?"><b>.+?</b>
(.+?)</h2><br />\n<span style=".+?" class="purehtml fs11">\n.+?<a class="btn"
href="(.+?)"', re.DOTALL).findall(content)
for thumb, title, url in match:
- addDir(title, baseUrl + url, "playVideo",
get_better_thumb(thumb))
+ addLink(title, baseUrl + url, "playVideo",
get_better_thumb(thumb))
match = re.compile('<img src=\'(.+?)\' alt=".+?" title=".+?"
/>\n</span>\n</div>\n<div class="contenzone">\n<div class="titlebar">\n<a
href=\'(.+?)\' class="link">\n<span class=\'bold\'><b>.+?</b> (.+?)</span>',
re.DOTALL).findall(content)
for thumb, url, title in match:
- addDir(title, baseUrl + url, "playVideo", get_better_thumb(thumb))
+ addLink(title, baseUrl + url, "playVideo", get_better_thumb(thumb))
elif mode == "listVideosInterview":
match = re.compile('<img src=\'(.+?)\'.+?</span>\n</div>\n<div
class="contenzone">\n<div class="titlebar">\n<a.+?href=\'(.+?)\'>\n<span
class=\'bold\'>\n(.+?)\n</span>(.+?)\n</a>', re.DOTALL).findall(content)
for thumb, url, title1, title2 in match:
- addDir(title1+title2, baseUrl + url, "playVideo",
get_better_thumb(thumb))
+ addLink(title1+title2, baseUrl + url, "playVideo",
get_better_thumb(thumb))
elif mode == "listVideosTV":
spl = content.split('<div class="datablock vpadding10b">')
for i in range(1, len(spl), 1):
@@ -92,7 +92,7 @@ def listVideos(urlFull):
else:
match = re.compile("<a href='(.+?)'>\n(.+?)<br />",
re.DOTALL).findall(entry)
title = match[0][1]
- addDir(title, baseUrl + url, "playVideo", get_better_thumb(thumb))
+ addLink(title, baseUrl + url, "playVideo", get_better_thumb(thumb))
if currentPage < maxPage:
urlNew = ""
if mode == "listVideosTrailer":
@@ -165,14 +165,14 @@ def playVideo(url):
content = getUrl(url)
match = re.compile('"html5PathHD":"(.*?)"', re.DOTALL).findall(content)
finalUrl=""
- if match[0]:
+ if match[0] and match[0].startswith("http://"):
finalUrl=match[0]
else:
match = re.compile('"refmedia":(.+?),', re.DOTALL).findall(content)
media = match[0]
- match = re.compile('"cMovie":(.+?),', re.DOTALL).findall(content)
+ match = re.compile('"relatedEntityId":(.+?),',
re.DOTALL).findall(content)
ref = match[0]
- match = re.compile('"entityType":"(.+?)"', re.DOTALL).findall(content)
+ match = re.compile('"relatedEntityType":"(.+?)"',
re.DOTALL).findall(content)
typeRef = match[0]
content = getUrl(baseUrl +
'/ws/AcVisiondataV4.ashx?media='+media+'&ref='+ref+'&typeref='+typeRef)
finalUrl = ""
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/plugins;a=commit;h=d4733adf612c3997ad68f8452e2b740bdb0ff405
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/plugins;a=commit;h=b7c98f07688793dd2e4e030bc1ec893f8db17b77
commit b7c98f07688793dd2e4e030bc1ec893f8db17b77
Author: beenje <[email protected]>
Date: Wed Aug 28 22:23:44 2013 +0200
[plugin.video.dailymotion_com] updated to version 2.1.2
diff --git a/plugin.video.dailymotion_com/addon.xml
b/plugin.video.dailymotion_com/addon.xml
index dcb86be..5fef3fc 100644
--- a/plugin.video.dailymotion_com/addon.xml
+++ b/plugin.video.dailymotion_com/addon.xml
@@ -1,7 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
-<addon id="plugin.video.dailymotion_com" name="DailyMotion.com"
version="2.1.1" provider-name="AddonScriptorDE">
+<addon id="plugin.video.dailymotion_com" name="DailyMotion.com"
version="2.1.2" provider-name="AddonScriptorDE">
<requires>
<import addon="xbmc.python" version="2.1.0"/>
+ <import addon="script.module.simple.downloader" version="1.0.0"/>
</requires>
<extension point="xbmc.python.pluginsource" library="default.py">
<provides>video</provides>
diff --git a/plugin.video.dailymotion_com/changelog.txt
b/plugin.video.dailymotion_com/changelog.txt
index b8f2c32..4aade9e 100644
--- a/plugin.video.dailymotion_com/changelog.txt
+++ b/plugin.video.dailymotion_com/changelog.txt
@@ -32,3 +32,8 @@
1.1.1 / 2.1.1
- Bugfix with context menu
- Some other small improvements
+1.1.2 / 2.1.2
+- Changed default view
+- Fixed encoding problem
+- Added download function
+- Added user-playlist browsing
diff --git a/plugin.video.dailymotion_com/default.py
b/plugin.video.dailymotion_com/default.py
index 2e7bc4a..fa3b843 100644
--- a/plugin.video.dailymotion_com/default.py
+++ b/plugin.video.dailymotion_com/default.py
@@ -1,23 +1,25 @@
#!/usr/bin/python
# -*- coding: utf-8 -*-
+import socket
import urllib
import urllib2
-import socket
import xbmcplugin
import xbmcaddon
import xbmcgui
import sys
import os
import re
+import json
import base64
import datetime
+import unicodedata
+import SimpleDownloader
familyFilter = "1"
socket.setdefaulttimeout(60)
pluginhandle = int(sys.argv[1])
-addonID = 'plugin.video.dailymotion_com'
-addon = xbmcaddon.Addon(addonID)
-translation = addon.getLocalizedString
+addon = xbmcaddon.Addon()
+addonID = addon.getAddonInfo('id')
channelFavsFile =
xbmc.translatePath("special://profile/addon_data/"+addonID+"/"+addonID+".favorites")
familyFilterFile =
xbmc.translatePath("special://profile/addon_data/"+addonID+"/family_filter_off")
@@ -27,9 +29,10 @@ if os.path.exists(familyFilterFile):
while (not
os.path.exists(xbmc.translatePath("special://profile/addon_data/"+addonID+"/settings.xml"))):
addon.openSettings()
-forceViewMode = addon.getSetting("forceViewMode") == "true"
-viewMode = str(addon.getSetting("viewMode"))
+forceViewModeNew = addon.getSetting("forceViewModeNew") == "true"
+viewModeNew = str(addon.getSetting("viewModeNew"))
maxVideoQuality = addon.getSetting("maxVideoQuality")
+downloadDir = addon.getSetting("downloadDir")
qual = ["480p", "720p", "1080p"]
maxVideoQuality = qual[int(maxVideoQuality)]
language = addon.getSetting("language")
@@ -39,6 +42,7 @@ dmUser = addon.getSetting("dmUser")
itemsPerPage = addon.getSetting("itemsPerPage")
itemsPage = ["25", "50", "75", "100"]
itemsPerPage = itemsPage[int(itemsPerPage)]
+urlMain = "https://api.dailymotion.com"
def index():
@@ -50,59 +54,55 @@ def index():
addDir(translation(30007), "", 'sortUsers1', "")
addDir(translation(30042), "ALL", 'listGroups', "")
addDir(translation(30002), "", 'search', "")
- addDir(translation(30003), "", 'listLive', "")
+ addDir(translation(30003),
urlMain+"/videos?fields=id,thumbnail_large_url%2Ctitle%2Cviews_last_hour&filters=live&sort=visited-hour&limit="+itemsPerPage+"&family_filter="+familyFilter+"&localization="+language+"&page=1",
'listLive', "")
addDir(translation(30039), '3D:ALL', 'sortVideos1', '', '')
xbmcplugin.endOfDirectory(pluginhandle)
- if forceViewMode:
- xbmc.executebuiltin('Container.SetViewMode('+viewMode+')')
def personalMain():
- addDir(translation(30041),
"https://api.dailymotion.com/user/"+dmUser+"/videos?fields=description,duration,id,owner.username,taken_time,thumbnail_large_url,title,views_total&sort=recent&limit="+itemsPerPage+"&family_filter="+familyFilter+"&localization="+language+"&page=1",
'listVideos', "")
- addDir(translation(30035),
"https://api.dailymotion.com/user/"+dmUser+"/following?fields=username,avatar_large_url,videos_total,views_total&sort=popular&limit="+itemsPerPage+"&family_filter="+familyFilter+"&localization="+language+"&page=1",
'listUsers', "")
- addDir(translation(30036),
"https://api.dailymotion.com/user/"+dmUser+"/subscriptions?fields=description,duration,id,owner.username,taken_time,thumbnail_large_url,title,views_total&sort=recent&limit="+itemsPerPage+"&family_filter="+familyFilter+"&localization="+language+"&page=1",
'listVideos', "")
- addDir(translation(30037),
"https://api.dailymotion.com/user/"+dmUser+"/favorites?fields=description,duration,id,owner.username,taken_time,thumbnail_large_url,title,views_total&sort=recent&limit="+itemsPerPage+"&family_filter="+familyFilter+"&localization="+language+"&page=1",
'listVideos', "")
- addDir(translation(30038),
"https://api.dailymotion.com/user/"+dmUser+"/playlists?fields=id,name,videos_total&sort=recent&limit="+itemsPerPage+"&family_filter="+familyFilter+"&localization="+language+"&page=1",
'listUserPlaylists', "")
- addDir(translation(30042),
"https://api.dailymotion.com/user/"+dmUser+"/groups?fields=id,name,description&sort=recent&limit="+itemsPerPage+"&family_filter="+familyFilter+"&localization="+language+"&page=1",
'listGroups', "")
+ addDir(translation(30041),
urlMain+"/user/"+dmUser+"/videos?fields=description,duration,id,owner.username,taken_time,thumbnail_large_url,title,views_total&sort=recent&limit="+itemsPerPage+"&family_filter="+familyFilter+"&localization="+language+"&page=1",
'listVideos', "")
+ addDir(translation(30035),
urlMain+"/user/"+dmUser+"/following?fields=username,avatar_large_url,videos_total,views_total&sort=popular&limit="+itemsPerPage+"&family_filter="+familyFilter+"&localization="+language+"&page=1",
'listUsers', "")
+ addDir(translation(30036),
urlMain+"/user/"+dmUser+"/subscriptions?fields=description,duration,id,owner.username,taken_time,thumbnail_large_url,title,views_total&sort=recent&limit="+itemsPerPage+"&family_filter="+familyFilter+"&localization="+language+"&page=1",
'listVideos', "")
+ addDir(translation(30037),
urlMain+"/user/"+dmUser+"/favorites?fields=description,duration,id,owner.username,taken_time,thumbnail_large_url,title,views_total&sort=recent&limit="+itemsPerPage+"&family_filter="+familyFilter+"&localization="+language+"&page=1",
'listVideos', "")
+ addDir(translation(30038),
urlMain+"/user/"+dmUser+"/playlists?fields=id,name,videos_total&sort=recent&limit="+itemsPerPage+"&family_filter="+familyFilter+"&localization="+language+"&page=1",
'listUserPlaylists', "")
+ addDir(translation(30042),
urlMain+"/user/"+dmUser+"/groups?fields=id,name,description&sort=recent&limit="+itemsPerPage+"&family_filter="+familyFilter+"&localization="+language+"&page=1",
'listGroups', "")
xbmcplugin.endOfDirectory(pluginhandle)
- if forceViewMode:
- xbmc.executebuiltin('Container.SetViewMode('+viewMode+')')
def listUserPlaylists(url):
content = getUrl(url)
- match = re.compile('{"id":"(.+?)","name":"(.+?)","videos_total":(.+?)}',
re.DOTALL).findall(content)
- for id, title, vids in match:
- addDir(title+" ("+vids+")",
urllib.quote_plus(id+"_"+dmUser+"_"+title), 'showPlaylist', '')
- match = re.compile('"page":(.+?),', re.DOTALL).findall(content)
- currentPage = int(match[0])
- nextPage = currentPage+1
- if '"has_more":true' in content:
+ content = json.loads(content)
+ for item in content['list']:
+ id = item['id']
+ title = item['name'].encode('utf-8')
+ vids = item['videos_total']
+ addDir(title+" ("+str(vids)+")",
urllib.quote_plus(str(id)+"_"+dmUser+"_"+title), 'showPlaylist', '')
+ if content['has_more']:
+ currentPage = content['page']
+ nextPage = currentPage+1
addDir(translation(30001)+" ("+str(nextPage)+")",
url.replace("page="+str(currentPage), "page="+str(nextPage)),
'listUserPlaylists', "")
xbmcplugin.endOfDirectory(pluginhandle)
- if forceViewMode:
- xbmc.executebuiltin('Container.SetViewMode('+viewMode+')')
def listGroups(url):
if url == "ALL":
- url =
"https://api.dailymotion.com/groups?fields=id,name,description&sort=recent&filters=featured&limit="+itemsPerPage+"&family_filter="+familyFilter+"&localization="+language+"&page=1"
+ url =
urlMain+"/groups?fields=id,name,description&sort=recent&filters=featured&limit="+itemsPerPage+"&family_filter="+familyFilter+"&localization="+language+"&page=1"
content = getUrl(url)
- match = re.compile('{"id":"(.+?)","name":"(.+?)","description":(.+?)}',
re.DOTALL).findall(content)
- for id, title, desc in match:
- addDir(cleanTitle(title), "group:"+id, 'sortVideos1', '', desc)
- match = re.compile('"page":(.+?),', re.DOTALL).findall(content)
- currentPage = int(match[0])
- nextPage = currentPage+1
- if '"has_more":true' in content:
+ content = json.loads(content)
+ for item in content['list']:
+ id = item['id']
+ title = item['name'].encode('utf-8')
+ desc = item['description'].encode('utf-8')
+ addDir(title, "group:"+id, 'sortVideos1', '', desc)
+ if content['has_more']:
+ currentPage = content['page']
+ nextPage = currentPage+1
addDir(translation(30001)+" ("+str(nextPage)+")",
url.replace("page="+str(currentPage), "page="+str(nextPage)), 'listGroups', "")
xbmcplugin.endOfDirectory(pluginhandle)
- if forceViewMode:
- xbmc.executebuiltin('Container.SetViewMode('+viewMode+')')
def showPlaylist(id):
- url =
"https://api.dailymotion.com/playlist/"+id+"/videos?fields=description,duration,id,owner.username,taken_time,thumbnail_large_url,title,views_total&sort=recent&limit="+itemsPerPage+"&family_filter="+familyFilter+"&localization="+language+"&page=1"
+ url =
urlMain+"/playlist/"+id+"/videos?fields=description,duration,id,owner.username,taken_time,thumbnail_large_url,title,views_total&sort=recent&limit="+itemsPerPage+"&family_filter="+familyFilter+"&localization="+language+"&page=1"
listVideos(url)
@@ -116,36 +116,35 @@ def favouriteUsers():
addUserFavDir(user, 'owner:'+user, 'sortVideos1', thumb)
fh.close()
xbmcplugin.endOfDirectory(pluginhandle)
- if forceViewMode:
- xbmc.executebuiltin('Container.SetViewMode('+viewMode+')')
def listChannels():
- content =
getUrl("https://api.dailymotion.com/channels?family_filter="+familyFilter+"&localization="+language)
- match = re.compile('{"id":"(.+?)","name":"(.+?)","description":"(.+?)"}',
re.DOTALL).findall(content)
- for id, title, desc in match:
+ content =
getUrl(urlMain+"/channels?family_filter="+familyFilter+"&localization="+language)
+ content = json.loads(content)
+ for item in content['list']:
+ id = item['id']
+ title = item['name'].encode('utf-8')
+ desc = item['description'].encode('utf-8')
addDir(title, 'channel:'+id, 'sortVideos1', '', desc)
xbmcplugin.endOfDirectory(pluginhandle)
- if forceViewMode:
- xbmc.executebuiltin('Container.SetViewMode('+viewMode+')')
def sortVideos1(url):
type = url[:url.find(":")]
id = url[url.find(":")+1:]
if type == "3D":
- url =
"https://api.dailymotion.com/videos?fields=description,duration,id,owner.username,taken_time,thumbnail_large_url,title,views_total&filters=3d&sort=recent&limit="+itemsPerPage+"&family_filter="+familyFilter+"&localization="+language+"&page=1"
+ url =
urlMain+"/videos?fields=description,duration,id,owner.username,taken_time,thumbnail_large_url,title,views_total&filters=3d&sort=recent&limit="+itemsPerPage+"&family_filter="+familyFilter+"&localization="+language+"&page=1"
elif type == "group":
- url =
"https://api.dailymotion.com/group/"+id+"/videos?fields=description,duration,id,owner.username,taken_time,thumbnail_large_url,title,views_total&sort=recent&limit="+itemsPerPage+"&family_filter="+familyFilter+"&localization="+language+"&page=1"
+ url =
urlMain+"/group/"+id+"/videos?fields=description,duration,id,owner.username,taken_time,thumbnail_large_url,title,views_total&sort=recent&limit="+itemsPerPage+"&family_filter="+familyFilter+"&localization="+language+"&page=1"
else:
- url =
"https://api.dailymotion.com/videos?fields=description,duration,id,owner.username,taken_time,thumbnail_large_url,title,views_total&"+type+"="+id+"&sort=recent&limit="+itemsPerPage+"&family_filter="+familyFilter+"&localization="+language+"&page=1"
+ url =
urlMain+"/videos?fields=description,duration,id,owner.username,taken_time,thumbnail_large_url,title,views_total&"+type+"="+id+"&sort=recent&limit="+itemsPerPage+"&family_filter="+familyFilter+"&localization="+language+"&page=1"
addDir(translation(30008), url, 'listVideos', "")
addDir(translation(30009), url.replace("sort=recent", "sort=visited"),
'sortVideos2', "")
addDir(translation(30020), url.replace("sort=recent", "sort=commented"),
'sortVideos2', "")
addDir(translation(30010), url.replace("sort=recent", "sort=rated"),
'sortVideos2', "")
+ if type == "owner":
+ addDir("- "+translation(30038),
urlMain+"/user/"+id+"/playlists?fields=id,name,videos_total&sort=recent&limit="+itemsPerPage+"&family_filter="+familyFilter+"&localization="+language+"&page=1",
'listUserPlaylists', "")
xbmcplugin.endOfDirectory(pluginhandle)
- if forceViewMode:
- xbmc.executebuiltin('Container.SetViewMode('+viewMode+')')
def sortVideos2(url):
@@ -154,19 +153,15 @@ def sortVideos2(url):
addDir(translation(30013), url.replace("sort=visited",
"sort=visited-month").replace("sort=commented",
"sort=commented-month").replace("sort=rated", "sort=rated-month"),
"listVideos", "")
addDir(translation(30014), url, 'listVideos', "")
xbmcplugin.endOfDirectory(pluginhandle)
- if forceViewMode:
- xbmc.executebuiltin('Container.SetViewMode('+viewMode+')')
def sortUsers1():
- url =
"https://api.dailymotion.com/users?fields=username,avatar_large_url,videos_total,views_total&sort=popular&limit="+itemsPerPage+"&family_filter="+familyFilter+"&localization="+language+"&page=1"
+ url =
urlMain+"/users?fields=username,avatar_large_url,videos_total,views_total&sort=popular&limit="+itemsPerPage+"&family_filter="+familyFilter+"&localization="+language+"&page=1"
addDir(translation(30040), url, 'sortUsers2', "")
addDir(translation(30016), url+"&filters=featured", 'sortUsers2', "")
addDir(translation(30017), url+"&filters=official", 'sortUsers2', "")
addDir(translation(30018), url+"&filters=creative", 'sortUsers2', "")
xbmcplugin.endOfDirectory(pluginhandle)
- if forceViewMode:
- xbmc.executebuiltin('Container.SetViewMode('+viewMode+')')
def sortUsers2(url):
@@ -174,61 +169,83 @@ def sortUsers2(url):
addDir(translation(30020), url.replace("sort=popular", "sort=commented"),
'listUsers', "")
addDir(translation(30021), url.replace("sort=popular", "sort=rated"),
'listUsers', "")
xbmcplugin.endOfDirectory(pluginhandle)
- if forceViewMode:
- xbmc.executebuiltin('Container.SetViewMode('+viewMode+')')
def listVideos(url):
+ xbmcplugin.setContent(pluginhandle, "episodes")
content = getUrl(url)
- match =
re.compile('{"description":"(.*?)","duration":(.+?),"id":"(.+?)","owner.username":"(.+?)","taken_time":(.+?),"thumbnail_large_url":"(.*?)","title":"(.+?)","views_total":(.+?)}',
re.DOTALL).findall(content)
- for desc, duration, id, user, date, thumb, title, views in match:
+ content = json.loads(content)
+ count = 1
+ for item in content['list']:
+ id = item['id']
+ title = item['title'].encode('utf-8')
+ desc = item['description'].encode('utf-8')
+ duration = item['duration']
+ user = item['owner.username']
+ date = item['taken_time']
+ thumb = item['thumbnail_large_url']
+ views = item['views_total']
duration = str(int(duration)/60+1)
try:
date =
datetime.datetime.fromtimestamp(int(date)).strftime('%Y-%m-%d')
except:
date = ""
- desc = "User: "+user+" | "+views+" Views | "+date+"\n"+desc
+ temp = ("User: "+user+" | "+str(views)+" Views |
"+date).encode('utf-8')
+ try:
+ desc = temp+"\n"+desc
+ except:
+ desc = ""
if user == "hulu":
pass
elif user == "cracklemovies":
pass
elif user == "ARTEplus7":
- addLink(cleanTitle(title), id, 'playArte', thumb.replace("\\",
""), user, desc, duration)
+ addLink(title, id, 'playArte', thumb.replace("\\", ""), user,
desc, duration, date, count)
+ count+=1
else:
- addLink(cleanTitle(title), id, 'playVideo', thumb.replace("\\",
""), user, desc, duration)
- match = re.compile('"page":(.+?),', re.DOTALL).findall(content)
- currentPage = int(match[0])
- nextPage = currentPage+1
- if '"has_more":true' in content:
+ addLink(title, id, 'playVideo', thumb.replace("\\", ""), user,
desc, duration, date, count)
+ count+=1
+ if content['has_more']:
+ currentPage = content['page']
+ nextPage = currentPage+1
addDir(translation(30001)+" ("+str(nextPage)+")",
url.replace("page="+str(currentPage), "page="+str(nextPage)), 'listVideos', "")
+ if forceViewModeNew:
+ xbmc.executebuiltin('Container.SetViewMode('+viewModeNew+')')
xbmcplugin.endOfDirectory(pluginhandle)
- if forceViewMode:
- xbmc.executebuiltin('Container.SetViewMode('+viewMode+')')
def listUsers(url):
content = getUrl(url)
- match =
re.compile('{"username":"(.+?)","avatar_large_url":"(.*?)","videos_total":(.+?),"views_total":(.+?)}',
re.DOTALL).findall(content)
- for user, thumb, videos, views in match:
- addUserDir(cleanTitle(user), 'owner:'+user, 'sortVideos1',
thumb.replace("\\", ""), "Views: "+views+"\nVideos: "+videos)
- match = re.compile('"page":(.+?),', re.DOTALL).findall(content)
- currentPage = int(match[0])
- nextPage = currentPage+1
- if '"has_more":true' in content:
+ content = json.loads(content)
+ for item in content['list']:
+ user = item['username'].encode('utf-8')
+ thumb = item['avatar_large_url']
+ videos = item['videos_total']
+ views = item['views_total']
+ addUserDir(user, 'owner:'+user, 'sortVideos1', thumb.replace("\\",
""), "Views: "+str(views)+"\nVideos: "+str(videos))
+ if content['has_more']:
+ currentPage = content['page']
+ nextPage = currentPage+1
addDir(translation(30001)+" ("+str(nextPage)+")",
url.replace("page="+str(currentPage), "page="+str(nextPage)), 'listUsers', "")
xbmcplugin.endOfDirectory(pluginhandle)
- if forceViewMode:
- xbmc.executebuiltin('Container.SetViewMode('+viewMode+')')
-def listLive():
- content =
getUrl("https://api.dailymotion.com/videos?fields=id,thumbnail_large_url%2Ctitle%2Cviews_last_hour&filters=live&sort=visited-hour&limit="+itemsPerPage+"&family_filter="+familyFilter+"&localization="+language)
- match =
re.compile('\\{"id":"(.+?)","thumbnail_large_url":"(.+?)","title":"(.+?)","views_last_hour":(.+?)\\}',
re.DOTALL).findall(content)
- for id, thumb, title, views in match:
- addLiveLink(cleanTitle(title), id, 'playLiveVideo',
thumb.replace("\\", ""), views)
+def listLive(url):
+ content = getUrl(url)
+ content = json.loads(content)
+ for item in content['list']:
+ title = item['title'].encode('utf-8')
+ id = item['id']
+ thumb = item['thumbnail_large_url']
+ views = item['views_last_hour']
+ addLiveLink(title, id, 'playLiveVideo', thumb.replace("\\", ""), views)
+ if content['has_more']:
+ currentPage = content['page']
+ nextPage = currentPage+1
+ addDir(translation(30001)+" ("+str(nextPage)+")",
url.replace("page="+str(currentPage), "page="+str(nextPage)), 'listLive', "")
xbmcplugin.endOfDirectory(pluginhandle)
- if forceViewMode:
- xbmc.executebuiltin('Container.SetViewMode('+viewMode+')')
+ if forceViewModeNew:
+ xbmc.executebuiltin('Container.SetViewMode('+viewModeNew+')')
def search():
@@ -236,7 +253,7 @@ def search():
keyboard.doModal()
if keyboard.isConfirmed() and keyboard.getText():
search_string = keyboard.getText().replace(" ", "+")
-
listVideos("https://api.dailymotion.com/videos?fields=description,duration,id,owner.username,taken_time,thumbnail_large_url,title,views_total&search="+search_string+"&sort=relevance&limit="+itemsPerPage+"&family_filter="+familyFilter+"&localization="+language+"&page=1")
+
listVideos(urlMain+"/videos?fields=description,duration,id,owner.username,taken_time,thumbnail_large_url,title,views_total&search="+search_string+"&sort=relevance&limit="+itemsPerPage+"&family_filter="+familyFilter+"&localization="+language+"&page=1")
def playVideo(id):
@@ -247,7 +264,7 @@ def playVideo(id):
def getStreamUrl(id):
content = getUrl2("http://www.dailymotion.com/embed/video/"+id)
if content.find('"statusCode":410') > 0 or
content.find('"statusCode":403') > 0:
-
xbmc.executebuiltin('XBMC.Notification(Info:,'+str(translation(30022))+'
(DailyMotion)!,5000)')
+ xbmc.executebuiltin('XBMC.Notification(Info:,'+translation(30022)+'
(DailyMotion)!,5000)')
return ""
else:
matchFullHD = re.compile('"stream_h264_hd1080_url":"(.+?)"',
re.DOTALL).findall(content)
@@ -265,14 +282,14 @@ def getStreamUrl(id):
elif matchSD:
url = urllib.unquote_plus(matchSD[0]).replace("\\", "")
elif matchLD:
- url = urllib.unquote_plus(matchSD2[0]).replace("\\", "")
+ url = urllib.unquote_plus(matchLD[0]).replace("\\", "")
return url
def playLiveVideo(id):
content = getUrl2("http://www.dailymotion.com/sequence/"+id)
if content.find('"statusCode":410') > 0 or
content.find('"statusCode":403') > 0:
-
xbmc.executebuiltin('XBMC.Notification(Info:,'+str(translation(30022))+'
(DailyMotion)!,5000)')
+ xbmc.executebuiltin('XBMC.Notification(Info:,'+translation(30022)+'
(DailyMotion)!,5000)')
else:
matchFullHD = re.compile('"hd1080URL":"(.+?)"',
re.DOTALL).findall(content)
matchHD = re.compile('"hd720URL":"(.+?)"', re.DOTALL).findall(content)
@@ -302,6 +319,29 @@ def queueVideo(url, name):
playlist.add(url, listitem)
+def downloadVideo(id):
+ downloader = SimpleDownloader.SimpleDownloader()
+ content = getUrl2("http://www.dailymotion.com/embed/video/"+id)
+ match = re.compile('<title>(.+?)</title>', re.DOTALL).findall(content)
+ global downloadDir
+ while not downloadDir:
+
xbmc.executebuiltin('XBMC.Notification(Download:,'+translation(30110)+'!,5000)')
+ addon.openSettings()
+ downloadDir = addon.getSetting("downloadDir")
+ url = getStreamUrl(id)
+ filename = ""
+ try:
+ filename = (''.join(c for c in unicode(match[0], 'utf-8') if c not in
'/\\:?"*|<>')).strip()
+ except:
+ filename = id
+ filename+=".mp4"
+ if not os.path.exists(os.path.join(downloadDir, filename)):
+ params = { "url": url, "download_path": downloadDir }
+ downloader.download(filename, params)
+ else:
+
xbmc.executebuiltin('XBMC.Notification(Download:,'+translation(30109)+'!,5000)')
+
+
def playArte(id):
try:
content = getUrl("http://www.dailymotion.com/video/"+id)
@@ -326,7 +366,7 @@ def playArte(id):
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)
except:
-
xbmc.executebuiltin('XBMC.Notification(Info:,'+str(translation(30022))+'
(Arte)!,5000)')
+ xbmc.executebuiltin('XBMC.Notification(Info:,'+translation(30022)+'
(Arte)!,5000)')
def addFav():
@@ -347,7 +387,7 @@ def addFav():
fh = open(channelFavsFile, 'a')
fh.write(channelEntry+"\n")
fh.close()
-
xbmc.executebuiltin('XBMC.Notification(Info:,'+str(translation(30030))+'!,5000)')
+
xbmc.executebuiltin('XBMC.Notification(Info:,'+translation(30030)+'!,5000)')
def favourites(param):
@@ -367,7 +407,7 @@ def favourites(param):
fh = open(channelFavsFile, 'a')
fh.write(channelEntry+"\n")
fh.close()
-
xbmc.executebuiltin('XBMC.Notification(Info:,'+str(translation(30030))+'!,5000)')
+
xbmc.executebuiltin('XBMC.Notification(Info:,'+translation(30030)+'!,5000)')
elif mode == "REMOVE":
refresh = param[param.find("###REFRESH###=")+14:]
refresh = refresh[:refresh.find("###USER###=")]
@@ -382,21 +422,8 @@ def favourites(param):
xbmc.executebuiltin("Container.Refresh")
-def cleanTitle(title):
- #test = u"\u00a1\u00a1\u00a1\u00a1\u00a1".encode('utf8')
- #title = unicode(title)
- #title = u"%s" % (title)
- #title = title.encode('utf-8')
- title = decodeUnicode(title)
- title = title.replace("\\", "").strip()
- return title
-
-
-def decodeUnicode(content):
- uc = {"\u00a0": " ", "\u00a1": "¡", "\u00a2": "¢", "\u00a3": "£",
"\u00a4": "¤", "\u00a5": "¥", "\u00a6": "¦", "\u00a7": "§", "\u00a9": "©",
"\u00aa": "ª", "\u00ab": "«", "\u00ac": "¬", "\u00ae": "®", "\u00b0": "°",
"\u00b1": "±", "\u00b2": "²", "\u00b3": "³", "\u00b5": "µ", "\u00b6": "¶",
"\u00b7": "·", "\u00b8": "¸", "\u00b9": "¹", "\u00ba": "º", "\u00bb": "»",
"\u00bc": "¼", "\u00bd": "½", "\u00be": "¾", "\u00bf": "¿", "\u00c0": "Ã",
"\u00c1": "Ã", "\u00c2": "Ã", "\u00c3": "Ã", "\u00c4": "Ã", "\u00c5": "Ã
",
"\u00c6": "Ã", "\u00c7": "Ã", "\u00c8": "Ã", "\u00c9": "Ã", "\u00ca": "Ã",
"\u00cb": "Ã", "\u00cc": "Ã", "\u00cd": "Ã", "\u00ce": "Ã", "\u00cf": "Ã",
"\u00d0": "Ã", "\u00d1": "Ã", "\u00d2": "Ã", "\u00d3": "Ã", "\u00d4": "Ã",
"\u00d5": "Ã", "\u00d6": "Ã", "\u00d7": "Ã", "\u00d8": "Ã", "\u00d9": "Ã",
"\u00da": "Ã", "\u00db": "Ã", "\u00dc": "Ã", "\u00dd": "Ã", "\u00de": "Ã",
"\u00df": "Ã", "\u00e0": "Ã ", "\u00e1": "
á", "\u00e2": "â", "\u00e3": "ã", "\u00e4": "ä", "\u00e5": "å", "\u00e6":
"æ", "\u00e7": "ç", "\u00e8": "è", "\u00e9": "é", "\u00ea": "ê", "\u00eb":
"ë", "\u00ec": "ì", "\u00ed": "Ã", "\u00ee": "î", "\u00ef": "ï", "\u00f0":
"ð", "\u00f1": "ñ", "\u00f2": "ò", "\u00f3": "ó", "\u00f4": "ô", "\u00f5":
"õ", "\u00f6": "ö", "\u00f7": "÷", "\u00f8": "ø", "\u00f9": "ù", "\u00fa":
"ú", "\u00fb": "û", "\u00fc": "ü", "\u00fd": "ý", "\u00fe": "þ", "\u00ff":
"ÿ", "\u0100": "Ä", "\u0101": "Ä", "\u0102": "Ä", "\u0103": "Ä", "\u0104":
"Ä", "\u0105": "Ä
", "\u0106": "Ä", "\u0107": "Ä", "\u0108": "Ä", "\u0109":
"Ä", "\u010c": "Ä", "\u010d": "Ä", "\u010e": "Ä", "\u010f": "Ä", "\u0110":
"Ä", "\u0111": "Ä", "\u0112": "Ä", "\u0113": "Ä", "\u0114": "Ä", "\u0115":
"Ä", "\u0118": "Ä", "\u0119": "Ä", "\u011a": "Ä", "\u011b": "Ä", "\u011c":
"Ä", "\u011d": "Ä", "\u011e": "Ä", "\u011f": "Ä", "\u0122": "Ä¢", "\u0123":
"ģ", "\u0124": "Ĥ", "\u0125": "ĥ",
"\u0126": "Ħ", "\u0127": "ħ", "\u0128": "Ĩ", "\u0129": "ĩ", "\u012a":
"Ī", "\u012b": "Ä«", "\u012c": "Ĭ", "\u012d": "Ä", "\u012e": "Ä®", "\u012f":
"į", "\u0131": "ı", "\u0134": "Ĵ", "\u0135": "ĵ", "\u0136": "Ķ", "\u0137":
"ķ", "\u0138": "ĸ", "\u0139": "Ĺ", "\u013a": "ĺ", "\u013b": "Ļ", "\u013c":
"ļ", "\u013d": "Ľ", "\u013e": "ľ", "\u0141": "Å", "\u0142": "Å", "\u0143":
"Å", "\u0144": "Å", "\u0145": "Å
",
"\u0146":"Å","\u0147":"Å","\u0148":"Å","\u014a":"Å","\u014b":"Å","\u014c":"Å","\u014d":"Å","\u014e":"Å","\u014f":"Å","\u0150":"Å","\u0151":"Å","\u0152":"Å","\u0153":"Å","\u0154":"Å","\u0155":"Å","\u0156":"Å","\u0157":"Å","\u0158":"Å","\u0159":"Å","\u015a":"Å","\u015b":"Å","\u015c":"Å","\u015d":"Å","\u015e":"Å","\u015f":"Å","\u0160":"Å
","\u0161":"Å¡","\u0162":"Å¢","\u0163":"Å£","\u0164":"Ť","\u0165":"Å¥","\u0166":"Ŧ","\u0167":"ŧ","\u0168":"Ũ","\u0169":"Å©","\u016a":"Ū","\u016b":"Å«","\u016c":"Ŭ","\u016d":"Å","\u016e":"Å®","\u01
6f":"ů","\u0170":"Ű","\u0171":"ű","\u0172":"Ų","\u0173":"ų","\u0174":"Å´","\u0175":"ŵ","\u0176":"Ŷ","\u0177":"Å·","\u0178":"Ÿ","\u0179":"Ź","\u017a":"ź","\u017d":"Ž","\u017e":"ž","\u017f":"Å¿","\u0180":"Æ","\u0197":"Æ","\u01b5":"Ƶ","\u01b6":"ƶ","\u01cd":"Ç","\u01ce":"Ç","\u01cf":"Ç","\u01d0":"Ç","\u01d1":"Ç","\u01d2":"Ç","\u01d3":"Ç","\u01d4":"Ç","\u01e4":"Ǥ","\u01e5":"Ç¥","\u01e6":"Ǧ","\u01e7":"ǧ","\u01e8":"Ǩ","\u01e9":"Ç©","\u01ea":"Ǫ","\u01eb":"Ç«","\u01f0":"ǰ","\u01f4":"Ç´","\u01f5":"ǵ","\u01f8":"Ǹ","\u01f9":"ǹ","\u021e":"È","\u021f":"È","\u0228":"Ȩ","\u0229":"È©","\u0232":"Ȳ","\u0233":"ȳ","\u0259":"É","\u0268":"ɨ","\u1e10":"á¸","\u1e11":"á¸","\u1e20":"á¸
","\u1e21":"ḡ","\u1e26":"Ḧ","\u1e27":"ḧ","\u1e28":"Ḩ","\u1e29":"ḩ","\u1e30":"Ḱ","\u1e31":"ḱ","\u1e3e":"Ḿ","\u1e3f":"ḿ","\u1e54":"á¹","\u1e55":"á¹","\u1e7c":"á¹¼","\u1e7d":"á¹½","\u1e80":"áº","\u1e81":"áº","\u1e82":"áº","\u1e83":"áº","\u1e84":"áº","\u1e85":"áº
",
"\u1e8c":"áº","\u1e8d":"áº","\u1e90":"áº","\u1e91":"áº","\u1e97":"áº","\u1e98":"áº","\u1e99":"áº","\u1ebc":"Ẽ","\u1ebd":"ẽ","\u1ef2":"Ỳ","\u1ef3":"ỳ","\u1ef8":"Ỹ","\u1ef9":"ỹ","\u2008":"â","\u2013":"â","\u2014":"â","\u2018":"â","\u2019":"â","\u201a":"â","\u201c":"â","\u201d":"â","\u201e":"â","\u2030":"â°","\u2039":"â¹","\u203a":"âº","\u2070":"â°","\u2071":"â±","\u2074":"â´","\u2075":"âµ","\u2076":"â¶","\u2077":"â·","\u2078":"â¸","\u2079":"â¹","\u207a":"âº","\u207c":"â¼","\u207d":"â½","\u207e":"â¾","\u207f":"â¿","\u2080":"â","\u2081":"â","\u2082":"â","\u2083":"â","\u2084":"â","\u2085":"â
","\u2086":"â","\u2087":"â","\u2088":"â","\u2089":"â","\u208a":"â","\u208c":"â","\u208d":"â","\u208e":"â","\u20a0":"â
","\u20a1":"â¡","\u20a2":"â¢","\u20a3":"â£","\u20a4":"â¤","\u20a5":"â¥","\u20a6":"â¦","\u20a7":"â§","\u20a8":"â¨","\u20a9":"â©","\u20ab":"â«","\u20ac":"â¬","\u2120":"â
","\u2122":"â¢","\u301d
":"ã","\u301e":"ã"}
- for key, value in uc.iteritems():
- content = content.replace(key, value)
- return content
+def translation(id):
+ return addon.getLocalizedString(id).encode('utf-8')
def getUrl(url):
@@ -433,17 +460,18 @@ def parameters_string_to_dict(parameters):
return paramDict
-def addLink(name, url, mode, iconimage, user, desc, duration):
+def addLink(name, url, mode, iconimage, user, desc, duration, date, nr):
u = sys.argv[0]+"?url="+urllib.quote_plus(url)+"&mode="+str(mode)
ok = True
liz = xbmcgui.ListItem(name, iconImage="DefaultVideo.png",
thumbnailImage=iconimage)
- liz.setInfo(type="Video", infoLabels={"Title": name, "Plot": desc,
"Duration": duration})
+ liz.setInfo(type="Video", infoLabels={"Title": name, "Plot": desc,
"Aired": date, "Duration": duration, "Episode": nr})
liz.setProperty('IsPlayable', 'true')
entries = []
+ entries.append((translation(30044),
'RunPlugin(plugin://'+addonID+'/?mode=downloadVideo&url='+urllib.quote_plus(url)+')',))
+ entries.append((translation(30043),
'RunPlugin(plugin://'+addonID+'/?mode=queueVideo&url='+urllib.quote_plus(u)+'&name='+urllib.quote_plus(name)+')',))
if dmUser == "":
playListInfos =
"###MODE###=ADD###USER###="+user+"###THUMB###=DefaultVideo.png###END###"
entries.append((translation(30028),
'XBMC.RunPlugin(plugin://plugin.video.dailymotion_com/?mode=favourites&url='+urllib.quote_plus(playListInfos)+')',))
- entries.append((translation(30043),
'RunPlugin(plugin://'+addonID+'/?mode=queueVideo&url='+urllib.quote_plus(u)+'&name='+urllib.quote_plus(name)+')',))
liz.addContextMenuItems(entries)
ok = xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]), url=u,
listitem=liz)
return ok
@@ -509,7 +537,7 @@ name = urllib.unquote_plus(params.get('name', ''))
if mode == 'listVideos':
listVideos(url)
elif mode == 'listLive':
- listLive()
+ listLive(url)
elif mode == 'listUsers':
listUsers(url)
elif mode == 'listChannels':
@@ -546,6 +574,8 @@ elif mode == 'playArte':
playArte(url)
elif mode == "queueVideo":
queueVideo(url, name)
+elif mode == "downloadVideo":
+ downloadVideo(url)
elif mode == 'search':
search()
else:
diff --git
a/plugin.video.dailymotion_com/resources/language/English/strings.xml
b/plugin.video.dailymotion_com/resources/language/English/strings.xml
index 0f46460..7a8673c 100644
--- a/plugin.video.dailymotion_com/resources/language/English/strings.xml
+++ b/plugin.video.dailymotion_com/resources/language/English/strings.xml
@@ -24,9 +24,9 @@
<string id="30022">Video not available</string>
<string id="30023">Added</string>
<string id="30024">Favourites</string>
- <string id="30028">Add user to favs</string>
- <string id="30029">Remove from addon favs</string>
- <string id="30030">Added user to favs</string>
+ <string id="30028">Add user to favourites</string>
+ <string id="30029">Remove from favourites</string>
+ <string id="30030">Added user to favourites</string>
<string id="30031">Are you over 18 and would like to turn off the family
filter?</string>
<string id="30032">Turn the family filter on?</string>
<string id="30033">Add user</string>
@@ -40,6 +40,7 @@
<string id="30041">Videos</string>
<string id="30042">Groups</string>
<string id="30043">Add to queue</string>
+ <string id="30044">Download video</string>
<string id="30101">Country</string>
<string id="30102">Force View</string>
<string id="30103">ViewID</string>
@@ -47,4 +48,7 @@
<string id="30105">Maximum resolution</string>
<string id="30106">Dailymotion Username</string>
<string id="30107">Items per page</string>
+ <string id="30108">Download directory</string>
+ <string id="30109">File already exists</string>
+ <string id="30110">Choose download directory</string>
</strings>
diff --git a/plugin.video.dailymotion_com/resources/language/German/strings.xml
b/plugin.video.dailymotion_com/resources/language/German/strings.xml
index ee217fc..02e30ab 100644
--- a/plugin.video.dailymotion_com/resources/language/German/strings.xml
+++ b/plugin.video.dailymotion_com/resources/language/German/strings.xml
@@ -3,12 +3,16 @@
<string id="30001">Nächste Seite</string>
<string id="30101">Land</string>
<string id="30023">Hinzugefuegt</string>
- <string id="30028">User zu Favs hinzufügen</string>
- <string id="30029">Aus Addon Favs entfernen</string>
- <string id="30030">User zu Favs hinzugefuegt</string>
+ <string id="30028">User zu Favoriten hinzufügen</string>
+ <string id="30029">Aus Favoriten entfernen</string>
+ <string id="30030">User zu Favoriten hinzugefuegt</string>
<string id="30033">User hinzufügen</string>
- <string id="30043">Zu Wiedergabeliste hinzufügen</string>
+ <string id="30043">In Abspielliste einreihen</string>
+ <string id="30044">Video downloaden</string>
<string id="30102">View erzwingen</string>
<string id="30105">Maximale Aufösung</string>
<string id="30107">Einträge pro Seite</string>
+ <string id="30108">Downloadverzeichnis</string>
+ <string id="30109">Datei existiert bereits</string>
+ <string id="30110">Downloadverzeichnis wählen</string>
</strings>
diff --git a/plugin.video.dailymotion_com/resources/settings.xml
b/plugin.video.dailymotion_com/resources/settings.xml
index d1909fc..cbe7951 100644
--- a/plugin.video.dailymotion_com/resources/settings.xml
+++ b/plugin.video.dailymotion_com/resources/settings.xml
@@ -2,7 +2,8 @@
<setting id="dmUser" type="text" label="30106" default=""/>
<setting id="itemsPerPage" type="enum" label="30107" values="25|50|75|100"
default="1"/>
<setting id="maxVideoQuality" type="enum" label="30105"
values="480p|720p|1080p" default="1"/>
+ <setting id="downloadDir" type="folder" label="30108" default=""/>
<setting id="language" type="enum" label="30101"
values="International|Argentina|Australia|Belgique (FR)|Belgie
(NL)|Brasil|Canada (English)|Canada (Francais)|Deutschland|Espana (ES)|Espana
(CA)|Greece|France|India|Ireland|Italia|Mexico|Maroc|Nederland|Oesterreich|Polska|Portugal|Russia|Romania|Suisse
(FR)|Schweiz (DE)|Svizzera (IT)|Tunisie|Türkiye|United Kingdom|United
States|Viet Nam|Japan|China" default="0"/>
- <setting id="forceViewMode" type="bool" label="30102" default="false"/>
- <setting id="viewMode" type="number" label="30103" default="500"/>
+ <setting id="forceViewModeNew" type="bool" label="30102" default="true"/>
+ <setting id="viewModeNew" type="number" label="30103" default="504"/>
</settings>
-----------------------------------------------------------------------
Summary of changes:
plugin.video.dailymotion_com/addon.xml | 3 +-
plugin.video.dailymotion_com/changelog.txt | 5 +
plugin.video.dailymotion_com/default.py | 248 ++++++++------
.../resources/language/English/strings.xml | 10 +-
.../resources/language/German/strings.xml | 12 +-
.../resources/settings.xml | 5 +-
.../LICENSE.txt | 0
plugin.video.discovery_com/addon.xml | 20 ++
plugin.video.discovery_com/changelog.txt | 4 +
plugin.video.discovery_com/default.py | 355 ++++++++++++++++++++
plugin.video.discovery_com/icon.png | Bin 0 -> 50023 bytes
.../resources/language/English/strings.xml | 14 +
.../resources/language/German/strings.xml | 12 +
plugin.video.discovery_com/resources/settings.xml | 9 +
.../resources/thumbs/animal_planet.png | Bin 0 -> 37790 bytes
.../resources/thumbs/animal_planet_live.png | Bin 0 -> 41075 bytes
.../resources/thumbs/destination_america.png | Bin 0 -> 44290 bytes
.../resources/thumbs/discovery_channel.png | Bin 0 -> 13352 bytes
.../resources/thumbs/discovery_fit_health.png | Bin 0 -> 17689 bytes
.../resources/thumbs/discovery_news.png | Bin 0 -> 13379 bytes
.../resources/thumbs/how_stuff_works.png | Bin 11995 -> 11995 bytes
.../resources/thumbs/investigation_discovery.png | Bin 0 -> 47444 bytes
.../resources/thumbs/military_channel.png | Bin 0 -> 16355 bytes
.../resources/thumbs/science_channel.png | Bin 0 -> 39475 bytes
.../resources/thumbs/tlc.png | Bin 0 -> 7621 bytes
.../resources/thumbs/velocity.png | Bin 0 -> 23102 bytes
plugin.video.filmstarts_de/addon.xml | 2 +-
plugin.video.filmstarts_de/changelog.txt | 2 +
plugin.video.filmstarts_de/default.py | 20 +-
.../LICENSE.txt | 0
plugin.video.pantoffel_tv/addon.xml | 21 ++
plugin.video.pantoffel_tv/changelog.txt | 4 +
plugin.video.pantoffel_tv/default.py | 107 ++++++
plugin.video.pantoffel_tv/icon.png | Bin 0 -> 19396 bytes
.../resources/language/English/strings.xml | 6 +
.../resources/language/German/strings.xml | 5 +
plugin.video.pantoffel_tv/resources/settings.xml | 4 +
plugin.video.tageswebschau/addon.xml | 4 +-
plugin.video.tageswebschau/changelog.txt | 4 +
plugin.video.tageswebschau/default.py | 51 ++--
plugin.video.tageswebschau/icon.png | Bin 20332 -> 24511 bytes
41 files changed, 775 insertions(+), 152 deletions(-)
copy {plugin.audio.booksshouldbefree_com =>
plugin.video.discovery_com}/LICENSE.txt (100%)
create mode 100644 plugin.video.discovery_com/addon.xml
create mode 100644 plugin.video.discovery_com/changelog.txt
create mode 100644 plugin.video.discovery_com/default.py
create mode 100644 plugin.video.discovery_com/icon.png
create mode 100644
plugin.video.discovery_com/resources/language/English/strings.xml
create mode 100644
plugin.video.discovery_com/resources/language/German/strings.xml
create mode 100644 plugin.video.discovery_com/resources/settings.xml
create mode 100644
plugin.video.discovery_com/resources/thumbs/animal_planet.png
create mode 100644
plugin.video.discovery_com/resources/thumbs/animal_planet_live.png
create mode 100644
plugin.video.discovery_com/resources/thumbs/destination_america.png
create mode 100644
plugin.video.discovery_com/resources/thumbs/discovery_channel.png
create mode 100644
plugin.video.discovery_com/resources/thumbs/discovery_fit_health.png
create mode 100644
plugin.video.discovery_com/resources/thumbs/discovery_news.png
copy plugin.video.howstuffworks_com/icon.png =>
plugin.video.discovery_com/resources/thumbs/how_stuff_works.png (100%)
create mode 100644
plugin.video.discovery_com/resources/thumbs/investigation_discovery.png
create mode 100644
plugin.video.discovery_com/resources/thumbs/military_channel.png
create mode 100644
plugin.video.discovery_com/resources/thumbs/science_channel.png
create mode 100644 plugin.video.discovery_com/resources/thumbs/tlc.png
create mode 100644 plugin.video.discovery_com/resources/thumbs/velocity.png
copy {plugin.audio.booksshouldbefree_com =>
plugin.video.pantoffel_tv}/LICENSE.txt (100%)
create mode 100644 plugin.video.pantoffel_tv/addon.xml
create mode 100644 plugin.video.pantoffel_tv/changelog.txt
create mode 100644 plugin.video.pantoffel_tv/default.py
create mode 100644 plugin.video.pantoffel_tv/icon.png
create mode 100644
plugin.video.pantoffel_tv/resources/language/English/strings.xml
create mode 100644
plugin.video.pantoffel_tv/resources/language/German/strings.xml
create mode 100644 plugin.video.pantoffel_tv/resources/settings.xml
hooks/post-receive
--
Plugins
------------------------------------------------------------------------------
Learn the latest--Visual Studio 2012, SharePoint 2013, SQL 2012, more!
Discover the easy way to master current and previous Microsoft technologies
and advance your career. Get an incredible 1,500+ hours of step-by-step
tutorial videos with LearnDevNow. Subscribe today and save!
http://pubads.g.doubleclick.net/gampad/clk?id=58040911&iu=/4140/ostg.clktrk
_______________________________________________
Xbmc-addons mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xbmc-addons