Jdownloader2
Jdownloader2
JDownloader is a direct download manager that supports the most popular file sharing services. By copying the URL containing the files you want to download, the program will just add them automatically to its download list thanks to the link grabber feature. This software is 100% free and Open Source.
Howto
JDownloader is since many years my favorite download manager. He has indeed many positive points:
- supports an impressive number of hosts (Uptobox, Rapidshare, Youtube, ... 1file.)
- Java-based platform
- support for multi-site premium subscriptions such alldebrid.com
- supporting different types of captchas
- controllable via a dedicated Android app or better a simple browser (my.jdownloader.org)
- Free and open-source
Only an account is needed from my.jdownloader.org to use Jdownloader2
prepare and download
- You need first to install java
yum install java-1.8.0-openjdk
- you need to make a folder
mkdir /usr/share/JD2
- you need to download the java file
cd /usr/share/JD2 wget http://installer.jdownloader.org/JDownloader.jar
set JD
here you need an account with your password from http://my.jdownloader.org/
- now you can launch the java software
java -Djava.awt.headless=true -jar /usr/share/JD2/JDownloader.jar
JD2 will ask to update, answer yes (y), then it need to restart
- launch again the java software
java -Djava.awt.headless=true -jar /usr/share/JD2/JDownloader.jar
here it will ask your jdownloader account.
start at boot time
now when you launch the command above your JD instance is able to run. we have to create an init script to run JD at the boot time
- create the jdownloader system user
/sbin/e-smith/create-system-user jdownloader 810 "Jdownloader server" /usr/share/JD2/ /bin/bash
- set good ownership
chown jdownloader:jdownloader /usr/share/JD2/ -R
- create the db entry
db configuration set jdownloader service status enabled
- create the initscript
vim /etc/rc.d/init.d/jdownloader
and paste this
#!/bin/sh ### BEGIN INIT INFO # Provides: <NAME> # Required-Start: $local_fs $network $named $time $syslog # Required-Stop: $local_fs $network $named $time $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Description: <DESCRIPTION> ### END INIT INFO SCRIPT='java -Djava.awt.headless=true -jar /usr/share/JD2/JDownloader.jar' RUNAS='jdownloader' NAME='jdownloader' PIDFILE=/var/run/$NAME.pid LOGFILE=/var/log/$NAME.log start() { if [ -f $PIDFILE ] && kill -0 $(cat $PIDFILE); then echo 'Service already running' >&2 return 1 fi echo 'Starting service…' >&2 local CMD="$SCRIPT &> \"$LOGFILE\" & echo \$!" su -s /bin/sh $RUNAS -c "$CMD" > "$PIDFILE" # Try with this command line instead of above if not workable # su -c "$CMD" $RUNAS > "$PIDFILE" sleep 2 PID=$(cat $PIDFILE) if pgrep -u $RUNAS -f $NAME > /dev/null then echo "$NAME is now running, the PID is $PID" else echo "Error! Could not start $NAME!" fi } stop() { if [ ! -f "$PIDFILE" ] || ! kill -0 $(cat "$PIDFILE"); then echo 'Service not running' >&2 return 1 fi echo 'Stopping service…' >&2 kill -15 $(cat "$PIDFILE") && rm -f "$PIDFILE" echo 'Service stopped' >&2 } uninstall() { echo -n "Are you really sure you want to uninstall this service? That cannot be undone. [yes|No] " local SURE read SURE if [ "$SURE" = "yes" ]; then stop rm -f "$PIDFILE" echo "Notice: log file is not be removed: '$LOGFILE'" >&2 update-rc.d -f <NAME> remove rm -fv "$0" fi } status() { printf "%-50s" "Checking $NAME..." if [ -f $PIDFILE ]; then PID=$(cat $PIDFILE) if [ -z "$(ps axf | grep ${PID} | grep -v grep)" ]; then printf "%s\n" "The process appears to be dead but pidfile still exists" else echo "Running, the PID is $PID" fi else printf "%s\n" "Service not running" fi } case "$1" in start) start ;; stop) stop ;; status) status ;; uninstall) uninstall ;; restart) stop start ;; *) echo "Usage: $0 {start|stop|status|restart|uninstall}" esac
we need to get that script executable
chown u+x /etc/rc.d/init.d/jdownloader
and set the time when we want it starts
chkconfig --add jdownloader ln -s /etc/rc.d/init.d/e-smith-service S90jdownloader
How retrieve the downloads
we need to make a samba fragment
{ my $status = $jdownloader{'status'} || "disabled"; return " # jdownloader is disabled in smb.conf" unless $status eq 'enabled'; { my @jdownloader_smb_users = split(",", ($jdownloader{'Smbusers'} || "") ); $OUT .= "[jdownloader]\n"; $OUT .= "comment = jdownloader download folder\n"; $OUT .= "path = /var/lib/jdownloader\n"; $OUT .= "valid users \= admin "; foreach my $jdownloader_smb_users (@jdownloader_smb_users) { $OUT .= " $jdownloader_smb_users"; } $OUT .="\n"; $OUT .= "force user = jdownloader\n"; $OUT .= "force group = jdowloader\n"; $OUT .= "read only = no\n"; $OUT .= "browsable = yes\n"; $OUT .= "writable = yes\n"; $OUT .= "create mode = 0644\n"; $OUT .= "directory mask = 0755\n"; } }
then
signal-event workgroup-update
and create the download folder and allow the jdownloader user
mkdir /var/lib/jdownloader chown jdownloader:jdownloader /var/lib/jdownloader
log rotate
jdownloader log all its action and error to /var/log/jdownloader
vim /etc/logrotate.d/jdownloader /var/log/jdownloader { weekly notifempty create 640 jdownloader jdownloader }
adjust setting in Jdownloader
got to http://my.jdownloader.org, fill your credentials, go to your jdownloader instance (you can have several instance at my.jdownloader.org), go to the 'settings' (upper right) and then 'Advanced Settings'
- sort by General - Default Download Folder and set /var/lib/jdownloader
Usage
- web interface
Your web Interface is reachable at http://my.jdownloader.org
- control the service
you can control the service by
service jdownloader status service jdownloader restart service jdownloader start service jdownloader stop
- allow more users/groups to use the samba share
you need to set your group with a '@'
config setprop jdownloader Smbusers user1,user2,@group1,@group2 signal-event workgroup-update