#!/bin/sh

# Configuration
REMOTE="/usr/bin/transmission-remote"
USERNAME="felhasznalonev_helye"
PASSWORD="jelszo_helye"
MAXDOWN="maximum_letoltesek_szama"
MAXACTIVE="maximum_osszes_fel/le_toltes_szama"
CONFIG="/config_fajl_eleresi_utvonala/settings.json"

# *************
# Set-up variables
CMD="$REMOTE --auth $USERNAME:$PASSWORD"
LOGCMD="/usr/bin/logger -t transmission-queue "
MAXRATIO=$(cat $CONFIG | grep \"ratio-limit\":)
MAXRATIO=${MAXRATIO#*\"ratio-limit\": }
MAXRATIO=${MAXRATIO%*, }

# *************
# deal with downloads
DOWNACTIVE="$($CMD -l | tail +2 | grep -v -e 100% -e Sum -e Stopped | wc -l)"
if [ $MAXDOWN -lt $DOWNACTIVE ]; then
	DOWNTOSTOP="$($CMD -l | tail +2 | grep -v -e 100% -e Sum -e Stopped | \
		tail -n $(expr $DOWNACTIVE - $MAXDOWN) | awk '{ print $1; }')"
	for ID in $DOWNTOSTOP; do
		NAME="$($CMD --torrent $ID --info | grep Name:)"
		$LOGCMD "<<< $ID: ${NAME#*Name: }"
		$CMD --torrent $ID --stop >> /dev/null 2>&1
	done
else
	[ $(expr $MAXDOWN - $DOWNACTIVE) -gt 0 ] && (
	DOWNINACTIVE="$($CMD -l | tail +2 | grep -v 100% | grep Stopped | wc -l)"
	[ $DOWNINACTIVE -gt 0 ] && (
		DOWNTOSTART="$($CMD -l | tail +2 | grep -v 100% | grep Stopped | \
			head -n $(expr $MAXDOWN - $DOWNACTIVE) | awk '{ print $1; }')"
		for ID in $DOWNTOSTART; do
			NAME="$($CMD --torrent $ID --info | grep Name:)"
			$LOGCMD ">>> $ID: ${NAME#*Name: }"
			$CMD --torrent $ID --start >> /dev/null 2>&1
		done
		)
	)
fi
# Then deal with total active
ACTIVE="$($CMD -l | tail +2 | grep -v Sum | grep -v Stopped | wc -l)"
if [ $MAXACTIVE -lt $ACTIVE ]; then
	TOSTOP="$($CMD -l | tail +2 | grep 100% | grep -v Stopped | \
		tail -n $(expr $ACTIVE - $MAXACTIVE) | awk '{ print $1; }')"
	for ID in $TOSTOP; do
		NAME="$($CMD --torrent $ID --info | grep Name:)"
		$LOGCMD "<<< $ID: ${NAME#*Name: }"
		$CMD --torrent $ID --stop >> /dev/null 2>&1
	done
else
	[ $(expr $MAXACTIVE - $ACTIVE) -gt 0 ] && (
	SEEDINACTIVE="$($CMD -l | tail +2 | grep 100% | grep Stopped | \
		awk -v ratio=$MAXRATIO '{ if (strtonum(substr($0,52,4)) < ratio) print $0 ;}' | wc -l)"
	[ $SEEDINACTIVE -gt 0 ] && (
		TOSTART="$($CMD -l | tail +2 | grep 100% | grep Stopped | \
			awk -v ratio=$MAXRATIO '{ if (strtonum(substr($0,52,4)) < ratio) print $0 ;}' | \
			head -n $(expr $MAXACTIVE - $ACTIVE) | awk '{ print $1; }')"
		for ID in $TOSTART; do
			NAME="$($CMD --torrent $ID --info | grep Name:)"
			$LOGCMD ">>> $ID: ${NAME#*Name: }" 
			$CMD --torrent $ID --start >> /dev/null 2>&1
		done
		)
	)
fi
