You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
158 lines
5.6 KiB
158 lines
5.6 KiB
#!/bin/bash
|
|
|
|
SCRIPTS_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
|
|
source $SCRIPTS_DIR/config.sh
|
|
|
|
#####################################
|
|
### Needed for NSFW/Favorites ###
|
|
#####################################
|
|
# Enter your API key
|
|
# you can get it here: https://wallhaven.cc/settings/account
|
|
APIKEY=""
|
|
#####################################
|
|
### End needed for NSFW/Favorites ###
|
|
#####################################
|
|
|
|
#####################################
|
|
### Configuration Options ###
|
|
#####################################
|
|
# Where should the Wallpapers be stored?
|
|
|
|
|
|
LOCATION=$WALLPAPER_DIR
|
|
|
|
SEARCH=""
|
|
# What page to start downloading at, default and minimum of 1.
|
|
STARTPAGE=1
|
|
# Type standard (newest, oldest, random, hits, mostfav), search, collections
|
|
# (for now only the default collection), useruploads (if selected, only
|
|
# FILTER variable will change the outcome)
|
|
TYPE=single
|
|
# From which Categories should Wallpapers be downloaded, first number is
|
|
# for General, second for Anime, third for People, 1 to enable category,
|
|
# 0 to disable it
|
|
CATEGORIES=100
|
|
# filter wallpapers before downloading, first number is for sfw content,
|
|
# second for sketchy content, third for nsfw content, 1 to enable,
|
|
# 0 to disable
|
|
FILTER=100
|
|
# Which Resolutions should be downloaded, leave empty for all (most common
|
|
# resolutions possible, for details see wallhaven site), separate multiple
|
|
# resolutions with , eg. 1920x1080,1920x1200
|
|
RESOLUTION=
|
|
# alternatively specify a minimum resolution, please note that specifying
|
|
# both resolutions and a minimum resolution will result in the desired
|
|
# resolutions being ignored, to avoid unwanted behavior only set one of the
|
|
# two options and leave the other blank
|
|
ATLEAST=2560x1440
|
|
# Which aspectratios should be downloaded, leave empty for all (possible
|
|
# values: 4x3, 5x4, 16x9, 16x10, 21x9, 32x9, 48x9, 9x16, 10x16), separate mutliple ratios
|
|
# with , eg. 4x3,16x9
|
|
ASPECTRATIO=16x9,16x10
|
|
# Which Type should be displayed (relevance, random, date_added, views,
|
|
# favorites, toplist, toplist-beta)
|
|
MODE=random
|
|
# if MODE is set to toplist show the toplist for the given timeframe
|
|
# possible values: 1d (last day), 3d (last 3 days), 1w (last week),
|
|
# 1M (last month), 3M (last 3 months), 6M (last 6 months), 1y (last year)
|
|
TOPRANGE=1M
|
|
# How should the wallpapers be ordered (desc, asc)
|
|
ORDER=desc
|
|
# Collections, only used if TYPE = collections
|
|
# specify the name of the collection you want to download
|
|
# Default is the default collection name on wallhaven
|
|
# If you want to download your own Collections make sure USR is set to your username
|
|
# If you want to download someone elses public collection enter the name here
|
|
# and the username under USR
|
|
# Please note that the only filter option applied to Collections is the Number
|
|
# of Wallpapers to download, there is no filter for resolution, purity, ...
|
|
COLLECTION="Default"
|
|
# Searchterm, only used if TYPE = search
|
|
# you can also search by tags, use id:TAGID
|
|
# to get the tag id take a look at: https://wallhaven.cc/tags/
|
|
# for example: to search for nature related wallpapers via the nature tag
|
|
# instead of the keyword use QUERY="id:37"
|
|
QUERY="nature"
|
|
# Search images containing color
|
|
# values are RGB (000000 = black, ffffff = white, ff0000 = red, ...)
|
|
COLOR=""
|
|
# Should the search results be saved to a separate subfolder?
|
|
# 0 for no separate folder, 1 for separate subfolder
|
|
SUBFOLDER=0
|
|
# User from which wallpapers should be downloaded
|
|
# used for TYPE=useruploads and TYPE=collections
|
|
# If you want to download your own Collection this has to be set to your username
|
|
USR=
|
|
# use gnu parallel to speed up the download (0, 1), if set to 1 make sure
|
|
# you have gnuparallel installed, see normal.vs.parallel.txt for
|
|
# speed improvements
|
|
# using this option can lead to cloudflare blocking some of the downloads
|
|
PARALLEL=0
|
|
# custom thumbnails per page
|
|
# changeable here: https://wallhaven.cc/settings/browsing
|
|
# valid values: 24, 32, 64
|
|
# if set to 32 or 64 you need to provide an api key
|
|
THUMBS=24
|
|
#####################################
|
|
### End Configuration Options ###
|
|
#####################################
|
|
# downloads Page with Thumbnails
|
|
|
|
|
|
s1="search?q=$SEARCH&categories=$CATEGORIES&purity=$FILTER&"
|
|
s1+="atleast=$ATLEAST&resolutions=$RESOLUTION&ratios=$ASPECTRATIO"
|
|
s1+="&sorting=$MODE&order=$ORDER&topRange=$TOPRANGE&colors=$COLOR"
|
|
|
|
# API URL for searching wallpapers
|
|
API_URL="https://wallhaven.cc/api/v1/$s1"
|
|
|
|
# Fetch the JSON response
|
|
response=$(curl -s "$API_URL")
|
|
|
|
# Extract the first wallpaper ID from the JSON response
|
|
wallpaper_id=$(echo "$response" | jq -r '.data[0].id')
|
|
|
|
# Check if an ID was found
|
|
if [ -z "$wallpaper_id" ]; then
|
|
echo "No wallpaper ID found."
|
|
exit 1
|
|
fi
|
|
|
|
# Construct the wallpaper API URL
|
|
WALLPAPER_URL="https://wallhaven.cc/api/v1/w/$wallpaper_id"
|
|
|
|
#printf "Download Page %s\\n" "$WALLPAPER_URL"
|
|
|
|
# Fetch wallpaper details
|
|
wallpaper_details=$(curl -s "$WALLPAPER_URL")
|
|
|
|
# Extract the image URL
|
|
image_url=$(echo "$wallpaper_details" | jq -r '.data.path')
|
|
image_type=$(echo "$wallpaper_details" | jq -r '.data.type')
|
|
#echo "$wallpaper_details"
|
|
|
|
# Check if an image URL was found
|
|
if [ -z "$image_url" ]; then
|
|
echo "No image URL found."
|
|
exit 1
|
|
fi
|
|
|
|
# Get the file extension from the URL
|
|
file_extension="${image_url##*.}"
|
|
|
|
#echo "File Type is $file_extension"
|
|
|
|
# Ensure extension is valid
|
|
if [[ ! "$file_extension" =~ ^(jpg|jpeg|png|webp)$ ]]; then
|
|
echo "Unknown or unsupported file extension: $file_extension"
|
|
exit 1
|
|
fi
|
|
|
|
# Download the wallpaper
|
|
#echo "Downloading wallpaper: $image_url"
|
|
|
|
wget -q "$image_url" -O "$LOCATION/$wallpaper_id.$file_extension"
|
|
notify-send "Wallpaper Download :" "Downloaded from : $image_url \n to : $WALLPAPER_DIR" --icon=dialog-information -t 3000
|
|
|
|
echo "${wallpaper_id}"
|