├── README.md ├── additions.sh ├── appmonitor.sh ├── autodl-curl-radarr.sh ├── autodl-curl-sonarr.sh ├── checkmount ├── crontab ├── notification.sh ├── rcloneupload.sh ├── updatecloud └── youtube.sh /README.md: -------------------------------------------------------------------------------- 1 | # plex-gdrive-script-collection -------------------------------------------------------------------------------- /additions.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | today=`date +%Y-%m-%d -d "yesterday"` 3 | sum=$(find /home/soviel/mounting/dpcp -mtime -1 -printf "%s\n"|awk '{t+=$1}END{print t}') 4 | readablesum=$(numfmt --to=iec $sum) 5 | echo "$today $sum $readablesum" >> /home/soviel/additions.txt 6 | -------------------------------------------------------------------------------- /appmonitor.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | MONITOR="$HOME/activity.log" 4 | . ~/.config/PlexACD/plexacd.conf 5 | . ${bindir}/plexacd.sh 6 | 7 | #sonarr 8 | screen -ls | grep sonarr | grep -v grep > /dev/null 9 | if [ $? != 0 ] 10 | then 11 | screen -dmS sonarr mono --debug /home/soviel/NzbDrone/NzbDrone.exe -c libcurl 12 | log "sonarr was re-launched" >> "$MONITOR" 13 | fi 14 | 15 | #radarr 16 | screen -ls | grep radarr | grep -v grep > /dev/null 17 | if [ $? != 0 ] 18 | then 19 | screen -dmS radarr mono --debug /home/soviel/Radarr/Radarr.exe -c libcurl 20 | log "radarr was re-launched" >> "$MONITOR" 21 | fi 22 | 23 | #plexpy 24 | screen -ls | grep "plexpy" | grep -v grep > /dev/null 25 | if [ $? != 0 ] 26 | then 27 | screen -dmS plexpy /home/soviel/plexpy/PlexPy.py -p 40017 28 | log "plexpy was re-launched" >> "$MONITOR" 29 | fi 30 | 31 | #jackett 32 | screen -ls | grep "jackett" | grep -v grep > /dev/null 33 | if [ $? != 0 ] 34 | then 35 | screen -dmS jackett mono /home/soviel/Jackett/JackettConsole.exe -p 40003 -c libcurl 36 | log "jackett was re-launched" >> "$MONITOR" 37 | fi 38 | 39 | #ombi 40 | # screen -ls | grep "ombi" | grep -v grep > /dev/null 41 | # if [ $? != 0 ] 42 | # then 43 | # screen -dmS ombi mono ${home}/Ombi/Ombi.exe -c libcurl 44 | # log "ombi was re-launched" >> "$MONITOR" 45 | # fi 46 | 47 | #autodl 48 | screen -ls | grep "autodl" | grep -v grep > /dev/null 49 | if [ $? != 0 ] 50 | then 51 | screen -dmS autodl irssi 52 | log "autodl irssi was re-launched" >> "$MONITOR" 53 | fi 54 | -------------------------------------------------------------------------------- /autodl-curl-radarr.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | title=$1 4 | downloadUrl=$2 5 | apiKey=$3 6 | date=$(date -u +"%Y-%m-%d %H:%M:%SZ") 7 | 8 | { 9 | /usr/bin/curl -i -H "Accept: application/json" -H "Content-Type: application/json" -H "X-Api-Key: $apiKey" -X POST -d '{"title":"'"$title"'","downloadUrl":"'"$downloadUrl"'","downloadProtocol":"torrent","publishDate":"'"$date"'"}' http://localhost:40005/api/release/push 10 | } &> /dev/null 11 | -------------------------------------------------------------------------------- /autodl-curl-sonarr.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | title=$1 4 | downloadUrl=$2 5 | apiKey=$3 6 | date=$(date -u +"%Y-%m-%d %H:%M:%SZ") 7 | 8 | { 9 | /usr/bin/curl -i -H "Accept: application/json" -H "Content-Type: application/json" -H "X-Api-Key: $apiKey" -X POST -d '{"title":"'"$title"'","downloadUrl":"'"$downloadUrl"'","downloadProtocol":"torrent","publishDate":"'"$date"'"}' http://localhost:40001/api/release/push 10 | } &> /dev/null 11 | -------------------------------------------------------------------------------- /checkmount: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | ############################################################################## 3 | # INCLUDES 4 | ############################################################################## 5 | . ~/.config/PlexACD/plexacd.conf 6 | . ${bindir}/plexacd.sh 7 | MONITOR="$HOME/activity.log" 8 | 9 | 10 | # ACD mount 11 | #if [ ! -f /home/soviel/mounting/acdcrypt/mountcheck ]; then 12 | # fusermount -u -z /home/soviel/mounting/acdcrypt 13 | # ${bindir}/rclone mount --acd-templink-threshold 0 --buffer-size 256M --log-file /home/soviel/rmount.log acdcrypt: mounting/acdcrypt/ & 14 | 15 | # if [ ! -f /home/soviel/mounting/acdcrypt/mountcheck ]; then 16 | # log "ACD re-mounted" >> "$MONITOR" 17 | # else 18 | # log "ERROR while re-mounting" >> "$MONITOR" 19 | # fi 20 | #fi 21 | 22 | # gdrive decrypted via rclone 23 | if [ ! -f /home/soviel/mounting/cpcp/mountcheck ]; then 24 | fusermount -u -z /home/soviel/mounting/cpcp 25 | /home/soviel/bin/rclone mount --log-file /home/soviel/rmount.log cpcp: mounting/cpcp/ & 26 | 27 | if [ ! -f /home/soviel/mounting/cpcp/mountcheck ]; then 28 | log "cpcp re-mounted" >> "$MONITOR" 29 | else 30 | log "ERROR while re-mounting cpcp" >> "$MONITOR" 31 | fi 32 | fi 33 | 34 | # gdrive decrypted via rclone crypt after plexdrive 35 | if [ ! -f /home/soviel/mounting/dpcp/mountcheck ]; then 36 | fusermount -u -z /home/soviel/mounting/dpcp 37 | /home/soviel/bin/rclone mount -v --log-file /home/soviel/rmount.log dpcp: mounting/dpcp/ & 38 | 39 | if [ -f /home/soviel/mounting/dpcp/mountcheck ]; then 40 | log "dpcp re-mounted" >> "$MONITOR" 41 | else 42 | log "ERROR while re-mounting dpcp" >> "$MONITOR" 43 | fi 44 | fi 45 | 46 | exit 0 47 | -------------------------------------------------------------------------------- /crontab: -------------------------------------------------------------------------------- 1 | @reboot source ~/.bash_profile && cd ~/Library/Plex/current/usr/lib/plexmediaserver && ./start.sh 2 | */3 * * * * /home/soviel/bin/checkmount; /home/soviel/scripts/appmonitor.sh; /home/soviel/bin/updatecloud 3 | 25 6 * * * /home/soviel/scripts/youtube.sh 4 | @daily /home/soviel/scripts/additions.sh 5 | -------------------------------------------------------------------------------- /notification.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | MONITOR="$HOME/activity.log" 4 | . /home/soviel/bin/plexacd.sh 5 | 6 | log $1 >> "$MONITOR" 7 | -------------------------------------------------------------------------------- /rcloneupload.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | SORTLOG="$HOME/activity.log" 4 | #below path must have trailing slash 5 | MOVIECRYPT='crypt:incomimg/movies/' 6 | TVCRYPT='crypt:incoming/tv/' 7 | RADARRDIR="$HOME/upload/incoming/radarr/" 8 | SONARRDIR="$HOME/upload/incoming/sonarr/" 9 | FLEXGETMOVIEDIR="$HOME/flexget-processing/movies/" 10 | FLEXGETTVDIR="$HOME/flexget-processing/tv/" 11 | lock="${HOME}/.config/PlexACD/rclone-lock" 12 | . /home/soviel/bin/plexacd.sh 13 | 14 | log "$3 has been downloaded $1" >> $SORTLOG 15 | 16 | while [ -f "${lock}" ] ; 17 | do 18 | sleep 60 19 | done 20 | 21 | 22 | if [ "$1" == "radarr" ]; then 23 | log "Copying file -> $2" >> $SORTLOG 24 | echo "cp" > ${lock} 25 | cp -r "$2" "$RADARRDIR" 26 | log "Copy completed -> /upload/incoming/radarr/$3" >> $SORTLOG 27 | rm ${lock} 28 | fi 29 | 30 | if [ "$1" == "tv-sonarr" ]; then 31 | log "Copying file -> $2" >> $SORTLOG 32 | echo "cp" > ${lock} 33 | cp -r "$2" "$SONARRDIR" 34 | log "Copy completed -> /upload/incoming/sonarr/$3" >> $SORTLOG 35 | rm ${lock} 36 | fi 37 | 38 | if [ "$1" == "movies-manual" ]; then 39 | log "Copying file -> $2" >> $SORTLOG 40 | echo "cp" > ${lock} 41 | cp -r "$2" "$FLEXGETMOVIEDIR" 42 | log "Copy completed -> /upload/movies/$3" >> $SORTLOG 43 | /home/soviel/virtualenv2/bin/flexget execute --tasks sort-movies 44 | if [ "$(ls -A $FLEXGETMOVIEDIR)" ]; then 45 | log "flexget couldnt identify movie automatically, please advise" >> $SORTLOG 46 | else 47 | log "flexget moved movie for upload" >> $SORTLOG 48 | fi 49 | rm ${lock} 50 | fi 51 | 52 | if [ "$1" == "tv-manual" ]; then 53 | log "Copying file -> $2" >> $SORTLOG 54 | echo "cp" > ${lock} 55 | cp -r "$2" "$FLEXGETTVDIR" 56 | log "Copy completed -> /upload/tv/$3" >> $SORTLOG 57 | /home/soviel/virtualenv2/bin/flexget execute --tasks sort-tv 58 | if [ "$(ls -A $FLEXGETTVDIR)" ]; then 59 | log "flexget couldnt identify series automatically, please advise" >> $SORTLOG 60 | else 61 | log "flexget moved series for upload" >> $SORTLOG 62 | fi 63 | rm ${lock} 64 | fi 65 | -------------------------------------------------------------------------------- /updatecloud: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | ############################################################################### 3 | . "${HOME}/.config/PlexACD/plexacd.conf" 4 | . "/home/soviel/bin/plexacd.sh" 5 | MONITOR="$HOME/activity.log" 6 | 7 | lock="${HOME}/.config/PlexACD/rclone-lock" 8 | 9 | if [ ! -f ${lock} ]; then 10 | 11 | echo "$$" > ${lock} 12 | # Generate filelist and iterate through it... 13 | 14 | FILES="$(find ~/upload -type f|wc -l)" 15 | #find "$localcrypt" -type f | 16 | 17 | if [ "$FILES" -gt 0 ]; then 18 | log "Moving files to Google Drive" >> "$MONITOR" 19 | ${rclonebin} -v --log-file=/home/soviel/rclone-transfers.log move /home/soviel/upload ${remotename}: 20 | log "Move to Google Drive completed" >> "$MONITOR" 21 | 22 | #find "$localcrypt" -maxdepth 1 -mindepth 1 | 23 | #while read n; do 24 | #log "Moving files in $(basename $n) to ACD" >> "$MONITOR" 25 | #${rclonebin} -v --log-file=/home/soviel/rclone-transfers.log move "$n" ${remotename}:$(basename $n) 26 | #log "Move completed $(basename $n)" >> "$MONITOR" 27 | #done 28 | fi 29 | 30 | # remove lock. 31 | rm ${lock} 32 | 33 | # success! 34 | exit 0 35 | else 36 | # error! 37 | #log "Update already running on PID $(cat ${lock}), aborting update." >> "$MONITOR" 38 | exit 3 39 | fi 40 | -------------------------------------------------------------------------------- /youtube.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | MONITOR="$HOME/activity.log" 4 | . ~/.config/PlexACD/plexacd.conf 5 | . ${bindir}/plexacd.sh 6 | 7 | # Downloading up to 50 new videos 8 | log "starting youtube download" >> "$MONITOR" 9 | ${bindir}/youtube-dl --max-downloads 20 --playlist-reverse --download-archive /home/soviel/scripts/downloaded.txt -i -o "/home/soviel/youtube/%(uploader)s/%(uploader)s - S01E%(playlist_index)s - %(title)s [%(id)s].%(ext)s" -f bestvideo[ext=mp4]+bestaudio[ext=m4a] --merge-output-format mp4 --add-metadata --write-thumbnail --batch-file=/home/soviel/scripts/channel_list.txt 10 | 11 | # Move to upload 12 | mv /home/soviel/youtube/* /home/soviel/upload/youtube 13 | log "youtube download and move completed" >> "$MONITOR" 14 | --------------------------------------------------------------------------------