summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README95
-rw-r--r--module/remote/thriftbackend/pyload.thrift57
2 files changed, 106 insertions, 46 deletions
diff --git a/README b/README
index f0d3b675d..2965f3f32 100644
--- a/README
+++ b/README
@@ -1,19 +1,4 @@
- ?IIIIIIII77777:~~. NM M
- +III777777$$$$$7~~~~, NM M
- III777777$$$$$$+~~~== MMMMMMM 8M M NM MMI OMM$ MMO M
- I777777++++++=.~~==== M MM 8M M NM 7M MN M MD M
- 77777 ~~~~~~~~~====== M NM 8M M NM MO M $DDDM NM M
- 77777~~~~~~~========= M MM 8M M NM M8 M MM M NM M
- 777$~~~~~========== MNMZ8MM +MMMMM?M NM $M MM MM M MZ M
- ~~~==,,,,,, M M NMMMMMN 7MMO MMM= IMMD
- ~======= =~ M M
- ~======~ = DMMO
- ~=======
- :=====
- :===
- ,=,
-
Description
===========
@@ -23,47 +8,81 @@ It supports link decryption as well as all important container formats.
pyLoad is written entirely in Python and is currently under heavy development.
-To read the newest info, get the latest version, find help or contribute
-to the wiki, visit <http://pyload.org/>
+For news, downloads, wiki, forum and further information visit http://pyload.org/
To report bugs, suggest features, ask a question, get the developer version
-or help us out, visit <http://bitbucket.org/spoob/pyload/>
+or help us out, visit http://bitbucket.org/spoob/pyload/
+
+Documentation about extending pyLoad can be found at http://docs.pyload.org or join us at #pyload on irc.freenode.net
-Requirements
+Dependencies
============
-pycrypto: RSDF/CCF/DLC support
-pycurl: lower memory footprint while downloading
-pyqt4: for the GUI
-tesseract, PIL: Captcha recognition
+You need at least python 2.5 to run pyLoad and all of these required libaries.
+They should be automatically installed when using pip install.
+The prebuilt pyload packages also install these dependencies or have them included, so manuall install
+is only needed when installing pyLoad from source.
+
+Required
+--------
+
+- pycurl a.k.a python-curl
+- jinja2
+- beaker
+- thrift
+- simplejson (for python <= 2.6)
+
+Some plugins require additional packages, only install these when needed.
+
+Optional
+--------
+
+- pycrypto: RSDF/CCF/DLC support
+- tesseract, python-pil a.k.a python-imaging: Automatic captcha recognition for a small amount of plugins
+- jsengine (spidermonkey, ossp-js, pyv8, rhino): Used for several hoster, ClickNLoad
+- feedparser
+- BeautifulSoup
First start
===========
-First, run
-$ python pyLoadCore.py
-Follow the instructions of the setup assistent.
+Note: If you installed pyload via package-manager `python pyLoadCore.py` is probably equivalent to `pyLoadCore`
+
+Run::
+
+ python pyLoadCore.py
+
+and follow the instructions of the setup assistent.
+
+For a list of options use::
+
+ python pyLoadCore.py -h
Configuration
-===========
+=============
-After the first start you can configurate pyLoad with the webinterface or the GUI.
-Additionally you could simply edit the config files located in your pyLoad home dir(defaults to: ~/.pyload)
+After finishing the setup assistent pyLoad is ready to use and more configuration can be done via webinterface.
+Additionally you could simply edit the config files located in your pyLoad home dir (defaults to: ~/.pyload)
with your favorite editor and edit the appropriate options. For a short description of
-the options take a look at <http://pyload.org/configuration>.
+the options take a look at<http://pyload.org/configuration.
+
+To restart the configure assistent run::
+
+ python pyLoadCore.py -s
Adding downloads
-================
+----------------
+
+To start the CLI and connect to a local server, run::
+
+ python pyLoadCli.py -l
-To start the CLI and connect to a local server, run
-$ python pyLoadCli.py -l
+for more options refer to::
-If you want to connect from graphical enviroment, you can also use the GUI:
-$ python pyLoadGui.py
+ python pyLoadCli.py -h
-Or access the address you setted for the webinterface with your webbrowser.
+The webinterface can be accessed when pointing your webbrowser to the ip and configured port, defaults to http://localhost:8000
Notes
=====
-For more information, see
-<http://pyload.org/>
+For more information, see http://pyload.org/
diff --git a/module/remote/thriftbackend/pyload.thrift b/module/remote/thriftbackend/pyload.thrift
index 5d828854c..1542e651a 100644
--- a/module/remote/thriftbackend/pyload.thrift
+++ b/module/remote/thriftbackend/pyload.thrift
@@ -4,6 +4,7 @@ typedef i32 FileID
typedef i32 PackageID
typedef i32 TaskID
typedef i32 ResultID
+typedef i32 InteractionID
typedef list<string> LinkList
typedef string PluginName
typedef byte Progress
@@ -38,6 +39,31 @@ enum ElementType {
File
}
+// types for user interaction
+// some may only be place holder currently not supported
+// also all input - output combination are not reasonable, see InteractionManager for further info
+enum Input {
+ NONE,
+ TEXT,
+ TEXTBOX,
+ PASSWORD,
+ BOOL, // confirm like, yes or no dialog
+ CLICK, // for positional captchas
+ CHOICE, // choice from list
+ MULTIPLE, // multiple choice from list of elements
+ LIST, // arbitary list of elements
+ TABLE // table like data structure
+}
+// more can be implemented by need
+
+// this describes the type of the outgoing interaction
+// ensure they can be logcial or'ed
+enum Output {
+ CAPTCHA = 1,
+ QUESTION = 2,
+ NOTIFICATION = 4,
+}
+
struct DownloadInfo {
1: FileID fid,
2: string name,
@@ -111,6 +137,18 @@ struct PackageData {
13: optional list<FileID> fids
}
+struct InteractionTask {
+ 1: InteractionID iid,
+ 2: Input input,
+ 3: list<string> structure,
+ 4: list<string> preset,
+ 5: Output output,
+ 6: list<string> data,
+ 7: string title,
+ 8: string description,
+ 9: string plugin,
+}
+
struct CaptchaTask {
1: i16 tid,
2: binary data,
@@ -257,13 +295,6 @@ service Pyload {
list<PackageID> deleteFinished(),
void restartFailed(),
-
- //captcha
- bool isCaptchaWaiting(),
- CaptchaTask getCaptchaTask(1: bool exclusive),
- string getCaptchaTaskStatus(1: TaskID tid),
- void setCaptchaResult(1: TaskID tid, 2: string result),
-
//events
list<EventInfo> getEvents(1: string uuid)
@@ -289,8 +320,18 @@ service Pyload {
//info
// {plugin: {name: value}}
map<PluginName, map<string,string>> getAllInfo(),
- map<string, string> getInfoByPlugin(1: PluginName plugin)
+ map<string, string> getInfoByPlugin(1: PluginName plugin),
//scheduler
+ // TODO
+
+
+ // User interaction
+
+ //captcha
+ bool isCaptchaWaiting(),
+ CaptchaTask getCaptchaTask(1: bool exclusive),
+ string getCaptchaTaskStatus(1: TaskID tid),
+ void setCaptchaResult(1: TaskID tid, 2: string result),
}