The branch, eden has been updated
via 9fbfb5d0a479bec9fef8ab410b7a6e73ee1495b9 (commit)
from 45ab98607db6721f5404307ba923f1af4980b558 (commit)
- Log -----------------------------------------------------------------
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/plugins;a=commit;h=9fbfb5d0a479bec9fef8ab410b7a6e73ee1495b9
commit 9fbfb5d0a479bec9fef8ab410b7a6e73ee1495b9
Author: beenje <[email protected]>
Date: Sat May 4 10:02:37 2013 +0200
[plugin.video.mpora_com] updated to version 1.0.5
diff --git a/plugin.video.mpora_com/addon.xml b/plugin.video.mpora_com/addon.xml
index a41eccb..0656fce 100644
--- a/plugin.video.mpora_com/addon.xml
+++ b/plugin.video.mpora_com/addon.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<addon id="plugin.video.mpora_com" name="Mpora.com" version="1.0.4"
provider-name="AddonScriptorDE">
+<addon id="plugin.video.mpora_com" name="Mpora.com" version="1.0.5"
provider-name="AddonScriptorDE">
<requires>
<import addon="xbmc.python" version="2.0"/>
</requires>
@@ -11,6 +11,9 @@
<summary lang="en">MPORA - Action Sports Network (Snowboarding,
Surfing, Skateboarding, BMX, BMX Racing, Mountain Biking, Motocross, Skiing,
Wakeboarding, Windsurfing, Kitesurfing, Road Cycling, Outdoor)</summary>
<language>en</language>
<description lang="en">MPORA - Action Sports Network (Snowboarding,
Surfing, Skateboarding, BMX, BMX Racing, Mountain Biking, Motocross, Skiing,
Wakeboarding, Windsurfing, Kitesurfing, Road Cycling, Outdoor)</description>
- <platform>all</platform>
+ <website></website>
+
<source>https://github.com/AddonScriptorDE/plugin.video.mpora_com</source>
+ <forum>http://forum.xbmc.org/showthread.php?tid=135470</forum>
+ <email>AddonScriptorDE at yahoo dot de</email>
</extension>
</addon>
diff --git a/plugin.video.mpora_com/changelog.txt
b/plugin.video.mpora_com/changelog.txt
index 74e812b..b679e4f 100644
--- a/plugin.video.mpora_com/changelog.txt
+++ b/plugin.video.mpora_com/changelog.txt
@@ -8,4 +8,6 @@
- Fixed site changes for video playback
- Added "Play all videos" mode
1.0.4
-- Fixed site changes for video playback
\ No newline at end of file
+- Fixed site changes for video playback
+1.0.5 / 2.0.5
+- Fixed site changes
diff --git a/plugin.video.mpora_com/default.py
b/plugin.video.mpora_com/default.py
index da53d88..6d9aa25 100644
--- a/plugin.video.mpora_com/default.py
+++ b/plugin.video.mpora_com/default.py
@@ -1,145 +1,155 @@
#!/usr/bin/python
# -*- coding: utf-8 -*-
-import urllib,urllib2,re,xbmcplugin,xbmcgui,sys,xbmcaddon,base64,socket
+import urllib
+import urllib2
+import re
+import sys
+import xbmcplugin
+import xbmcgui
+import xbmcaddon
+import base64
+import socket
socket.setdefaulttimeout(30)
pluginhandle = int(sys.argv[1])
settings = xbmcaddon.Addon(id='plugin.video.mpora_com')
translation = settings.getLocalizedString
+forceViewMode = settings.getSetting("forceViewMode") == "true"
+viewMode = str(settings.getSetting("viewMode"))
+maxVideoQuality = settings.getSetting("maxVideoQuality")
+qual = ["720p", "540p"]
+maxVideoQuality = qual[int(maxVideoQuality)]
-forceViewMode=settings.getSetting("forceViewMode")
-if forceViewMode=="true":
- forceViewMode=True
-else:
- forceViewMode=False
-viewMode=str(settings.getSetting("viewMode"))
-
-maxVideoQuality=settings.getSetting("maxVideoQuality")
-qual=["720p","540p"]
-maxVideoQuality=qual[int(maxVideoQuality)]
def index():
- addDir(translation(30002),"http://mpora.com/videos",'sortDirection',"")
-
addDir(translation(30003),"http://mpora.com/snowboarding/videos",'sortDirection',"")
-
addDir(translation(30004),"http://mpora.com/surfing/videos",'sortDirection',"")
-
addDir(translation(30005),"http://mpora.com/skateboarding/videos",'sortDirection',"")
-
addDir(translation(30006),"http://mpora.com/bmx/videos",'sortDirection',"")
-
addDir(translation(30007),"http://mpora.com/bmxracing/videos",'sortDirection',"")
-
addDir(translation(30008),"http://mpora.com/mountainbiking/videos",'sortDirection',"")
-
addDir(translation(30009),"http://mpora.com/motocross/videos",'sortDirection',"")
-
addDir(translation(30010),"http://mpora.com/skiing/videos",'sortDirection',"")
-
addDir(translation(30011),"http://mpora.com/wakeboarding/videos",'sortDirection',"")
-
addDir(translation(30012),"http://mpora.com/windsurfing/videos",'sortDirection',"")
-
addDir(translation(30013),"http://mpora.com/kitesurfing/videos",'sortDirection',"")
-
addDir(translation(30014),"http://mpora.com/road-cycling/videos",'sortDirection',"")
-
addDir(translation(30015),"http://mpora.com/outdoor/videos",'sortDirection',"")
- addDir(translation(30020),"",'search',"")
- xbmcplugin.endOfDirectory(pluginhandle)
- if forceViewMode==True:
- xbmc.executebuiltin('Container.SetViewMode('+viewMode+')')
+ addDir(translation(30002), "http://mpora.com/videos", 'sortDirection', "")
+ addDir(translation(30003), "http://mpora.com/snowboarding/videos",
'sortDirection', "")
+ addDir(translation(30004), "http://mpora.com/surfing/videos",
'sortDirection', "")
+ addDir(translation(30005), "http://mpora.com/skateboarding/videos",
'sortDirection', "")
+ addDir(translation(30006), "http://mpora.com/bmx/videos", 'sortDirection',
"")
+ addDir(translation(30007), "http://mpora.com/bmxracing/videos",
'sortDirection', "")
+ addDir(translation(30008), "http://mpora.com/mountainbiking/videos",
'sortDirection', "")
+ addDir(translation(30009), "http://mpora.com/motocross/videos",
'sortDirection', "")
+ addDir(translation(30010), "http://mpora.com/skiing/videos",
'sortDirection', "")
+ addDir(translation(30011), "http://mpora.com/wakeboarding/videos",
'sortDirection', "")
+ addDir(translation(30012), "http://mpora.com/windsurfing/videos",
'sortDirection', "")
+ addDir(translation(30013), "http://mpora.com/kitesurfing/videos",
'sortDirection', "")
+ addDir(translation(30014), "http://mpora.com/road-cycling/videos",
'sortDirection', "")
+ addDir(translation(30015), "http://mpora.com/outdoor/videos",
'sortDirection', "")
+ addDir(translation(30020), "", 'search', "")
+ xbmcplugin.endOfDirectory(pluginhandle)
+ if forceViewMode:
+ xbmc.executebuiltin('Container.SetViewMode('+viewMode+')')
+
def sortDirection(url):
- urlRecent=url+"/recent"
- urlBrands=url+"/brands"
- urlHD=url+"/hd"
- addDir(translation(30017),urlRecent,'listVideos',"")
- addDir(translation(30016),url,'listVideos',"")
- addDir(translation(30019),urlHD,'listVideos',"")
- addDir(translation(30018),urlBrands,'listVideos',"")
- xbmcplugin.endOfDirectory(pluginhandle)
- if forceViewMode==True:
- xbmc.executebuiltin('Container.SetViewMode('+viewMode+')')
+ urlRecent = url+"/recent"
+ urlBrands = url+"/brands"
+ urlHD = url+"/hd"
+ addDir(translation(30017), urlRecent, 'listVideos', "")
+ addDir(translation(30016), url, 'listVideos', "")
+ addDir(translation(30019), urlHD, 'listVideos', "")
+ addDir(translation(30018), urlBrands, 'listVideos', "")
+ xbmcplugin.endOfDirectory(pluginhandle)
+ if forceViewMode:
+ xbmc.executebuiltin('Container.SetViewMode('+viewMode+')')
+
def listVideos(url):
- content = getUrl(url)
- matchPage=re.compile('<a class="next_page" rel="next" href="(.+?)">',
re.DOTALL).findall(content)
- content = content[content.find('<ul class="video-list">'):]
- content = content[:content.find('</ul>')]
- spl=content.split('<li')
- for i in range(1,len(spl),1):
- entry=spl[i]
- match=re.compile('<h6>(.+?)</h6>', re.DOTALL).findall(entry)
- title=match[0]
- title=cleanTitle(title)
- match=re.compile('href="(.+?)"', re.DOTALL).findall(entry)
- url="http://mpora.com"+match[0]
- match=re.compile('src="(.+?)"', re.DOTALL).findall(entry)
- thumb=match[0].replace("_200x112_","_640x360_").replace("_tn_","_")
- addLink(title,url,'playVideo',thumb)
- if len(matchPage)>0:
- urlNext="http://mpora.com"+matchPage[0]
- addDir(translation(30001),urlNext,'listVideos',"")
- xbmcplugin.endOfDirectory(pluginhandle)
- if forceViewMode==True:
- xbmc.executebuiltin('Container.SetViewMode('+viewMode+')')
+ content = getUrl(url)
+ spl = content.split('<a class="video-thumbnail')
+ for i in range(1, len(spl), 1):
+ entry = spl[i]
+ match = re.compile('<h6>(.+?)</h6>', re.DOTALL).findall(entry)
+ title = match[0]
+ title = cleanTitle(title)
+ match = re.compile('href="(.+?)"', re.DOTALL).findall(entry)
+ url = "http://mpora.com"+match[0]
+ match = re.compile('src="(.+?)"', re.DOTALL).findall(entry)
+ thumb = match[0].replace("_200x112_", "_640x360_").replace("_tn_", "_")
+ addLink(title, url, 'playVideo', thumb)
+ matchPage = re.compile('<a class="next_page" rel="next" href="(.+?)">',
re.DOTALL).findall(content)
+ if matchPage:
+ urlNext = "http://mpora.com"+matchPage[0]
+ addDir(translation(30001), urlNext, 'listVideos', "")
+ xbmcplugin.endOfDirectory(pluginhandle)
+ if forceViewMode:
+ xbmc.executebuiltin('Container.SetViewMode('+viewMode+')')
+
def search():
- keyboard = xbmc.Keyboard('', translation(30020))
- keyboard.doModal()
- if keyboard.isConfirmed() and keyboard.getText():
- search_string = keyboard.getText().replace(" ","+")
-
listVideos('http://mpora.com/search?q='+search_string+'&submit=search')
+ keyboard = xbmc.Keyboard('', translation(30020))
+ keyboard.doModal()
+ if keyboard.isConfirmed() and keyboard.getText():
+ search_string = keyboard.getText().replace(" ", "+")
+ listVideos('http://mpora.com/search?q='+search_string+'&submit=search')
+
def playVideo(url):
- content = getUrl(url)
-
matchSD=re.compile('"sd":{"sources":\\[{"type":"video/mp4","src":"(.+?)"}',
re.DOTALL).findall(content)
-
matchHD=re.compile('"hd":{"sources":\\[{"type":"video/mp4","src":"(.+?)"}',
re.DOTALL).findall(content)
- finalUrl=""
- if len(matchSD)>0:
- finalUrl=matchSD[0]
- if maxVideoQuality=="720p" and len(matchHD)>0:
- finalUrl=matchHD[0]
- if finalUrl!="":
- listitem = xbmcgui.ListItem(path=finalUrl)
- return xbmcplugin.setResolvedUrl(pluginhandle, True, listitem)
+ content = getUrl(url)
+ matchSD =
re.compile('"sd":{"sources":\\[{"type":"video/mp4","src":"(.+?)"}',
re.DOTALL).findall(content)
+ matchHD =
re.compile('"hd":{"sources":\\[{"type":"video/mp4","src":"(.+?)"}',
re.DOTALL).findall(content)
+ finalUrl = ""
+ if matchSD:
+ finalUrl = matchSD[0]
+ if maxVideoQuality == "720p" and len(matchHD) > 0:
+ finalUrl = matchHD[0]
+ if finalUrl:
+ listitem = xbmcgui.ListItem(path=finalUrl)
+ xbmcplugin.setResolvedUrl(pluginhandle, True, listitem)
+
def cleanTitle(title):
-
title=title.replace("<","<").replace(">",">").replace("&","&").replace("'","\\").replace(""","\"").replace("ß","Ã").replace("–","-")
-
title=title.replace("Ä","Ã").replace("Ü","Ã").replace("Ö","Ã").replace("ä","ä").replace("ü","ü").replace("ö","ö")
- title=title.strip()
- return title
+ title = title.replace("<", "<").replace(">", ">").replace("&",
"&").replace("'", "\\").replace(""", "\"").replace("ß",
"Ã").replace("–", "-")
+ title = title.replace("Ä", "Ã").replace("Ü",
"Ã").replace("Ö", "Ã").replace("ä", "ä").replace("ü",
"ü").replace("ö", "ö")
+ title = title.strip()
+ return title
+
def getUrl(url):
- req = urllib2.Request(url)
- req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 6.1; rv:14.0)
Gecko/20100101 Firefox/14.0.1')
- response = urllib2.urlopen(req)
- link=response.read()
- response.close()
- return link
+ req = urllib2.Request(url)
+ req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 6.1; rv:14.0)
Gecko/20100101 Firefox/14.0.1')
+ response = urllib2.urlopen(req)
+ link = response.read()
+ response.close()
+ return link
+
def parameters_string_to_dict(parameters):
- ''' Convert parameters encoded in a URL to a dict. '''
- paramDict = {}
- if parameters:
- paramPairs = parameters[1:].split("&")
- for paramsPair in paramPairs:
- paramSplits = paramsPair.split('=')
- if (len(paramSplits)) == 2:
- paramDict[paramSplits[0]] = paramSplits[1]
- return paramDict
-
-def addLink(name,url,mode,iconimage):
- 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 } )
- liz.setProperty('IsPlayable', 'true')
-
ok=xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]),url=u,listitem=liz)
- return ok
-
-def addDir(name,url,mode,iconimage):
- u=sys.argv[0]+"?url="+urllib.quote_plus(url)+"&mode="+str(mode)
- ok=True
- liz=xbmcgui.ListItem(name, iconImage="DefaultFolder.png",
thumbnailImage=iconimage)
- liz.setInfo( type="Video", infoLabels={ "Title": name } )
-
ok=xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]),url=u,listitem=liz,isFolder=True)
- return ok
-
-params=parameters_string_to_dict(sys.argv[2])
-mode=params.get('mode')
-url=params.get('url')
-if type(url)==type(str()):
- url=urllib.unquote_plus(url)
+ ''' Convert parameters encoded in a URL to a dict. '''
+ paramDict = {}
+ if parameters:
+ paramPairs = parameters[1:].split("&")
+ for paramsPair in paramPairs:
+ paramSplits = paramsPair.split('=')
+ if (len(paramSplits)) == 2:
+ paramDict[paramSplits[0]] = paramSplits[1]
+ return paramDict
+
+
+def addLink(name, url, mode, iconimage):
+ 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})
+ liz.setProperty('IsPlayable', 'true')
+ ok = xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]), url=u,
listitem=liz)
+ return ok
+
+
+def addDir(name, url, mode, iconimage):
+ u = sys.argv[0]+"?url="+urllib.quote_plus(url)+"&mode="+str(mode)
+ ok = True
+ liz = xbmcgui.ListItem(name, iconImage="DefaultFolder.png",
thumbnailImage=iconimage)
+ liz.setInfo(type="Video", infoLabels={"Title": name})
+ ok = xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]), url=u,
listitem=liz, isFolder=True)
+ return ok
+
+params = parameters_string_to_dict(sys.argv[2])
+mode = params.get('mode')
+url = params.get('url')
+if isinstance(url, type(str())):
+ url = urllib.unquote_plus(url)
if mode == 'listVideos':
listVideos(url)
-----------------------------------------------------------------------
Summary of changes:
plugin.video.mpora_com/addon.xml | 7 +-
plugin.video.mpora_com/changelog.txt | 4 +-
plugin.video.mpora_com/default.py | 246 ++++++++++++++++++----------------
3 files changed, 136 insertions(+), 121 deletions(-)
hooks/post-receive
--
Plugins
------------------------------------------------------------------------------
Get 100% visibility into Java/.NET code with AppDynamics Lite
It's a free troubleshooting tool designed for production
Get down to code-level detail for bottlenecks, with <2% overhead.
Download for free and get started troubleshooting in minutes.
http://p.sf.net/sfu/appdyn_d2d_ap2
_______________________________________________
Xbmc-addons mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xbmc-addons