pyLoad is the Free and Open Source download manager written in Pure Python and designed to be extremely lightweight, fully customizable and remotely manageable.
Notice: Master Branch is under heavy development, very unstable, often broken.
Notice: Stable Branch is production ready.
Status:
Licensing:
Contacts:
- Supported Platforms
- Supported Interpreters
- Installation
- Usage
- Development
- Licensing
- Credits
- Release History
pyLoad works with Windows, MacOS and Unix based systems like Linux and FreeBSD.
Embedded platforms, proprietary NAS and routers systems are NOT officially supported, pyLoad may crash unexpectately or NOT work at all under them!
Note: Currently, MacOS and BSD platforms are NOT fully supported, some features may be missing or unstable.
To run pyLoad you must have installed on your system the Python interpreter.
You need at least Python2.6
or Python3.3
to run pyLoad.
Python versions from Python3.0
to Python3.2
are NOT supported!
An experimental support for PyPy is available;
as expected you need at least PyPy2.6
or PyPy3.3
to run pyLoad.
You can install pyLoad in several ways:
- PIP install (recommended on Unix based systems)
- Tarball Install
Please refer to https://requires.io/github/pyload/pyload/requirements/?branch=master for the package dependencies list.
All entries are mandatory for the own scope:
- Packages listed in
setup.txt
are required by the built-insetup.py
to run itself. - Packages listed in
install.txt
are required by the built-insetup.py
just to install the pyLoad package. - Packages listed in
test.txt
are required by the built-insetup.py
just to test the pyLoad package.
Note: All the mandatory dependencies should be solved automatically if you choose the PIP install method.
Note: To install pyLoad using the PIP install method you need the package pip, version 7 or later. To learn how to install it see https://pip.pypa.io/en/stable/installing/.
Type in your command shell with administrator/root privileges:
pip install pyload.core[full]
Under Unix based systems this usually means you have to use sudo
:
sudo pip install pyload.core[full]
The full
option ensures that all the optional packages will downloaded and
installed as well as the mandatory ones.
You can install just the essential dependencies typing:
pip install pyload.core
If the above commands fail, consider using the
--user
option:
pip install --user pyload.core
If this command fails too, try the others install methods. Leaves as last resort to report your issue.
- Get the latest tarball of the source code in format ZIP or TAR.
- Extract the downloaded archive.
- From the extracted directory path, run the command
python setup.py build
. - Then run the command
python setup.py install
.
To run pyLoad with the default profile, just type in your command shell:
pyload
To run as daemon, type:
pyload --daemon
To run in debug mode, type:
pyload --debug
To show the help list, type:
pyload --help
Note: Depending on your environment, command
pyload
might be equivalent topyLoad.py
orpyLoad.exe
.
Note: If you have installed the package
pyload.webui
, the web user interface is reachable pointing your web browser to the configured ip address and port (default tohttp://localhost:8010
).
Note: If you have installed the package
pyload.rpc
, the remote API server is listening to the configured ip address and port (default tohttp://localhost:7447
).
pyLoad's command line supports several options:
start
, stop
, restart
, version
.
Note: If you do not enter any option,
start
will be used.
To run pyLoad with a custom profile, type:
pyload start --profile <profilename>
Omitting the start
option:
pyload --profile <profilename>
Shorten:
pyload -p <profilename>
Note:
<profilename>
must be a plain text string, NOT a directory path!
Note: If you do not enter any
<profilename>
, the stringdefault
will be used.
To run pyLoad with a custom config folder:
pyload start --configdir <dirpath>
Omitting the start
option:
pyload --configdir <dirpath>
Shorten:
pyload -c <dirpath>
Note: If you do not enter any
<dirpath>
, the path%appdata%\pyload
will be choosed for Windows platforms and~/.pyload
otherwise.
Notice: When a new profile is declared, a directory with the same name is created inside the config directory.
To quit a pyLoad instance, type:
pyload quit --profile <profilename>
To restart a pyLoad instance, type:
pyload restart --profile <profilename>
To import pyLoad in your script, enter:
import pyload.core
Available methods:
pyload.core.start(profile=None, configdir=None, refresh=0, remote=None, webui=None, debug=0, webdebug=0, daemon=False)
- DESCRIPTION: Start a process instance.
- RETURN: Multiprocessing instance.
- ARGUMENTS:
profile
sets the profile name to use (default
if none entered).configdir
sets the config directory path to use (%appdata%\pyload
on Windows platforms or~/.pyload
otherwise, if none entered).refresh
sets refresh/restore mode (0=off; 1=removes compiled and temp files; 2=plus restore default usernameadmin
and passwordpyload
).remote
enables remote API interface at enteredIP address:Port number
(use defaults if none entered).webui
enables web user interface at enteredIP address:Port number
(use defaults if none entered).debug
sets debug mode (0=off; 1=on; 2=verbose).webdebug
sets webserver debugging (0=off; 1=on).daemon
daemonizes process.
pyload.core.quit(profile=None, wait=300)
- DESCRIPTION: Terminate a process instance.
- RETURN: None type.
- ARGUMENTS:
profile
sets the profile name of the process to terminate (terminate all the running processes if none entered).wait
sets the timeout (in seconds) before force to kill the process.
pyload.core.restart(profile=None, configdir=None, refresh=0, remote=None, webui=None, debug=0, webdebug=0, daemon=False)
- DESCRIPTION: Restart a process instance.
- RETURN: Multiprocessing instance.
- ARGUMENTS:
profile
sets the profile name to use (default
if none entered).configdir
sets the config directory path to use (%appdata%\pyload
on Windows platforms or~/.pyload
otherwise, if none entered).refresh
sets refresh/restore mode (0=off; 1=removes compiled and temp files; 2=plus restore default usernameadmin
and passwordpyload
).remote
enables remote API interface at enteredIP address:Port number
(use defaults if none entered).webui
enables web user interface at enteredIP address:Port number
(use defaults if none entered).debug
sets debug mode (0=off; 1=on; 2=verbose).webdebug
sets webserver debugging (0=off; 1=on).daemon
daemonizes process.
pyload.core.setup()
- DESCRIPTION: Setup the package.
- RETURN: None type.
- ARGUMENTS: None.
pyload.core.upgrade(dependencies=True, reinstall=False, prerelease=True)
- DESCRIPTION: Update the package.
- RETURN: None type.
- ARGUMENTS:
dependencies
sets to update package dependencies.reinstall
sets to reinstall all packages even if they are already up-to-date.prerelease
sets to update to pre-release and development versions.
pyload.core.status(profile=None)
- DESCRIPTION: Show the process PID.
- RETURN: PID list.
- ARGUMENTS:
profile
sets the profile name of the process to show (show all the running processes if none entered).
pyload.core.info()
- DESCRIPTION: Show the package info.
- RETURN: Info dict.
- ARGUMENTS: None.
pyload.core.version()
- DESCRIPTION: Show the package version info.
- RETURN: Version tuple.
- ARGUMENTS: None.
pyload.core.test()
- DESCRIPTION: Run the test suite.
- RETURN: None type.
- ARGUMENTS: None.
Note:
pyload.core.start
andpyload.core.restart
return immediately, even if the resulting instance is not already fully running!
Note: To terminate a single pyLoad instance you MUST pass its profile name to the function
pyload.core.quit
, otherwise all the running instances of pyLoad will be terminated!
Note: Calling function
pyload.core.restart
without a proper profile name will force to try to terminate thedefault
profile one.
A quick example of how start & stop a couple instances of pyLoad launched concurrently:
import pyload
pyload.core.start('myprofile1')
pyload.core.start('MyProfile2')
pyload.core.quit('myprofile1')
pyload.core.quit('MyProfile2')
- pyLoad repository: https://github.com/pyload/pyload.
- pyLoad documentation: https://github.com/pyload/pyload/wiki.
- pyLoad roadmap: https://github.com/pyload/pyload/milestones.
Note: To report issues or submit your contributions, you need to be registered on GitHub. It's free and take less a minute to signup.
To report an issue, suggest features, ask for a question or help us out, open a ticket.
Please, always title your issues with a pertinent short description and expone accurately the problem you encounter.
Don't foget to attach a full debug log of your bugged session from the first start or we cannot help you.
Note: To learn how to start pyLoad in debug mode see the Usage Section.
To submit your code to the pyLoad repository open a new Pull Request.
If you want to contribute to the project you have to sign our Contributor License Agreement to allow us to integrate your work in the official repository. You can sign it easily from within your pull request itself.
For further information see the License Section.
Please, follow the PEP 8 - Style Guide for Python Code.
Notice: Localization not yet available.
You can download the latest locale files from
https://crowdin.com/download/project/pyload.zip.
Notice: Stats not yet available.
You are allowed to use this software under the terms of the GNU Affero General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.
Please refer to the included LICENSE for the extended Open Source License.
With an explicit permission of the authors you may use or distribute this software under a different license according to the agreement.
Contact us at licensing@pyload.net for any question about our code licensing.
Please refer to the included CLA for the extended agreement.
However, to summarise, this is essentially what you will be agreeing to:
- You affirm that you have the right to provide the contribution (i.e. it's your own work).
- You grant the project a perpetual, non-exclusive license to use the contribution.
- You grant the project rights to change the outbound license that we use to distribute the code.
- You retain full ownership (copyright) of your submission and are free to do with it as you please.
Please contact us at cla@pyload.net if you wish to contribute to the project, but feel you cannot sign the agreement.
Please refer to the included CREDITS for the extended credits.
Please refer to the included CHANGELOG for the detailed release history.