word: mkimg-google from duckduckgo
authorMischa POSLAWSKY <perl@shiar.org>
Sat, 23 May 2020 03:15:24 +0000 (05:15 +0200)
committerMischa POSLAWSKY <perl@shiar.org>
Sat, 6 Jun 2020 01:49:20 +0000 (03:49 +0200)
Alternate search engine to maybe find better (maybe more free?) images.

tools/mkimg-google

index 1e1f7a8d6b3d1972ca280cebc6a925fe42387bdf..7615c279add11a0fc66550e3011e13d3db06d6fe 100755 (executable)
@@ -1,13 +1,30 @@
 #!/bin/sh
+set -u
+
 CURL='curl -sSf'
-QUERYURL="https://www.google.com/search?tbm=isch&pws=0&hl=nl&num=1&q="
-ARGMATCH='<img [^>]+src="(http[^"]+)"'
 
-for q in "$@"
+if true
+then
+       QUERYURL='https://duckduckgo.com/?iar=images&iax=images&ia=images&iaf=type:photo&q='
+       ARGMATCH="vqd='([^']+)"
+       JSONQUERY='https://duckduckgo.com/i.js?l=nl-nl&o=json&num=2'
+else
+       CURL="$CURL -A /"
+       QUERYURL="https://www.google.com/search?tbm=isch&pws=0&hl=nl&num=1&q="
+       ARGMATCH='<img [^>]+src="(http[^"]+)"'
+fi
+
+while read q
 do
+       q="${q%%/*}"
        [ -e "$q.jpg" ] && continue
        echo "$q"
        QUERYARG="%22$q%22"
        QUERYRES=$($CURL "$QUERYURL$QUERYARG" | perl -nE "say for /$ARGMATCH/" | head -1)
+       if [ -n "$JSONQUERY" ]
+       then
+               $CURL "$JSONQUERY&vqd=$QUERYRES&q=$QUERYARG" -o "$q.json" || continue
+               QUERYRES="$(jq -r '.results[0].thumbnail' "$q.json")"
+       fi
        $CURL "$QUERYRES" -o "$q.jpg" || continue
 done