aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsinanmohd <pcmsinan@gmail.com>2023-02-18 19:57:53 +0530
committersinanmohd <pcmsinan@gmail.com>2023-03-11 19:05:05 +0530
commit3bf720abfa529204b4e984504968b45dc003f105 (patch)
tree88220c7205378432ae0744a15d99b58e7c65eea3
parent6e99499c1f13008581f9070206b71c0a51cdb28e (diff)
1337x: added http scraper for 1337x.to
-rwxr-xr-x1337x88
-rw-r--r--README.md5
2 files changed, 92 insertions, 1 deletions
diff --git a/1337x b/1337x
new file mode 100755
index 0000000..755f4b3
--- /dev/null
+++ b/1337x
@@ -0,0 +1,88 @@
+#!/bin/sh
+
+url_1337x="https://1337x.to"
+
+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 "${url_1337x}/$1"
+}
+
+search_1337x()
+{
+ : "${1:?}"
+
+ get_1337x "search/$(echo "$1" | tr ' ' '+')/1/" |
+ grep -o "[0-9][0-9][0-9][0-9][0-9][0-9][0-9]/[^/]*"
+}
+
+magnet_1337x()
+{
+ : "${1:?}"
+
+ get_1337x "torrent/$1/" |
+ grep -om1 "magnet:?xt=urn:btih:.*announce"
+}
+
+main()
+{
+ fetch=
+ select=
+ magnet=
+ out=
+ query=
+
+ dep_check "dmenu" "pirowatch"
+
+ if [ "$#" -gt 0 ] && [ "$1" = "-o" ]
+ then
+ out=true
+ shift
+ fi
+
+ query="$*"
+ : "${query:=$(printf "" | dmenu -p " ")}"
+ [ -z "$query" ] &&
+ die "please enter a query"
+
+ fetch="$(search_1337x "$query")"
+ select="$(echo "$fetch" | sed 's/^.*\///g' | dmenu -l 25 -p " ")"
+ magnet="$(magnet_1337x "$(echo "$fetch" | grep "$select")")"
+
+ [ -z "$magnet" ] &&
+ die "empty magnet"
+
+ if [ "$out" = true ]
+ then
+ echo "$magnet"
+ else
+ pirowatch "$magnet"
+ fi
+}
+
+main "$@"
diff --git a/README.md b/README.md
index 782e99c..24ee822 100644
--- a/README.md
+++ b/README.md
@@ -2,11 +2,14 @@
[dmenu](https://tools.suckless.org/dmenu/) is a fast and lightweight dynamic menu for X written by the [suckless](https://suckless.org/) community. this is my collection of posix scripts for dmenu. these scripts might use [nerd fonts](https://www.nerdfonts.com/), make sure you've installed them for the best experience. you can find more info about them below
## damb - dmenu ambience
-listen to ambient music while working on somthing fun. audio files should be stored at ~/.local/share/damb/. damb also has a config file located at ~/.conf/damb/links, where you can provide direct links to media sources or links to youtube-dl supported sites, it should be in the format \<name> = \<link>, you can also play links from your clipboard using the stream option. mix together varous ambient sounds and stream with damb
+listen to ambient music while working on somthing fun. audio files should be stored at ~/.local/share/damb/. damb also has a config file located at ~/.conf/damb/links, where you can provide direct links to media sources or links to youtube-dl supported sites, it should be in the format \<name> = \<link>, you can also play links from your clipboard using the stream option. mix together varous ambient sounds and stream with damb
## pirowatch
pirowatch is a dmenu wrapper for [web torrent](https://webtorrent.io/), provide magnet or torrent files as command line argument or input from dmenu and consoom the media using [mpv](https://mpv.io/)
+## 1337x
+scraper for 1337x.to, has an optional dependency on pirowatch. if you pass "-o" as the first argument it'll print the scraped magnet link to stdin otherwise it will pass the magnet link to pirowatch
+
## vpn
dmenu wrapper for wireguard, depends on wip