HowTo: Filebot mit MyJDownloader kombinieren und automatisieren

suffx

Benutzer
Mitglied seit
14. Nov 2016
Beiträge
19
Punkte für Reaktionen
0
Punkte
1
MyJdownloader und Filebot miteinander verbinden

Da es zu diesem Thema kein wirkliches HowTo gibt, sondern eher eine Ansammlung von Foreneinträgen mit verschiedenen Problemen und Lösungsansätzen, möchte ich hier ein kurzes HowTo erstellen. Diese Anleitung beschreibt den Weg den ich dabei selber gegangen bin. Ich werde dabei auf die Probleme eingehen die ich bei meiner Installation hatte, Fragen zu anderen Problemen könnt ihr im Forum stellen.
Wenn alles wie gewünscht klappt, könnt ihr im Anschluss

  • Downloads von überall aus auf eurem NAS starten
  • Downloads über MyJdownloader automatisch entpacken lassen
  • Die entpackten Dateien automatisch mit TMDb abgleichen und nach euren wünschen umbenennen lassen
  • Media .nfos und Artwork (für Kodi) automatisch herunterladen
  • Die umbenannten Dateien an euren Wunschort verschieben lassen
  • Die nicht mehr benötigten Ordner von den Downloads automatisch löschen lassen


Alles was ihr also noch tun müsst, ist einen Download zu starten. Alles andere passiert von allein.
Ich habe dieses Setup auf einer Synology DS216Play laufen, es sollte aber auf jedem anderen System auf dem JDownloader (headless), Filebot und Java 8 laufen auch gehen.

Der Fokus liegt klar auf NAS Systemen.

Voraussetzungen:

  • Ein laufendes NAS System
  • Grundkenntnisse in SSH sind von Vorteil

1. Vorbereitungen

Als allererstes (wenn nicht schon geschehen) installiert ihr euch Java 8 und den JDownloader. Dafür geht ihr auf eure DSM Oberfläche. Wer den JDownloader schon hat, nimmt nur die filebot Paketquelle. Achtung: Wenn ihr schon eine offizielle Java Version installiert habt, deinstalliert diese einfach und installiert die inoffizielle neu. Bei mir gab es so keine Probleme.

Paketzentrum -> Einstellungen -> Paketquellen -> Hinzufügen: https://app.filebot.net/syno/

Paketzentrum -> Einstellungen -> Paketquellen -> Hinzufügen: https://spk.netzbaer.de

Jetzt solltet ihr die DSM Oberfläche einmal aktualisieren.

  • Geht nun ins Paketzentrum und scrollt links nach ganz unten zu Community. Ihr findet hier nun den „Unofficial Java Installer“, welchen ihr installiert.
  • Danach geht ihr wieder auf Community und installiert JDownloader 2. Achtet darauf JDownloader als root zu installieren (ist standardmäßig so).
  • Danach noch einmal auf Community und Filebot installieren. Wenn ihr wollt könnt ihr auch Filebot Node installieren. Das ist eine GUI für Filebot die innerhalb des DSM läuft und aufrufbar ist. Filebot Node wird für die angestrebte Automatisierung aber nicht benötigt. Man kann sich damit aber ganz gut Benennungs-Schemata erstellen.

Nachdem alles installiert ist, solltet ihr eure Grundeinstellungen in JDownloader machen. Dazu einfach auf my.jdownloader.org mit euren myjdownloader Daten die ihr auch eben bei der Installation benutzt habt anmelden und auf euren JDownloader@root gehen. Wichtig ist, dass das automatische entpacken aktiviert wird und unbedingt beim DL Verzeichnis „unterordner nach Paketname“ anklicken. Damit wird für jeden DL ein eigenes Paket angelegt und auch nur dieses wird nach dem Entpacken von Filebot durchsucht.

Wenn ihr das habt, installiert ihr den EventScripter im JDownloader unter my.jdownloader.org. Den findet ihr unter

Einstellungen -> Extension Manager. Klickt auf „Install“ neben Event Scripter und wartet etwas.

