#!/usr/bin/env bash link="https://source.unsplash.com/random/" dir="$HOME/.local/wallpaper" # https://www.reddit.com/r/Animewallpaper/search/.json?q=flair_name%3ADesktop&restrict_sr=1 reddit(){ useragent="thevinter" timeout=60 readarray subreddits < /home/ben/.git/styli.sh/subreddits a=${#subreddits[@]} b=$(($RANDOM % $a)) sub=${subreddits[$b]} sort=$2 top_time=$3 if [ -z $sort ]; then sort="hot" fi if [ -z $top_time ]; then top_time="" fi sub="$(echo -e "${sub}" | tr -d '[:space:]')" if [ ! -z "$1" ] && [ -z "$2" ]; then sub=$1 fi if [[ $2 -eq "flair" ]] then url="https://www.reddit.com/r/$sub/search/.json?q=flair_name%3A$1&restrict_sr=1" else url="https://www.reddit.com/r/$sub/$sort/.json?raw_json=1&t=$top_time" fi # url="https://www.reddit.com/r/$sub/search/.json?q=flair_name%3ADesktop&restrict_sr=1" content=`wget -T $timeout -U "$useragent" -q -O - $url` # urls=$(echo -n "$content"| jq -r '.data.children[]|select(.data.post_hint|test("image")?) | .data.preview.images[0].source.url') urls=$(echo -n "$content"| jq -r '.data.children[]|select(.data.post_hint|test("image")?) | .data.url') names=$(echo -n "$content"| jq -r '.data.children[]|select(.data.post_hint|test("image")?) | .data.title') ids=$(echo -n "$content"| jq -r '.data.children[]|select(.data.post_hint|test("image")?) | .data.id') arrURLS=($urls) arrNAMES=($names) arrIDS=($ids) wait # prevent spawning too many processes size=${#arrURLS[@]} idx=$(($RANDOM % $size)) target_url=${arrURLS[$idx]} target_name=${arrNAMES[$idx]} target_id=${arrIDS[$idx]} ext=`echo -n "${target_url##*.}"|cut -d '?' -f 1` newname=`echo $target_name | sed "s/^\///;s/\// /g"`_"$subreddit"_$target_id.$ext wget -T $timeout -U "$useragent" --no-check-certificate -q -P down -O "$dir/wallpaper.jpg" $target_url &>/dev/null } usage(){ echo "Usage: styli.sh [-s | --search ] [-f | --flair ] [-h | --height ] [-w | --width ] [-b | --fehbg ] [-c | --fehopt ] [-r | --subreddit ] [-l | --link ] [-p | --termcolor]" exit 2 } if [ ! -d "$dir" ] then mkdir -p "$dir" fi pywal=0 PARSED_ARGUMENTS=$(getopt -a -n $0 -o h:w:s:l:b:r:c:p:f --long flair:,search:,hight:,width:,fehbg:,fehopt:,subreddit:,termcolor -- "$@") VALID_ARGUMENTS=$? if [ "$VALID_ARGUMENTS" != "0" ]; then usage fi while : do case "${1}" in -b | --fehbg) bgtype=${2} ; shift 2 ;; -s | --search) search=${2} ; shift 2 ;; -f | --flair) flair=${2} ; shift 2 ;; -h | --height) height=${2} ; shift 2 ;; -w | --width) width=${2} ; shift 2 ;; -l | --link) link=${2} ; shift 2 ;; -r | --subreddit) sub=${2} ; shift 2 ;; -c | --fehopt) custom=${2} ; shift 2 ;; -p | --termcolor) pywal=1 ; shift ;; -- | '') shift; break ;; *) echo "Unexpected option: $1 - this should not happen." ; usage ;; esac done feh=(feh) if [ ! -z $bgtype ]; then if [ $bgtype == 'bg-center' ]; then feh+=(--bg-center) fi if [ $bgtype == 'bg-fill' ]; then feh+=(--bg-fill) fi if [ $bgtype == 'bg-max' ]; then feh+=(--bg-max) fi if [ $bgtype == 'bg-scale' ]; then feh+=(--bg-scale) fi if [ $bgtype == 'bg-tile' ]; then feh+=(--bg-tile) fi else feh+=(--bg-scale) fi if [ ! -z $custom ]; then feh+=($custom) fi if [ $link = "reddit" ] || [ ! -z $sub ] then if [ ! -z $flair ] then reddit "$flair" "flair" else reddit "$sub" fi feh+=("$dir/wallpaper.jpg") "${feh[@]}" if [ $pywal -eq 1 ]; then wal -c wal -i "$dir/wallpaper.jpg" -n fi else if [ ! -z $height ] || [ ! -z $width ]; then link="${link}${width}x${height}"; else link="${link}1920x1080"; fi if [ ! -z $search ] then link="${link}/?${search}" fi wget -q -O "$dir/wallpaper" $link feh+=("$dir/wallpaper") "${feh[@]}" if [ $pywal -eq 1 ]; then wal -c wal -i "$dir/wallpaper" -n fi fi