35 lines
1.6 KiB
Bash
35 lines
1.6 KiB
Bash
#!/usr/bin/env bash
|
|
# bing-wallpaper: Tages-Wallpaper von Bing laden und direkt setzen.
|
|
# Quelle: HPImageArchive-API (inoffiziell, aber seit Jahren stabil),
|
|
# Markt de-DE, UHD-Aufloesung. Lizenz: nur zur privaten Nutzung als
|
|
# Hintergrund (keine Redistribution - es wird nur heruntergeladen).
|
|
# Ablage: ~/Bilder/Bing/bing-YYYY-MM-DD.jpg, Retention 7 Tage.
|
|
# Setzen via Noctalia-IPC (persistiert + triggert Theme-Resolve neu).
|
|
# Laeuft die Shell gerade nicht, bleibt die Datei fuer spaeter liegen.
|
|
set -euo pipefail
|
|
|
|
API="https://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=de-DE"
|
|
OUTDIR="${HOME}/Bilder/Bing"
|
|
[[ -d "${HOME}/Bilder" ]] || OUTDIR="${HOME}/Pictures/Bing"
|
|
mkdir -p "${OUTDIR}"
|
|
|
|
TODAY="$(date +%F)"
|
|
TARGET="${OUTDIR}/bing-${TODAY}.jpg"
|
|
|
|
if [[ ! -s "${TARGET}" ]]; then
|
|
JSON="$(curl -fsSL --retry 3 --retry-delay 5 "${API}")"
|
|
URLBASE="$(printf '%s' "${JSON}" | jq -r '.images[0].urlbase // empty')"
|
|
[[ -n "${URLBASE}" ]] || { echo "Bing-Antwort ohne urlbase"; exit 1; }
|
|
curl -fsSL --retry 3 --retry-delay 5 -o "${TARGET}" "https://www.bing.com${URLBASE}_UHD.jpg"
|
|
echo "Geladen: ${TARGET}"
|
|
else
|
|
echo "Bereits vorhanden: ${TARGET}"
|
|
fi
|
|
|
|
# Alte behalten wir 7 Tage (Rotation via Noctalia-Automation moeglich)
|
|
ls -t "${OUTDIR}"/bing-*.jpg 2>/dev/null | tail -n +8 | xargs -r rm -f --
|
|
echo "Bereinigt, behalten: $(ls "${OUTDIR}"/bing-*.jpg 2>/dev/null | wc -l)"
|
|
|
|
# Direkt setzen (schlaegt fehl ohne laufende Shell -> Datei bleibt liegen)
|
|
noctalia msg wallpaper-set "${TARGET}" && echo "Gesetzt: ${TARGET}" || echo "Noctalia laeuft nicht - Datei liegt bereit"
|