Es kann gut sein, dass nichts weiter passiert abgesehen vom Ladebalken. Ein Neustart der DS soll dabei helfen. Notfalls müsst ihr einfach etwas warten. Damit sind die Vorbereitungen abgeschlossen.

Zur Sicherheit hier noch das HowTo zur JD installation: https://board.jdownloader.org/showthread.php?t=65599


2. Filebot script und Test per SSH

Nun geht es darum, alles zum Laufen zu kriegen. JDownloader sollte jetzt schon problemlos laufen. Um zu testen ob auch Filebot läuft, verbindet euch per SSH mit eurer DiskStation. Dazu nehmt ihr einfach putty (http://www.putty.org/) und gebt die IP sowie den Port ein. Ihr werdet nach euren Anmeldedaten gefragt. (Diese SSH Prozedur müsst ihr später nicht mehr machen)

Login as: admin
Password: ->euer admin Passwort<-
Gebt „sudo –i“ ohne Anführungsstriche ein
Passwort: ->erneut euer admin Passwort<-
Jetzt seid ihr als root per SSH angemeldet. Um Filebot auszuführen könnt ihr jetzt ein Filebot script verwenden. Das script was ich hier zur Verfügung stelle, ist nicht von mir selbst geschrieben, sondern nur ergänzt und angepasst worden.

Hier das jdtofilebot.sh script:

Rich (BBCode):
#!/bin/sh
##FileBot benötigt diese Variablen
##/bin/mkdir /volume1/video/Downloads/videos/testordner
LOG="/volume1/amc.log"
EXC="/volume1/amc.txt"
SERIEN="/volume1/video/Serien/{n}/{s}/{n}.{s00e00} - {t} ({y}) {vf}"
FILME="/volume1/video/Filme/{n} ({y}) {source}({vf}@{vc}) [{rating}]/{n} ({y}) {source}({vf}@{vc}) [{rating}]"
##UNSORTIERT="/path/{file.structurePathTail}" ### Wenn Filebot mal etwas nicht zuordnen kann, dann kannst du es in einen seperaten Ordner verschieben lassen, dann bleibt es im Downloadordner übersichtlich.
##FileBot ausführen
/var/packages/filebot/target/filebot.sh -script fn:amc --lang de --log-file $LOG --action move "$1" --def "seriesFormat=$SERIEN" "movieFormat=$FILME" "animeFormat=$ANIME" "unsortedFormat=$UNSORTIERT" -non-strict --def unsorted=y "artwork=y" --def clean=y
## Aufräumen, --def root löscht den Unterordner mit
/var/packages/filebot/target/filebot.sh -script fn:cleaner "$1" --def root=y

ACHTUNG: Wichtig ist, dass dieses Script eine unix Zeichenendungs-Codierung hat. Bei mir war dies anfangs nicht der Fall, weshalb ich immer eine „No such file“-Exception bekam. Das könnt ihr mit Notepad++ machen. Fügt das script in eine neue Datei ein und geht auf

Bearbeiten -> Kodierung Zeilenende -> UNIX

Um sicherzugehen könnt ihr euch mit dem kleinen Symbol unter „Fenster“ in der Tool-Leiste alle Charaktere anzeigen lassen. Hinter jeder Zeile sollte nun „LF“ stehen.

Dieses script speichert ihr nun auf eurer DS. Bei mir liegt es unter /volume1/video/filebot.sh

Jetzt geht ihr wieder in putty und gebt erstmal „cd ..“ ein, um in das nächsthöhere Verzeichnis zu wechseln. Um die Datei auszuführen gebt ihr nun

sh /volume1/video/filebot.sh

ein. Es sollten einige Ausgaben folgen. Das script müsste durchlaufen, aber nichts weiter machen und mit der Meldung „no input“ beendet werden. Das liegt daran, dass wir keinen Pfad definiert haben an dem unsere Videodateien liegen. Das ist aber kein Problem, dieser Pfad wird am Ende vom Event Scripter an Filebot übergeben. Wollt ihr hier schon testen ob alles klappt, die Dateien richtig umbenannt und verschoben werden, übergebt noch einen inputpfad in dem z. B. Testdateien liegen mit:

sh /volume1/video/filebot.sh /volume1/video/Downloads/

Nun wissen wir, dass JD und Filebot laufen. Jetzt geht es nur noch darum, beide zu verknüpfen.


3. Event Scripter

Geht wieder in die Einstellungen unter my.jdownloader.org und geht auf den Event Scripter. Einmal „enable“ anklicken, falls nicht schon geschehen. In das freie Feld fügt ihr dieses script ein:

Rich (BBCode):
[{"eventTrigger":"ON_ARCHIVE_EXTRACTED", "enabled":true, "name":"FileBot", "script":"var amcFile = \"/volume1/video/filebot.sh\";var path = archive.getFolder(); callAsync(function() {}, amcFile, path);", "eventTriggerSettings":{}, "id":}]

Der code sagt aus, dass immer wenn ein Archiv entpackt wurde, dieses script ausgeführt wird. Wichtig ist hier eigentlicht nur, dass der Pfad zu dem eben erstellten Filebot script korrekt ist, und dass die JSON syntax eingehalten wird. Die Syntax könnt ihr mit z. B. prettyjson validieren, manche Foren entfernen nämlich das Escaping.
Path = archive.getFolder(); holt den gerade aktuellen Pfad der entpackten Datei und übergibt diesen im Nächsten Schritt an Filebot. So wird immer nur genau das Package bearbeitet, welches auch gerade geladen und entpackt wurde. Nachdem ihr nun einen DL abgeschlossen habt und das Archiv entpackt wurde, sollte das Script ausgeführt werden. Ihr werden beim ersten Mal gefragt ob ihr das zulassen möchtet.
Klickt auf „allow“ und setzt den Haken bei always. Wenn alles glatt läuft, startet nun euer filebot script und benennt die Dateien um und verschiebt sie ins angegebene Verzeichnis.


4. Erklärungen

Zum Filebot Script:

##/bin/mkdir /volume1/video/testordner

  • Nehmt ihr die beiden Rauten am Beginn der Zeile weg, sollte unter video ein testordner erstellt werden, sobald das script gestartet wird. Daran könnt ihr gut sehen ob das Script ausgeführt wird oder nicht. Wenn alles läuft, kommentiert die Zeile wieder aus.


SERIEN="/volume1/video/Serien/{n}/{s}/{n}.{s00e00} - {t} ({y}) {vf}

  • Gibt an wo und in welchem Format Serien gespeichert werden.
  • In diesem Beispiel sähe das so aus: /volume1/video/Serien/Serienname/Staffel/Serienname.S01E01 – Titel der Folge (1990) 360p.avi
  • Dieses Format wird von DS Video erkannt und getagged
  • Ihr könnt das natürlich euren Wünschen entsprechend anpassen, hier gibt es Infos zu dem Schema: http://www.filebot.net/naming.html
  • Dies gilt genauso für Filme.


Wirklich viel gibt es sonst eigentlich nicht zu erklären. Was noch wichtig ist, "artwork=y" bewirkt, dass .nfo files und artwork runtergeladen und im entsprechenden Zielordner gespeichert wird. Wer das nicht will, kann diesen Eintrag entfernen.

Bei Problemen postet diese in diesen Beitrag.

Viel Erfolg und Spaß damit!


Anhänge: Anhang anzeigen files.zip
 
Zuletzt bearbeitet:

suffx

Benutzer
Mitglied seit
14. Nov 2016
Beiträge
19
Punkte für Reaktionen
0
Punkte
1
Da gibt's wohl auch Möglichkeiten. Kann ich dir aber nichts genaues zu sagen.
 

AirRailey

Benutzer
Mitglied seit
16. Jan 2016
Beiträge
102
Punkte für Reaktionen
0
Punkte
16
irgendwie nicht, obwohl ich nur bahnhof verstehe, aber da steht sehr viel mit windows, ich habe mac und meine synology hat auch kein windows
 

blinddark

Benutzer
Mitglied seit
03. Jan 2013
Beiträge
1.385
Punkte für Reaktionen
34
Punkte
68
Das klingt gut. Werde es am Wochenende mal umsetzen. Danke für die Arbeit.
 

suffx

Benutzer
Mitglied seit
14. Nov 2016
Beiträge
19
Punkte für Reaktionen
0
Punkte
1
irgendwie nicht, obwohl ich nur bahnhof verstehe, aber da steht sehr viel mit windows, ich habe mac und meine synology hat auch kein windows

Also ich nutze NZBGet nicht, aber im prinzip müsste das genauso gehen wie bei JD. Du musst NZBGet nur sagen was passieren soll, wenn ein DL fertig ist, nämlich das Filebot script zu starten. Das macht man anscheinend über ein post-script:

https://github.com/nzbget/nzbget/wiki/Extension-scripts

Demnach musst du das filebot script in den ordner ScriptDir packen und entsprechend der beschreibung die einstellungen in NZBGet vornehmen damit das script gestartet wird.

Hier das original script von rednoah (filebot):
https://github.com/filebot/plugins/blob/master/bash/nzbget-postprocess.sh

Rich (BBCode):
#!/bin/sh -xu

# Input Parameters
ARG_PATH="$NZBPP_DIRECTORY"
ARG_NAME="$NZBPP_NZBNAME"
ARG_LABEL="$NZBPP_CATEGORY"

# Configuration
CONFIG_OUTPUT="$HOME/Media"

filebot -script fn:amc --output "$CONFIG_OUTPUT" --action duplicate --conflict skip -non-strict --log-file amc.log --def unsorted=y music=y artwork=y excludeList=".excludes" ut_dir="$ARG_PATH" ut_kind="multi" ut_title="$ARG_NAME" ut_label="$ARG_LABEL"

# NZBGet Exit Codes
if [ $? = 0 ]; then
	exit 93 # SUCCESS
else
	exit 94 # FAILURE
fi

Das habe ich mal etwas an meins angepasst, aber keine ahnung ob das bei NZBGet so funktioniert:

Rich (BBCode):
#!/bin/sh -xu

# Input Parameters
ARG_PATH="$NZBPP_DIRECTORY"
ARG_NAME="$NZBPP_NZBNAME"
ARG_LABEL="$NZBPP_CATEGORY"

# Configuration
CONFIG_OUTPUT="$HOME/Media"
SERIEN="/Serien/{n}/{s}/{n}.{s00e00} - {t} ({y}) {vf}"
FILME="/Filme/{n} ({y}) {source}({vf}@{vc}) [{rating}]/{n} ({y}) {source}({vf}@{vc}) [{rating}]"

filebot -script fn:amc --output "$CONFIG_OUTPUT" --action move --def "seriesFormat=$SERIEN" "movieFormat=$FILME" --conflict skip -non-strict --log-file amc.log --def unsorted=y music=y artwork=y excludeList=".excludes" ut_dir="$ARG_PATH" ut_kind="multi" ut_title="$ARG_NAME" ut_label="$ARG_LABEL"

# NZBGet Exit Codes
if [ $? = 0 ]; then
	exit 93 # SUCCESS
else
	exit 94 # FAILURE
fi

Wie gesagt, ob das so klappt kann ich nicht sagen, das musst du ausprobieren. So oder so ähnlich müsste es aber gehen.
 

postboy99

Benutzer
Mitglied seit
22. Feb 2017
Beiträge
21
Punkte für Reaktionen
0
Punkte
1
Hallo suffx,

danke für deine ausführliche Anleitung.
Ich habe filebot schon benutzt ebenso wie jdownloader.
Nun bin ich deine Anleitung durchgegangen, habe also die filebot.sh erstellt und in /volume1/Share/Skript/ abgelegt.
In my.jdownloader habe ich Event Scripter aktiviert aber wenn ich nun deine Zeile einfüge und speichern drücke, dann rattert er sich tot und speichert es nicht.

Hast du eine Idee woran das liegen kann?
 

suffx

Benutzer
Mitglied seit
14. Nov 2016
Beiträge
19
Punkte für Reaktionen
0
Punkte
1
Also der EventScripter ist installiert und läuft?

Dann kann es eigentlich nur an falschem Json liegen. Hast du das eventscripter script mal validiert? (http://jsonlint.com/).
 
Zuletzt bearbeitet:

postboy99

Benutzer
Mitglied seit
22. Feb 2017
Beiträge
21
Punkte für Reaktionen
0
Punkte
1
Also der EventScripter ist installiert und läuft?

Dann kann es eigentlich nur an falschem Json liegen. Hast du das eventscripter script mal validiert? (http://jsonlint.com/).

Wie gesagt, habe das von dir kopiert und den Pfad angepasst.
Er erwartet scheinbar eine Nummer hier id:

Error: Parse error on line 7:
...ttings": {}, "id":}]
---------------------^
Expecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '[', got '}'
 

suffx

Benutzer
Mitglied seit
14. Nov 2016
Beiträge
19
Punkte für Reaktionen
0
Punkte
1
Die ID kann man normalerweise frei lassen. Die wird eigetnlich von JD erzeugt. Es kann sein dass das Forum Escaping characters vom JSON entefernt, deshalb die validierung.
 
Zuletzt bearbeitet:

suffx

Benutzer
Mitglied seit
14. Nov 2016
Beiträge
19
Punkte für Reaktionen
0
Punkte
1
Hast du die validierung gemacht?

Kannst du mal das Gesamte Log hochladen, bzw die gesamte Fehlerausgabe + script? Am besten screenshot vom evetnsrcipter
 
Zuletzt bearbeitet:

postboy99

Benutzer
Mitglied seit
22. Feb 2017
Beiträge
21
Punkte für Reaktionen
0
Punkte
1
Hast du die validierung gemacht?

Kannst du mal das Gesamte Log hochladen, bzw die gesamte Fehlerausgabe + script? Am besten screenshot vom evetnsrcipter



[{
"eventTrigger": "ON_ARCHIVE_EXTRACTED",
"enabled": true,
"name": "FileBot",
"script": "var amcFile = \"/volume1/Share/Skript/filebot.sh\";var path = archive.getFolder(); callAsync(function() {}, amcFile, path);",
"eventTriggerSettings": {},
"id":
}]

Results

Error: Parse error on line 7:
...ttings": {}, "id":}]
---------------------^
Expecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '[', got '}'

Event Scripter spuckt nichts aus. Wenn ich das dort eintrage, lädt und lädt er aber speichert es nicht.
 

suffx

Benutzer
Mitglied seit
14. Nov 2016
Beiträge
19
Punkte für Reaktionen
0
Punkte
1
Setz mal nach dem "id": eine leertaste.

Ansonsten ist hier meine ID, probier es sonst damit nochmal:
"id": 1489257796220
 
Zuletzt bearbeitet:

postboy99

Benutzer
Mitglied seit
22. Feb 2017
Beiträge
21
Punkte für Reaktionen
0
Punkte
1
Mit der ID ist es "valid" und lässt sich auch in my jdownloader einbinden. Dann teste ich es jetzt mal, ob es allgemein funktioniert.

Danke soweit.
 

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
13.998
Punkte für Reaktionen
264
Punkte
373
Hallo,
@suffx, @postboy99
bitte keine Vollzitate und besonders nicht wenn Du direkt antwortest.
Danke.

Gruß Götz
 

blinddark

Benutzer
Mitglied seit
03. Jan 2013
Beiträge
1.385
Punkte für Reaktionen
34
Punkte
68
Muss ich nach dem Einfügen des Scripts bei JD noch irgend eine Taste drücken? wenn ich "ID": angebe kommt zwar kein Fehler mehr hoch, aber gehe ich aus dem Scripter und noch einmal rein, stehen nur die beiden Klammern drin.
 


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat