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("&lt;", "<").replace("&gt;", ">").replace("&amp;", 
"&").replace("&#039;", "\\").replace("&quot;", "\"").strip()
+    title = title = title.replace("&#039;", "'").replace("&#8211;", 
"-").replace("&#8220;", "-").replace("&#8221;", "-").replace("&#8217;", 
"'").replace("&#8230;", "…")
+    title = title.replace("&lt;", "<").replace("&gt;", ">").replace("&amp;", 
"&").replace("&#039;", "\\").replace("&quot;", "\"").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

Reply via email to