12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- #!/bin/sh
- # If notify-send is not found, use echo as notifier
- command -v "notify-send" > /dev/null && notifier="echo" || notifier="notify-send"
- # check dependencies
- for prog in dmenu jq nomacs wget curl; do
- ! command -v "$prog" > /dev/null &&
- $notifier "redyt" "Error: Program '$prog' not found." && exit 1
- done
- # set dirs
- cachedir="${XDG_CACHE_HOME:-$HOME/.cache}/redyt"
- configdir="${XDG_CONFIG_HOME:-$HOME/.config}/redyt"
- # if dirs do not exist, create them
- [ ! -d "$cachedir" ] && mkdir -p "$cachedir"
- [ ! -d "$configdir" ] && mkdir -p "$configdir"
- # remove all cached images
- rm "${cachedir:?}"/*
- # set defaults
- defaultsub="memes"
- [ -f "$configdir/subreddits" ] || echo "$defaultsub" > "$configdir/subreddits"
- limit=100
- # select sorting (default: sort by hot)
- # sorting=$(printf "hot\nnew\n" | dmenu -p "Select Sorting" -i -l 10)
- # [ -z "$sorting" ] &&
- sorting="hot"
- # when no argument given, use dmenu to ask for subreddit
- if [ -z "$1" ]; then
- subreddit=$(dmenu -p "Select Subreddit r/" -i -l 10 < \
- "$configdir/subreddits" | cut -d\| -f1 | awk '{$1=$1;print}')
- # if no subreddit was chosen, exit
- [ -z "$subreddit" ] && exit 1
- else
- subreddit="$1"
- fi
- # send a notification
- $notifier "Redyt" "📩 Downloading your 🖼️ Memes"
- # download the subreddit feed, containing only the first 100 entries (limit),
- # and store it inside $cachedir/tmp.json
- curl -H "User-agent: 'your bot 0.1'" \
- "https://www.reddit.com/r/$subreddit/$sorting.json?limit=$limit" \
- > "$cachedir/tmp.json"
- # get a list of images
- imgs="$(jq '.' < "$cachedir/tmp.json" | grep url_overridden_by_dest | \
- grep -Eo "http(s|)://.*(jpg|png)\b" | sort -u)"
- # if there are no images, exit
- [ -z "$imgs" ] && $notifier "Redyt" \
- "sadly, there are no images for subreddit $subreddit, " \
- "please try again later!" && exit 1
- # set welcome img
- cp "$configdir/redyt.png" "$cachedir"
- # download + display images in cache dir
- wget -bq -P "$cachedir" "$imgs" > /dev/null 2> /dev/null
- devour nomacs "$cachedir/redyt.png" & #> /dev/null 2> /dev/null
|