From 0967d8fae4b2a795ddf85bd282bb3cad966eeba8 Mon Sep 17 00:00:00 2001 From: Joel Grunbaum <joelgrun@gmail.com> Date: Tue, 02 Feb 2021 06:07:01 +0000 Subject: [PATCH] jq raw input to try and avoid errors --- reddit-wallpaper-fetcher | 56 ++++++++++++++++++++++++++++++++------------------------ 1 files changed, 32 insertions(+), 24 deletions(-) diff --git a/reddit-wallpaper-fetcher b/reddit-wallpaper-fetcher index f01551b..278d2fc 100755 --- a/reddit-wallpaper-fetcher +++ b/reddit-wallpaper-fetcher @@ -1,6 +1,6 @@ #!/bin/bash -TESTING=1 +TESTING=0 #Default variables SUBREDDITS=("Wallpapers") @@ -17,53 +17,61 @@ CONFDIR="$HOME/.config" WALLDIR="$HOME/.wallpaper" else - CONFDIR="$(dirname $(realpath $0))" - WALLDIR="$(dirname $(realpath $0))" + CONFDIR="$(dirname $(realpath "$0"))" + WALLDIR="$(dirname $(realpath "$0"))" fi -source $CONFDIR/reddit-wallpaper-fetcher.conf &>/dev/null +[ ! -d "$WALLDIR" ] && mkdir "$WALLDIR" +source "$CONFDIR"/reddit-wallpaper-fetcher.conf &>/dev/null #Loud output for testing a changed config [ -z "$1" ] && LOUD="-s" #Initialise time from last fetch LATEST_TIME=0 -if [ -f $WALLDIR/json ]; then - LATEST=$(cat $WALLDIR/json) - LATEST_TIME=$(echo $LATEST | jq ".data.children[-1].data.created_utc") +if [ -f "$WALLDIR"/json ]; then + LATEST=$(cat "$WALLDIR"/json) + LATEST_TIME=$(echo "$LATEST" | jq -r ".data.children[-1].data.created_utc") +fi +if [ "$LATEST_TIME" == "null" ]; then + LATEST_TIME=0 fi #Try subreddits for new images for i in "${SUBREDDITS[@]}"; do - temp=$(curl $LOUD --user-agent $USER "https://www.reddit.com/r/$i.json?sort=$SORT&limit=1") - time=$(echo $temp | jq ".data.children[-1].data.created_utc") + temp=$(curl "$LOUD" --user-agent "$USER" "https://www.reddit.com/r/$i.json?sort=$SORT&limit=1") + time=$(echo "$temp" | jq -r ".data.children[-1].data.created_utc") if [ $(awk -v n1="$time" -v n2="$LATEST_TIME" 'BEGIN {printf (n1>n2?"1":"")}') ]; then - LATEST=$temp - LATEST_TIME=$time + LATEST="$temp" + LATEST_TIME="$time" fi done #No Update to do -if [ -f $WALLDIR/json ] && [ "$(cat $WALLDIR/json)" == "$LATEST" ]; then +if [ -f "$WALLDIR"/json ] && [ "$(cat "$WALLDIR"/json)" == "$LATEST" ]; then exit fi #Download image -url=$(echo $LATEST | jq ".data.children[-1].data.url" | sed 's/"//g') -ext="$(echo $url | rev | cut -d'.' -f1 | rev)" -curl $LOUD -o "$WALLDIR/temp.$ext" "$url" +url=$(echo "$LATEST" | jq -r ".data.children[-1].data.url" | sed 's/"//g') +if [ -n "$(echo $url | grep gallery)" ]; then + media_id=$(echo "$LATEST" | jq -r ".data.children[-1].data.gallery_data.items[0].media_id" | sed 's/"//g') + url=$(echo "$LATEST" | jq -r ".data.children[-1].data.media_metadata.$media_id.p[0].u" | sed 's/"//g;s/\?.*//g;s/preview/i/g') +fi +ext="$(echo "$url" | rev | cut -d'.' -f1 | rev)" +curl "$url" "$LOUD" --output "$WALLDIR/temp.$ext" #Save image information -echo $LATEST > $WALLDIR/json -title=$(echo $LATEST | jq ".data.children[-1].data.title") -echo "$title" > $WALLDIR/data.txt -echo $url >> $WALLDIR/data.txt -echo https://reddit.com$(echo $LATEST | jq ".data.children[-1].data.permalink" | sed 's/"//g') >> $WALLDIR/data.txt +echo "$LATEST" > "$WALLDIR"/json +title=$(echo "$LATEST" | jq -r ".data.children[-1].data.title") +echo "$title" > "$WALLDIR"/data.txt +echo "$url" >> "$WALLDIR"/data.txt +echo https://reddit.com$(echo "$LATEST" | jq -r ".data.children[-1].data.permalink" | sed 's/"//g') >> "$WALLDIR"/data.txt #Add image title +convert "$WALLDIR/temp.$ext" -resize "$SIZE^" -gravity center -crop "$SIZE+0+0" -resize "$SIZE!" "$WALLDIR/wallpaper.jpg" +rm "$WALLDIR/temp.$ext" + if [ $WRITE_TITLE == 1 ]; then - convert "$WALLDIR/temp.$ext" -fill "$TITLE_COLOR" -gravity "$TITLE_POSITION" -pointsize "$TITLE_SIZE" -annotate 0 "$title" "$WALLDIR/wallpaper.jpg" -else - convert "$WALLDIR/temp.$ext" "$WALLDIR/wallpaper.jpg" + convert "$WALLDIR/wallpaper.jpg" -fill "$TITLE_COLOR" -gravity "$TITLE_POSITION" -pointsize "$TITLE_SIZE" -annotate 0 "$title" "$WALLDIR/wallpaper.jpg" fi -rm $WALLDIR/temp.$ext -- Gitblit v1.10.0