The branch, eden has been updated
via 2304bbc8d152e32d2199f30c88675c6ce30420e9 (commit)
via 2a0a5aeada1795cb12a55964ee98e2e60820af17 (commit)
from 21911ee68877e33049a3ed3c7fc271d21b3a0041 (commit)
- Log -----------------------------------------------------------------
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/plugins;a=commit;h=2304bbc8d152e32d2199f30c88675c6ce30420e9
commit 2304bbc8d152e32d2199f30c88675c6ce30420e9
Author: spiff <[email protected]>
Date: Mon Jun 18 09:22:11 2012 +0200
[plugin.program.jdownloader] updated to version 1.3.0
diff --git a/plugin.program.jdownloader/addon.xml
b/plugin.program.jdownloader/addon.xml
index 6f38969..005a663 100644
--- a/plugin.program.jdownloader/addon.xml
+++ b/plugin.program.jdownloader/addon.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="plugin.program.jdownloader"
name="JDownloader"
- version="1.2.5"
+ version="1.3.0"
provider-name="pgoeri">
<requires>
<import addon="xbmc.python" version="2.0"/>
diff --git a/plugin.program.jdownloader/changelog.txt
b/plugin.program.jdownloader/changelog.txt
index 0788102..7ca5ec2 100644
--- a/plugin.program.jdownloader/changelog.txt
+++ b/plugin.program.jdownloader/changelog.txt
@@ -1,3 +1,12 @@
+[B]Version 1.3.0[/B]
+ * bug - jdnightly: fixed problems with nightly version of JDownloader
+ * bug - pkg_list: fixed empty list in 'finished packages' sub menu
+ * bug - add_links: fixed problem with automatic start of downloads: 'Start
downloading after adding new links' feature did not work, when the dl list was
completely empty
+ * improvement - pkg_list: rearranged package information in package list
view (<percentage> (- <eta>) | <title> | <size>)
+ * improvement - pkg_list: automatic generated packages names (e.g. "Added
234204920") get replaced by filename, if possible
+ * feature - general: added auto refresh feature (new settings: enabled &
interval)
+ * feature - file_list: show all files and their status by clicking on a
package in the pkg list
+
[B]Version 1.2.5[/B]
* Added new actions to user interface: 'Enable/Disable reconnect',
'Enable/Disable premium'
* Added new action to plugin interface: 'Reconnect'
diff --git a/plugin.program.jdownloader/default.py
b/plugin.program.jdownloader/default.py
index ffa7df5..a6565ef 100644
--- a/plugin.program.jdownloader/default.py
+++ b/plugin.program.jdownloader/default.py
@@ -6,29 +6,24 @@ __url__ =
"http://pgoeri-xbmc-plugins.googlecode.com"
__svn_url__ =
"http://pgoeri-xbmc-plugins.googlecode.com/svn/trunk/plugin.program.jdownloader/"
__credits__ = "Team XBMC passion, http://passion-xbmc.org &
pgoeri"
__platform__ = "xbmc media center, [LINUX, OS X, WIN32]"
-__date__ = "17-07-2011"
-__version__ = "1.2.5"
-__svn_revision__ = "$Revision: $".replace( "Revision", "" ).strip( "$:
" )
-__XBMC_Revision__ = "4fbc70fda4f3706e4e90ff353acde49176c6a07c" # Trunk
(01/06/11)
+__date__ = "11-06-2012"
+__version__ = "1.3.0"
+__XBMC_Revision__ = "11.0" # Eden
__useragent__ = "Mozilla/5.0 (Windows; U; Windows NT 5.1; fr;
rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1"
from traceback import print_exc
-import xbmcplugin
-import xbmc
-import xbmcgui
-import xbmcaddon
-import os
-import urllib
-import time
-
-__addon__ = xbmcaddon.Addon(__addonID__)
+import xbmc,xbmcplugin,xbmcgui,xbmcaddon
+import os,urllib,time
+
+__addon__ = xbmcaddon.Addon(__addonID__)
+__dialog__ = xbmcgui.Dialog()
__language__ = __addon__.getLocalizedString
__dbg__ = __addon__.getSetting( "debug" ) == "true"
__logprefix__ = "p.p.jd-"+__version__+": "
+# add lib directoy to sys path (in order to import the jdownloader python file)
BASE_RESOURCE_PATH = os.path.join( __addon__.getAddonInfo('path'), "resources"
)
sys.path.append( os.path.join( BASE_RESOURCE_PATH, "lib" ) )
-dialog = xbmcgui.Dialog()
import jdownloader
@@ -97,30 +92,59 @@ def get_filename( mode = 0):
filename = def_file
else:
# show browse dialog
- filename = dialog.browse( 1 , heading , "files", mask, False,
False, def_file_path)
+ filename = __dialog__.browse( 1 , heading , "files", mask,
False, False, def_file_path)
# verify selection
if not os.path.isfile(filename):
filename = ""
return filename
+def item_is_finished(percent):
+ if (percent == "100,00" or percent == "100.00"):
+ return True
+ else:
+ return False
+
+def force_view():
+ # change to list view if set in settings
+ if (__addon__.getSetting( "list_view" ) == "true"):
+ xbmc.executebuiltin("Container.SetViewMode(51)")
+
+def auto_refresh(status, force=False):
+ refresh = False
+
+ if (force):
+ refresh = True
+ seconds = 3
+ elif (__addon__.getSetting( "auto_refresh" ) == "true" and status !=
jdownloader.STATE_NOTRUNNING):
+ refresh = True
+ seconds = int(__addon__.getSetting( "refresh_interval" ))
+ seconds = min(seconds,60)
+ seconds = max(seconds,1)
+
+ if (refresh):
+ xbmc.executebuiltin('XBMC.AlarmClock(JDAutoRefresh,
XBMC.RunPlugin(plugin://%s?mode=5&url=refresh), 00:00:%02d, true)' %
(__addonID__, seconds ) )
+
+
params=get_params()
url=None
mode=None
try: url=urllib.unquote_plus(params["url"])
except: pass
+
try: mode=int(params["mode"])
except: pass
-try:
+
+try:
if "action" in params: mode=3
except: pass
if __dbg__:
print __logprefix__ + "MODE: " + str(mode) + " URL: " + str(url)
-#check connection
+#check connection (and get state only once)
try:
- jdownloader.get(jdownloader.GET_STATUS)
+ status = jdownloader.get(jdownloader.GET_STATUS)
except jdownloader.JDError, error:
(type, e, traceback) = sys.exc_info()
showError(xbmc.getLocalizedString(257), e.message)
@@ -129,15 +153,15 @@ except jdownloader.JDError, error:
#main menu:
if mode==None or mode==0:
-
#status color
- status = jdownloader.get(jdownloader.GET_STATUS)
if jdownloader.STATE_NOTRUNNING in status:
- status = status.replace( status , "[COLOR=FFFF0000]%s[/COLOR]"
% ( status )) # RED
+ status_display = status.replace( status ,
"[COLOR=FFFF0000]%s[/COLOR]" % ( status )) # RED
elif jdownloader.STATE_RUNNING in status:
- status = status.replace( status , "[COLOR=ff00FF00]%s[/COLOR]"
% ( status )) # GREEN
+ status_display = status.replace( status ,
"[COLOR=ff00FF00]%s[/COLOR]" % ( status )) # GREEN
elif jdownloader.STATE_STOPPING in status:
- status = status.replace( status , "[COLOR=ffFFFF00]%s[/COLOR]"
% ( status )) # YELLOW
+ status_display = status.replace( status ,
"[COLOR=ffFFFF00]%s[/COLOR]" % ( status )) # YELLOW
+ else:
+ status_display = status
#downloadspeed color (change color to YELLOW if speed limit is set)
downloadspeed = jdownloader.get(jdownloader.GET_SPEED)
@@ -146,41 +170,57 @@ if mode==None or mode==0:
downloadspeed = downloadspeed.replace( downloadspeed ,
"[COLOR=ffFFFF00]%s[/COLOR]" % ( downloadspeed ))
#add the three main list entrys
- addDir( __language__(30051) + ": %s - %s: %s KB/s - %s %s" % (status ,
__language__(30052) , downloadspeed,
jdownloader.get(jdownloader.GET_CURRENTFILECNT), __language__(30053)) ,
"actions" , 2 , "" )
- addDir( __language__(30050), "currentlist" , 1 , "" )
+ addDir( __language__(30051) + ": %s - %s: %s KB/s - %s %s" %
(status_display , __language__(30052) , downloadspeed,
jdownloader.get(jdownloader.GET_CURRENTFILECNT), __language__(30053)) ,
"actions" , 2 , "" )
+ addDir( __language__(30050), "alllist" , 1 , "" )
addDir( __language__(30056), "finishedlist" , 1 , "" )
+
+ force_view()
+
end_of_directory( True )
+ auto_refresh(status)
+
#list of packages
-if mode==1:
- filelist = jdownloader.get_downloadlist(url)
- for item in filelist:
- add = True
- summary = item["Name"] + item["Size"] + item["Percentage"] + "%"
+if mode==1:
+ addDir( __language__(30058), "", None, "") # add dummy entry in first
line, for prettier behavior on auto refresh
+ pkglist = jdownloader.get_pkglist(url)
+ for pkg in pkglist:
+ summary = pkg["percent"] + "%"
+ if (pkg["eta"] != "~"):
+ summary += " - " + pkg["eta"]
+ summary += " | " + pkg["display"] + " | " + pkg["size"]
#modify color (YELLOW = active downloading, GREEN = finished)
- if not item["Eta"] == "~ ": summary = summary.replace( summary
, "[COLOR=ffFFFF00]%s[/COLOR]" % ( summary )) # YELLOW
- elif item["Percentage"] == "100,00": summary = summary.replace(
summary , "[COLOR=ff00FF00]%s[/COLOR]" % ( summary )) # GREEN
+ if not pkg["eta"] == "~": summary = summary.replace( summary ,
"[COLOR=ffFFFF00]%s[/COLOR]" % ( summary )) # YELLOW
+ elif item_is_finished(pkg["percent"]): summary =
summary.replace( summary , "[COLOR=ff00FF00]%s[/COLOR]" % ( summary )) # GREEN
+
#only add finished packages in finishedlist
- if url == "finishedlist":
- if not item["Percentage"] == "100,00" : add = False
- if add: addLink( summary , "" , "" )
+ if (url == "finishedlist" and not
item_is_finished(pkg["percent"])): continue
+
+ addDir( summary , pkg["name"] , 4, "" )
+
+ force_view()
+
end_of_directory( True )
+
+ auto_refresh(status)
#choose action
if mode== 2:
- actions = jdownloader.getAvailableActions()
+ xbmc.executebuiltin('XBMC.CancelAlarm(JDAutoRefresh, true)')
+
+ actions = jdownloader.getAvailableActions(status)
actionlabels = []
for i in actions:
actionlabels.append(__language__(jdownloader.ALL_ACTIONS[i]))
- select = dialog.select(__language__(30054) , actionlabels)
+ select = __dialog__.select(__language__(30054) , actionlabels)
if not select == -1:
if actions[select] in
[jdownloader.ACTION_SPEEDLIMIT,jdownloader.ACTION_MAXDOWNLOADS]:
- limit = dialog.numeric( 0 , __language__(30055) )
+ limit = __dialog__.numeric( 0 , __language__(30055) )
result = jdownloader.action(actions[select],limit)
elif actions[select] == jdownloader.ACTION_JD_UPDATE:
- limit = dialog.yesno( "JDownloader" ,
__language__(30057) )
+ limit = __dialog__.yesno( "JDownloader" ,
__language__(30057) )
result = jdownloader.action(actions[select],limit)
elif actions[select] == jdownloader.ACTION_ADD_LINKS:
filename = get_filename(0);
@@ -204,14 +244,39 @@ if mode== 2:
result =
result.replace("reconnect=true","reconnect=false")
showMessage("JDownloader" , result )
- time.sleep(3) # otherwise status is not correct after start/stop
- xbmc.executebuiltin("XBMC.Container.Update")
+
+ auto_refresh(status,True)
#interface for other addons
if mode==3:
if (params["action"] == "addlink"):
jdownloader.action_addlink(url)
+ if (params["action"] == "addlinklist"):
+ jdownloader.action_addlinklist(url)
if (params["action"] == "addcontainer"):
jdownloader.action_addcontainer(url)
if (params["action"] == "reconnect"):
jdownloader.action(jdownloader.ACTION_RECONNECT)
+
+#list of files per package
+if mode==4:
+ addLink( __language__(30059),"","") # add dummy entry in first line,
for prettier behavior on auto refresh
+ filelist = jdownloader.get_filelist(url)
+ for file in filelist:
+ summary = file["name"] + " | " + file["status"]
+
+ #modify color (YELLOW = active downloading, GREEN = finished)
+ if not file["speed"] == "0": summary = summary.replace( summary
, "[COLOR=ffFFFF00]%s[/COLOR]" % ( summary )) # YELLOW
+ elif item_is_finished(file["percent"]): summary =
summary.replace( summary , "[COLOR=ff00FF00]%s[/COLOR]" % ( summary )) # GREEN
+
+ addLink( summary , "" , "" )
+
+ force_view()
+
+ end_of_directory( True )
+
+ auto_refresh(status)
+
+#refresh
+if mode==5:
+ xbmc.executebuiltin("XBMC.Container.Refresh")
\ No newline at end of file
diff --git a/plugin.program.jdownloader/resources/language/English/strings.xml
b/plugin.program.jdownloader/resources/language/English/strings.xml
index 5af5056..58684f9 100644
--- a/plugin.program.jdownloader/resources/language/English/strings.xml
+++ b/plugin.program.jdownloader/resources/language/English/strings.xml
@@ -5,7 +5,7 @@
<string id="30000">Connection</string>
<string id="30001">IP Adress</string>
<string id="30002">Port</string>
- <string id="30003">Add new links direct to downloads</string>
+ <string id="30003">Add new links directly to downloads</string>
<string id="30004">No</string>
<string id="30005">Yes</string>
<string id="30006">Start downloading after adding new links</string>
@@ -14,6 +14,8 @@
<string id="30009">Hostname</string>
<string id="30010">Fall back connection</string>
<string id="30011">Enable fall back connection</string>
+ <string id="30012">Enable auto refresh</string>
+ <string id="30013">Refresh interval</string>
<string id="30020">Files</string>
<string id="30021">Default Path</string>
@@ -22,6 +24,7 @@
<string id="30030">Advanced</string>
<string id="30031">Debug</string>
+ <string id="30032">Set big list view for videos in Confluence</string>
<!--GENERAL STRINGS -->
<string id="30050">All Packages</string>
@@ -32,8 +35,8 @@
<string id="30055">Limit</string>
<string id="30056">Finished Packages</string>
<string id="30057">Auto-Restart after Update?</string>
- <string id="30058"></string>
- <string id="30059"></string>
+ <string id="30058">Packages:</string>
+ <string id="30059">Files:</string>
<string id="30060">Start</string>
<string id="30061">Stop</string>
diff --git a/plugin.program.jdownloader/resources/lib/jdownloader.py
b/plugin.program.jdownloader/resources/lib/jdownloader.py
index 325f107..6d67066 100644
--- a/plugin.program.jdownloader/resources/lib/jdownloader.py
+++ b/plugin.program.jdownloader/resources/lib/jdownloader.py
@@ -1,12 +1,10 @@
-# script constants
-__addonID__ = "plugin.program.jdownloader"
-
import socket,urllib,urllib2,httplib,os
from xml.dom import minidom
from traceback import print_exc
import xbmc,xbmcaddon
-import sys
+import sys,time
+__addon__ = sys.modules[ "__main__" ].__addon__
__dbg__ = sys.modules[ "__main__" ].__dbg__
__logprefix__ = sys.modules[ "__main__" ].__logprefix__
@@ -62,11 +60,6 @@ ALL_ACTIONS = {
ACTION_JD_SHUTDOWN: 30068
}
-Addon = xbmcaddon.Addon(id=__addonID__)
-BASE_RESOURCE_PATH = xbmc.translatePath( Addon.getAddonInfo( "Profile" ) )
-# make sure addon_data dir exists
-try: os.mkdir(BASE_RESOURCE_PATH)
-except: pass
class JDError(Exception):
def __init__(self, message='', original=None):
@@ -109,10 +102,10 @@ def _http_query_with_urlprefix(query,urlPrefix):
def _get_urlprefix(setting_suffix):
# load settings
- ip_adress = str(Addon.getSetting("ip_adress"+setting_suffix))
- ip_port = str(Addon.getSetting("ip_port"+setting_suffix))
- use_hostname = Addon.getSetting("use_hostname"+setting_suffix) == "true"
- hostname = str(Addon.getSetting("hostname"+setting_suffix))
+ ip_adress = str(__addon__.getSetting("ip_adress"+setting_suffix))
+ ip_port = str(__addon__.getSetting("ip_port"+setting_suffix))
+ use_hostname = __addon__.getSetting("use_hostname"+setting_suffix) ==
"true"
+ hostname = str(__addon__.getSetting("hostname"+setting_suffix))
if (use_hostname):
urlPrefix = 'http://' + hostname + ':' + ip_port
@@ -125,44 +118,85 @@ def _http_query(query):
try:
result = _http_query_with_urlprefix(query, _get_urlprefix(""))
except JDError, error:
- use_conn2 = Addon.getSetting("use_conn2") == "true"
+ use_conn2 = __addon__.getSetting("use_conn2") == "true"
if (use_conn2):
result = _http_query_with_urlprefix(query,
_get_urlprefix("2"))
else:
raise error
return result
+# determine the current remote control api version (nightly or stable)
+nightly = False
+try:
+ if (int(_http_query("/get/rcversion")) > 9568 ):
+ nightly = True
+except: pass
+
# Get Info #
-# As long as only the package info gets parsed, it doesn't matter which list
gets loaded (currentlist,alllist,finishedlist)
-# These three only differ in means of listed files, the package information is
always the same.
-# Due to that, the smallest will be used: currentlist
-def get_downloadlist(x):
- xmlfile = os.path.join( BASE_RESOURCE_PATH , "dlist.xml" )
- try:
- #result = _http_query('/get/downloads/%s' % x)
- result = _http_query('/get/downloads/currentlist')
-
- fileObj = open(xmlfile,"w")
- fileObj.write(result)
- fileObj.close()
-
- xmldoc = minidom.parseString(result)
+def load_pkglist(which):
+ if (nightly):
+ if (which == "finishedlist"):
+ getStr = "finished/list"
+ else:
+ getStr = "all/list"
+ else:
+ getStr = which
+
+ result = _http_query('/get/downloads/%s' % getStr)
+
+ return result
+
+def get_pkglist(which):
+ pkgxml = load_pkglist(which)
+
+ xmldoc = minidom.parseString(pkgxml)
+ if (nightly):
+ itemlist = xmldoc.getElementsByTagName('packages')
+ else:
itemlist = xmldoc.getElementsByTagName('package')
- filelist = []
- for s in itemlist :
- package = {}
- package["Name"] = s.attributes['package_name'].value +
" "
- package["Eta"] = s.attributes['package_ETA'].value+ " "
- package["Size"] = s.attributes['package_size'].value+ "
"
- package["Percentage"] =
s.attributes['package_percent'].value
- filelist.append(package)
- return filelist
- #return(packageName, packageEta, packageSize,
packagePercentage) debug
- except IOError:
- print_exc()
- return 'error'
+ pkglist = []
+ for item in itemlist :
+ package = {}
+ package["name"] = item.attributes['package_name'].value
+ package["eta"] = item.attributes['package_ETA'].value
+ package["size"] = item.attributes['package_size'].value
+ package["percent"] = item.attributes['package_percent'].value
+
+ # HACK: try to improve packagename
+ package["display"] = package["name"]
+ if (package["name"].startswith("Added ")):
+ files = item.getElementsByTagName('file')
+ if (len(files)>0):
+ filename =
files[0].attributes['file_name'].value
+ if (".part" in filename):
+ package["display"] =
filename.split(".part")[0]
+ else:
+ package["display"] = filename
+
+ pkglist.append(package)
+ return pkglist
+def get_filelist(which):
+ pkgxml = load_pkglist("alllist")
+
+ xmldoc = minidom.parseString(pkgxml)
+ if (nightly):
+ packages = xmldoc.getElementsByTagName('packages')
+ else:
+ packages = xmldoc.getElementsByTagName('package')
+ filelist = []
+ for pkgitem in packages:
+ if (pkgitem.attributes['package_name'].value == which):
+ files = pkgitem.getElementsByTagName('file')
+ for fileitem in files:
+ file = {}
+ file["name"] =
fileitem.attributes['file_name'].value
+ file["percent"] =
fileitem.attributes['file_percent'].value
+ file["speed"] =
fileitem.attributes['file_speed'].value
+ file["status"] =
fileitem.attributes['file_status'].value
+ filelist.append(file)
+ return filelist
def get(x):
if x == GET_SPEED:
@@ -174,20 +208,21 @@ def get(x):
if x == GET_STATUS:
getStr = '/get/downloadstatus'
if x == GET_CURRENTFILECNT:
- getStr = '/get/downloads/currentcount'
+ if (nightly):
+ getStr = '/get/downloads/current/count'
+ else:
+ getStr = '/get/downloads/currentcount'
result = _http_query(getStr)
if result.startswith("0"): result = 'none'
return result
# Actions #
-
-def getAvailableActions():
+def getAvailableActions(status):
actions = ALL_ACTIONS.keys();
actions.sort();
- status = get(GET_STATUS)
if STATE_NOTRUNNING in status:
for i in
[ACTION_STOP,ACTION_PAUSE,ACTION_SPEEDLIMIT,ACTION_MAXDOWNLOADS]:
actions.remove(i)
@@ -214,51 +249,108 @@ def action( x , limit = "0" ):
actionStr = '/action/pause'
if x == ACTION_TOGGLE:
actionStr = '/action/toggle'
- if x == ACTION_SPEEDLIMIT:
- actionStr = '/action/set/download/limit/' + str(limit)
- if x == ACTION_MAXDOWNLOADS:
- actionStr = '/action/set/download/max/' + str(limit)
if x == ACTION_RECONNECT:
actionStr = '/action/reconnect'
- if x == ACTION_ENA_RECONNECT:
- actionStr = '/action/set/reconnectenabled/false' # interface is
wrong, expects the opposite values
- if x == ACTION_DIS_RECONNECT:
- actionStr = '/action/set/reconnectenabled/true' # interface is
wrong, expects the opposite values
- if x == ACTION_ENA_PREMIUM:
- actionStr = '/action/set/premiumenabled/true'
- if x == ACTION_DIS_PREMIUM:
- actionStr = '/action/set/premiumenabled/false'
- if x == ACTION_JD_UPDATE:
- actionStr = '/action/update/force%s/' % str(limit)
+ if (nightly):
+ if x == ACTION_SPEEDLIMIT:
+ actionStr = '/set/download/limit/' + str(limit)
+ if x == ACTION_MAXDOWNLOADS:
+ actionStr = '/set/download/max/' + str(limit)
+ if x == ACTION_ENA_RECONNECT:
+ actionStr = '/set/reconnect/true'
+ if x == ACTION_DIS_RECONNECT:
+ actionStr = '/set/reconnect/false'
+ if x == ACTION_ENA_PREMIUM:
+ actionStr = '/set/premium/true'
+ if x == ACTION_DIS_PREMIUM:
+ actionStr = '/set/premium/false'
+ if x == ACTION_JD_UPDATE:
+ if (limit==1):
+ actionStr = '/action/forceupdate'
+ else:
+ actionStr = '/action/update'
+ else:
+ if x == ACTION_SPEEDLIMIT:
+ actionStr = '/action/set/download/limit/' + str(limit)
+ if x == ACTION_MAXDOWNLOADS:
+ actionStr = '/action/set/download/max/' + str(limit)
+ if x == ACTION_ENA_RECONNECT:
+ actionStr = '/action/set/reconnectenabled/false' #
interface is wrong, expects the opposite values
+ if x == ACTION_DIS_RECONNECT:
+ actionStr = '/action/set/reconnectenabled/true' #
interface is wrong, expects the opposite values
+ if x == ACTION_ENA_PREMIUM:
+ actionStr = '/action/set/premiumenabled/true'
+ if x == ACTION_DIS_PREMIUM:
+ actionStr = '/action/set/premiumenabled/false'
+ if x == ACTION_JD_UPDATE:
+ actionStr = '/action/update/force%s/' % str(limit)
+
if x == ACTION_JD_RESTART:
actionStr = '/action/restart'
if x == ACTION_JD_SHUTDOWN:
actionStr = '/action/shutdown'
result = _http_query(actionStr)
+
return result
def action_addcontainer(link):
# get settings
- grabber = Addon.getSetting("add_use_grabber")
- start = Addon.getSetting("add_start")
+ grabber = __addon__.getSetting("add_use_grabber")
+ start = __addon__.getSetting("add_start")
# add link
# Parameter 'start' is not supported with rc-version 9568!
#_http_query('/action/add/container/grabber' + str(grabber) + '/start'
+ str(start) + '/' + str(link))
result = _http_query('/action/add/container/grabber' + str(grabber) +
'/' + str(link))
+
+ force_start()
+
return result
-# Links seperated by spaces, won't work, call this functions for each link
seperatly
+# Links separated by spaces, won't work, call this functions for each link
separately
def action_addlink(link):
# get settings
- grabber = Addon.getSetting("add_use_grabber")
- start = Addon.getSetting("add_start")
+ grabber = __addon__.getSetting("add_use_grabber")
+ start = __addon__.getSetting("add_start")
# prepare link - quote special chars, e.g '?'
link = urllib.quote(link)
# restore double point (won't work atm)
link = link.replace( '%3A', ':' )
# add link
result = _http_query('/action/add/links/grabber' + str(grabber) +
'/start' + str(start) + '/' + str(link))
+
+ force_start()
+
+ return result
+
+# Links separated by spaces, won't work, but as parameters
(&l1=<link1>&l2=<link2>&...) it works (in r9568)
+# expects multiple links separated by '|'
+def action_addlinklist(linklist):
+ # get settings
+ grabber = __addon__.getSetting("add_use_grabber")
+ start = __addon__.getSetting("add_start")
+
+ links = ""
+ first = True
+ idx=0
+ for link in linklist.split(" "):
+ # prepare link - quote special chars, e.g '?'
+ link = urllib.quote(link)
+ # restore double point (won't work atm)
+ link = link.replace( '%3A', ':' )
+ # add link
+ if (first):
+ links = "?l"
+ first = False
+ else:
+ links += "&l"
+ links += str(idx) + "=" + link
+ idx += 1
+
+ result = _http_query('/action/add/links/grabber' + str(grabber) +
'/start' + str(start) + '/' + str(links))
+
+ force_start()
+
return result
def action_addlinks_from_file(filename):
@@ -267,4 +359,12 @@ def action_addlinks_from_file(filename):
for line in lines:
action_addlink(line)
- return "%d link(s) added" % (len(lines), )
\ No newline at end of file
+ return "%d link(s) added" % (len(lines), )
+
+# HACK: fixes problem, that jd already stopped again before the links are
added to the dl list (decrypting takes a few seconds)
+def force_start():
+ if (__addon__.getSetting("add_start") == "1"):
+ now = time.time();
+ while ((get(GET_STATUS) != STATE_RUNNING or get(GET_SPEED) ==
"none") and now + 20.0 > time.time()): # try for a maximum of 20 seconds to
start jd
+ action(ACTION_START)
+ time.sleep(4.0)
\ No newline at end of file
diff --git a/plugin.program.jdownloader/resources/settings.xml
b/plugin.program.jdownloader/resources/settings.xml
index b563236..aa44c0f 100644
--- a/plugin.program.jdownloader/resources/settings.xml
+++ b/plugin.program.jdownloader/resources/settings.xml
@@ -1,5 +1,10 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<settings>
+ <!-- General -->
+ <category>
+ <setting id="auto_refresh" type="bool" label="30012" default="true"/>
+ <setting id="refresh_interval" type="number" label="30013" default="3"
enable="eq(-1,true)" />
+ </category>
<!-- Connection -->
<category label="30000">
<setting id="use_hostname" type="bool" label="30008" default="false" />
@@ -28,6 +33,7 @@
<!-- Advanced -->
<category label="30030">
+ <setting id="list_view" type="bool" label="30032" default="true" />
<setting id="debug" type="bool" label="30031" default="false" />
</category>
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/plugins;a=commit;h=2a0a5aeada1795cb12a55964ee98e2e60820af17
-----------------------------------------------------------------------
Summary of changes:
plugin.program.jdownloader/addon.xml | 2 +-
plugin.program.jdownloader/changelog.txt | 9 +
plugin.program.jdownloader/default.py | 147 +++++++++----
.../resources/language/English/strings.xml | 9 +-
.../resources/lib/jdownloader.py | 230 ++++++++++++++------
plugin.program.jdownloader/resources/settings.xml | 6 +
.../LICENSE.txt | 0
plugin.video.servustv/addon.xml | 19 ++
plugin.video.servustv/brightcovePlayer.py | 46 ++++
plugin.video.servustv/changelog.txt | 6 +
plugin.video.servustv/default.py | 154 +++++++++++++
plugin.video.servustv/icon.png | Bin 0 -> 28949 bytes
.../resources/language/English/strings.xml | 6 +
.../resources/language/German/strings.xml | 6 +
14 files changed, 530 insertions(+), 110 deletions(-)
copy {plugin.video.cinemassacre => plugin.video.servustv}/LICENSE.txt (100%)
mode change 100644 => 100755
create mode 100644 plugin.video.servustv/addon.xml
create mode 100644 plugin.video.servustv/brightcovePlayer.py
create mode 100755 plugin.video.servustv/changelog.txt
create mode 100644 plugin.video.servustv/default.py
create mode 100644 plugin.video.servustv/icon.png
create mode 100644 plugin.video.servustv/resources/language/English/strings.xml
create mode 100644 plugin.video.servustv/resources/language/German/strings.xml
hooks/post-receive
--
Plugins
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Xbmc-addons mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xbmc-addons