-
Notifications
You must be signed in to change notification settings - Fork 13
Description
Thanks for the script, I made some changes
- Two scripts, one does download by uploader, keeps processed magnets and checks / does not redownload duplicates
- The other script downloads everything based on a keyword, again keeps processed magnets
- The last script is because i use Transmission instead of deluge so I can pass to that and auto-add/start magnets and specify the add folder.
First file - fetch based on username of uploader, usage
./filename <start page #> <end page #>
e.g. ./filename cooluploader 1 10
`
#!/bin/bash
mkdir -p $HOME/.cache/pirokit
if [ -z $1 ]; then
query=$(echo "" | dmenu -p "Search Torrent: ")
else
query=$1
fi
start=$2
end=$3
echo "----- Begin processing $1"
for (( a = $start ; a <= $end ; a++))
do
baseurl="https://1337x.to"
cachedir="$HOME/.cache/pirokit"
query="$(sed 's/ /+/g' <<<$query)"
fails=0
curl -s https://1337x.to/$query-torrents/$a/ > $cachedir/tmp.html
#Get Titles
grep -o '<a href="/torrent/.' $cachedir/tmp.html |
sed 's/<[^>]>//g' > $cachedir/titles.bw
result_count=$(wc -l $cachedir/titles.bw | awk '{print $1}')
if [ "$result_count" -lt 1 ]; then
notify-send "😔 No Result found. Try again 🔴"
exit 0
fi
#Seeders and Leechers
grep -o '<td class="coll-2 seeds.|<td class="coll-3 leeches.' $cachedir/tmp.html |
sed 's/<[^>]*>//g' | sed 'N;s/\n/ /' > $cachedir/seedleech.bw
#Size
grep -o '<td class="coll-4 size.' $cachedir/tmp.html |
sed 's/.</span>//g' |
sed -e 's/<[^>]*>//g' > $cachedir/size.bw
#Links
grep -E '/torrent/' $cachedir/tmp.html |
sed -E 's#.(/torrent/.)/">.*/#\1#' |
sed 's/td>//g' > $cachedir/links.bw
#Clearning up some data to display
sed 's/./ /g; s/-/ /g' $cachedir/titles.bw |
sed 's/[^A-Za-z0-9 ]//g' | tr -s " " > $cachedir/tmp && mv $cachedir/tmp $cachedir/titles.bw
awk '{print NR " - ["$0"]"}' $cachedir/size.bw > $cachedir/tmp && mv $cachedir/tmp $cachedir/size.bw
awk '{print "[S:"$1 ", L:"$2"]" }' $cachedir/seedleech.bw > $cachedir/tmp && mv $cachedir/tmp $cachedir/seedleech.bw
LINEC=$(wc -l < ~/.cache/pirokit/links.bw)
for (( x = 0 ; x <= $LINEC ; x++))
do
LINE=$x
url=$(head -n $LINE $cachedir/links.bw | tail -n +$LINE)
fullURL="${baseurl}${url}/"
echo "Processing: $fullURL Page $a of $2"
#Requesting page for magnet link
curl -s $fullURL > $cachedir/tmp.html
magnet=$(grep -Po "magnet:\?xt=urn:btih:[a-zA-Z0-9]*" $cachedir/tmp.html | head -n 1)
#echo "Adding Magnet: $magnet"
if [ $(grep "$magnet" processed | wc -l) -eq 0 ]; then
echo "⬇️ Start downloading File 📁: $magnet"
./mag2trans.sh "$magnet"
#Simple notification
echo "$magnet" >> processed
else
if [ $fails -gt 3 ]; then #Stop processing after 4 duplicates
echo "----- Max duplicates reached, ending processing of $1"
break 3
fi
echo "Duplicate Magnet, skipping..."
((fails=fails+1))
fi
done
done
`
2nd script
Change the curl line to the following
First file - fetch based on search word
./filename <start page #> <end page #>
e.g. ./filename wallpaper 1 10
curl -s https://1337x.to/search/$query/$a/ > $cachedir/tmp.html
3rd script mag2trans.sh taken from an example online and extended to allow for destination path subfolder (non standard download folder in transmission)
`#!/bin/bash
test -z $1 && echo "need magnet link!
$0 " && exit -1
HOST=localhost
PORT=9091
USER=username
DLPATH="/path/to/custom/download/folder/"
#NOTE: I had issues using passwords with semicolons (;) in them,
#you might want to stay away from them
PASS=password
LINK="$1"
#set true if you want every torrent to be paused initially
#PAUSED="true"
PAUSED="false"
SESSID=$(curl --silent --anyauth --user $USER:$PASS "http://$HOST:$PORT/transmission/rpc" | sed 's/.//g;s/</code>.//g')
curl --silent --anyauth --user $USER:$PASS --header "$SESSID" "http://$HOST:$PORT/transmission/rpc" -d "{"method":"torrent-add","arguments":{"paused":${PAUSED},"filename":"${LINK}","download-dir":"${DLPATH}"}}"
`
Hope someone finds this as useful as i do.