blob: f7181652c7cc785c1816c50fc5d37e189b198f59 (
plain) (
tree)
|
|
#!/bin/sh
url_csv="https://torrents-csv.ml"
menu="bemenu"
die()
{
: "${1:?}"
command -v notify-send > /dev/null &&
notify-send " torrents-csv" "$1"
printf "\033[31;1merr: %b\033[0m\n" "$1" 1>&2
exit "${2:-1}"
}
dep_check()
{
: "${1:?}"
for dep; do
command -v "$dep" 1>/dev/null ||
die "${dep} not found, please install it" 127
done
unset dep
}
search_tcsv()
{
: "${1:?}"
dep_check curl
curl "${url_csv}/service/search?q=$(echo "$1" | tr ' ' '+')" \
--silent \
--compressed \
--write-out "%{http_code}"
}
byttounit()
{
# usage: bytounuit bytes
: "${1:?}"
if [ "$1" -lt 1024 ]; then
printf "%d B" "$1"
elif [ "$1" -lt 1048576 ]; then
printf "%.1f KB" "$(echo "$1 / 1024" | bc -l)"
elif [ "$1" -lt 1073741824 ]; then
printf "%.1f MB" "$(echo "$1 / 1048576" | bc -l)"
elif [ "$1" -lt 1099511627776 ]; then
printf "%.1f GB" "$(echo "$1 / 1073741824" | bc -l)"
else
printf "BIG B"
fi
}
parse_table()
{
# usage: echo "$fetch" | parse_table
name=
sneed=
leech=
size=
while read -r line; do
case "$line" in
\"name\":\"*)
name="${line#*:\"}"
name="${name%\"}"
;;
\"size_bytes\":*)
size="$(byttounit "${line#*:}")"
;;
\"seeders\":*)
sneed="${line#*:}"
;;
\"leechers\":*)
leech="${line#*:}"
;;
\"scraped_date\":*)
printf "%4d %4d %8s %s\n" \
"$sneed" "$leech" "$size" "$name"
;;
esac
done | "$menu" -p " " -il 25 | sed 's/.* //g'
unset name sneed leech size
}
wheremag()
{
# usage: echo "$fetch" | wheremag name
: "${1:?}"
name=
magnet=
while read -r line; do
case "$line" in
\"infohash\":\"*)
magnet="${line#*:\"}"
magnet="${magnet%\"}"
;;
\"name\":\"*)
name="${line#*:\"}"
name="${name%\"}"
if [ "$name" = "$1" ]; then
echo "$magnet"
return
fi
;;
esac
done
unset name magnet
}
query=
fetch=
data=
name=
magnet=
[ -z "$WAYLAND_DISPLAY" ] &&
menu="dmenu"
if [ "$#" -gt 0 ] && [ "$1" = "-o" ]; then
out=true
shift
fi
dep_check "$menu"
query="${*:-$(printf "" | "$menu" -p " ")}"
[ -z "$query" ] &&
exit 1
fetch="$(search_tcsv "$query")"
case "$fetch" in
*200)
[ "$fetch" = '[]200' ] &&
die "no results found"
data="$(echo "$fetch" | grep -o '"[^,}]*')"
;;
*)
die "search failed, check your internet connection"
;;
esac
name="$(echo "$data" | parse_table)"
[ -z "$name" ] &&
exit 1
magnet="$(echo "$data" | wheremag "$name")"
if [ "$out" = true ]; then
echo "$magnet"
else
dep_check "pirowatch"
pirowatch "$magnet"
fi
|