#!/bin/sh url_1337x="https://1337x.to" menu="wmenu" die() { : "${1:?}" command -v notify-send > /dev/null && notify-send "󰎁 1337x" "$1" printf "\033[31;1merr: %b\033[0m\n" "$1" 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 } get_1337x() { : "${1:?}" dep_check curl curl --silent --compressed "${url_1337x}/$1" } search_1337x() { : "${1:?}" get_1337x "search/$(echo "$1" | tr ' ' '+')/1/" } magnet_1337x() { : "${1:?}" get_1337x "torrent/${1}/" | grep -om1 'magnet:?xt=urn:btih:.*announce' } parse_table() { intbody= link= sneed= leech= size= while read -r line; do case "$line" in "") intbody=1 ;; "") exit 0 ;; "*} link=${line##*href=\"/} ;; "} sneed=${sneed%%<*} ;; "} leech=${leech%%<*} ;; "} size=${size%%<*} ;; "") [ "$intbody" = 1 ] && printf "%4d  %4d  %8s %s\n" \ "$sneed" "$leech" "$size" \ "$(echo "${link##*/}" | tr '-' ' ')" ;; esac done | "$menu" -p "󰎁 " -il 20 | grep -o '[A-Z][a-z].*' | tr ' ' '-' unset intbody name link sneed leech size } main() { query= data= name= page= 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 data="$(search_1337x "$query")" [ -z "$data" ] && die "search failed, check your internet connection" name="$(echo "$data" | parse_table)" [ -z "$name" ] && exit 1 page="$(echo "$data" | grep -om1 "[0-9]*/${name}")" magnet="$(magnet_1337x "$page")" [ -z "$magnet" ] && die "magnet fetch failed, contact the maintainer" if [ "$out" = true ]; then echo "$magnet" else dep_check "pirowatch" pirowatch "$magnet" fi } main "$@"