Installing pyLoad on a Raspberry Pi with Raspbian Jessie

If you are anything like me [1], you like to have dedicated Services which do stuff for you. One of the Services I like in particular is pyLoad [2]. This program you be used to automatically load files from OneClick Hosters. This is esspecially useful if you run this on a small computer like the Raspberry Pi [3] and dump the downloaded data to a central Storage like a NAS.

There are lots of blogposts out there which detail how to install pyLoad on a RaspberryPi [4][5][6]. For most parts I don’t really want to say anything against these, but there was one point in particular that I dislike about all of these. This is the reason why I am now writing my own guide. So let’s get started.

In the following I assume that you are running a Raspberry Pi with a recent version of Raspbian. At the point of writing this means you are running some version of Debian Jessie. This is the first reason for this guide, because most guides are written for older Debain versions and they don’t care about things like systemd.

First we are going to create a system user for running pyload.

sudo adduser --system pyload

Next we are installing some dependencies for pyLoad. First make sure that you have the following two lines in your /etc/apt/sources.list

deb http://mirrordirector.raspbian.org/raspbian/ jessie main contrib non-free rpi
deb-src http://archive.raspbian.org/raspbian/ jessie main contrib non-free rpi

Then we update our package list and install the dependencies.

sudo apt-get update
sudo apt-get -y install git liblept4 python python-crypto python-pycurl python-imaging tesseract-ocr zip unzip python-openssl libmozjs-24-bin
sudo apt-get -y build-dep rar unrar-nonfree
sudo apt-get source -b unrar-nonfree
sudo dpkg -i unrar_*_armhf.deb
sudo rm -rf unrar-*

Please notice the list of packages that are installed here. This is the one point I really dislike about the other guides. Most guides are not installing rhino instead of libmozjs here. Both of these packages are JavaScript environments. The difference between rhino and libmozjs is the language they are implemented in. While rhino is implemented in Java libmozjs is using c++. For this reason you need the whole Java execution environment on your system if you want to use rhino. I don’t think it is reasonable to install a complete java runtime on a server that should be running a python program. So I think the C++ implementation is superior in this point.

On older versions of Debian there was the package spidermonkey-bin, which was more or less equivalent to libmozjs,  but newer versions don’t ship this anymore.

To get spidermonkey (let’s just call it that) running with pyLoad we need to create a symlink.

cd /usr/bin
ln -s js24 js

Now we can download the current version of pyLoad and install that. We are using the current git version which is a bit newer that the latest release.

cd /opt
sudo git clone https://github.com/pyload/pyload.git
cd pyload
sudo -u pyload python pyLoadCore.py

The last line should start the configuration wizard of pyload and create an initial setup. Just follow the on-screen instructions. If everything went well you should have a running pyLoad instance.

If you want to start pyload at every reboot you can create a systemd service file for that. Just create a new file

sudo nano /etc/systemd/system/pyload.service

and dump the following code in there.

[Unit]
Description=Python Downloader
After=network.target

[Service]
User=pyload
ExecStart=/usr/bin/python /opt/pyload/pyLoadCore.py

[Install]
WantedBy=multi-user.target

Now we need to activate this rule with systemd.

sudo systemctl enable pyload.service

After a reboot this should automatically be executed and you can see the status of the service with

sudo systemctl status pyload

I hope this guide is helping you in getting pyload running. Even if you already have a running version, you might want to change  your js interpreter if you are currently using rhino.

18 Gedanken zu „Installing pyLoad on a Raspberry Pi with Raspbian Jessie“

  1. this worked for me! awesome guide.

    However not sure if this going to impact anything, i get an error message when running this command
    ln -s js24 js

    it says it already exists
    ln: failed to create symbolic link ‘js’: File exists

    1. This probably means that you already have the js binary from another source. I am not sure which packages, apart from the old spidermonkey, install this binary.
      A quick search yields, that rhino seems to create a similar symlink and is also using /usr/bin/js. So you might want to make sure to remove your installation of rhino.

  2. nach Download, gab ich 1 link zum test dann bekomme ich
    „Download directory not found“
    weiss ich nicht warum ?

  3. Moinsen,

    ich wollte mich hiermit in aller Form für deine Mühen bedanken, deine Anleitung hat mir im Vergleich zu manch anderen veralteten Tutorials sehr geholfen.

    Beste Grüße

    Georg

  4. Leider komme ich an dem punkt

    „sudo -u pyload python pyLoadCore.py“

    nicht weiter. Die Datei pyLaodCore.py gibt es in dem runtergeladenen archiv von github nicht mehr. nur noch eine pyLoad.py und eine setup .py
    Wenn ich erste Ausführen will kommt ein fehler:
    „ImportError: No module named builtins“
    Bei der setup.py
    „ImportError: No module named setuptools“
    kannst du mir hier weiterhelfen?

  5. Moin, Moin,

    auch von mir ein recht herzliches merci vielmals! Bin bei vielen Anleitungen mit Jessie gescheitert. Hier kam der richtige Hinweis in die richtige Richtung!

    Habe pyload auf meinem Pi mit OSMC installiert und lasse pyload wie vorgeschlagen als systemd unter pyload laufen. Bei mir werden die Dateien jedoch heruntergeladenen Dateien jedoch „unter“ dem Benutzer osmc gespeichert anstatt pyload. Hab ich gemerkt, als ich mich gewundert habe dass er Sie trotz entsprechender Configsettings nach dem entpacken nicht löscht. Hättest Du vielleicht auch hier eine Idee? 🙂

    Viele Gr

    1. Hi,

      sorry, da habe ich auch spontan keine Ahnung zu. Ich hätte erwartet, dass die Daten den Besitzer vom Benutzer, der pyload ausführt, übernehmen.
      Wo wird das hin gespeichert? Falls das ein externes Laufwerk ist, könnte da durch das mounten etwas merkwürdiges passieren.

      1. Moin,

        Danke für Deine schnelle Antwort. Das hätte ich auch erwartet. Die Downloads werden von pyload tatsächlich direkt auf ein externes Laufwerk gespeichert. Handelt sich um n Intenso Memory Center, die automatisch durch OSMC unter /media/INTENSO/ gemountet wird sobald Sie via USB angeschlossen wurde. Der mount gehört dann ebenfalls dem Benutzer osmc, dem nachher auch die Dateien gehören. Hättest Du n Idee oder n Hinweis, was das merkwürdiges sein kann. Bzw. in welche Richtung ich mal auf die Suche gehen kann?

        Freu mich über jeden möglichen Hinweis 🙂

        Cheerio,

        Jomas

        1. Hi,

          welches Dateisystem hat die externe Platte? Falls die mit NTFS formatiert ist, wird die ganze Benutzerverwaltung ignoriert und die Berechtigungen beim mounten festgelegt.

  6. Thank you for the guide, however I’m stuck with this line „sudo dpkg -i unrar_*_armhf.deb“, what does the asterisk symbol mean? I’m completely new to all this command line thing, so could you please explain?

    1. Hi,

      the * is just a wildcard for any number of characters. So this command will install the version of unrar, that was just built before. The exact filename is dependant on the version you are compiling. So I can’t give an exact name here.

  7. Danke für die einfache Anleitung
    Mußte aber ebenfalls die Stable nehmen, da bei mir der gleiche Fehler wie bei Stefan Scheller
    ImportError: No module named builtins“
    kam (liegt das an einem Python Paket/Version ?)
    Ansonsten ohne Probleme

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.