Estoy intentando descargar una imagen diaria y configurarla como imagen de fondo con:
#!/bin/bash
# clear cache
PICS="/home/pvlkmrv/Pictures"
rm -f ${PICS}/wall.jpg
rm -f ${PICS}/photo-of-the-day
# download photo-of-the-day page
wget http://photography.nationalgeographic.com/photography/photo-of-the-day -O ${PICS}/photo-of-the-day
# parse the url out from the file
url=`cat ${PICS}/photo-of-the-day | grep 'images.nationalgeographic.com.*cache.*990x742.jpg' | cut -d '"' -f 2`
# download the photo
wget http:$url -O ${PICS}/wall.jpg
# set the desktop background
URI=file:///${PICS}/wall.jpg
echo ${URI}
gsettings set org.gnome.desktop.background picture-options 'centered'
gsettings set org.gnome.desktop.background picture-uri ${URI}
La imagen se descarga tal como se esperaba, pero el fondo en realidad no está configurado. Curiosamente, funciona si modifico el URI para incluir más o menos barras diagonales, pero lo hace sólo una vez. Termino teniendo que modificar el guión en lo que debería ser una forma sin sentido cada vez para que esta sección funcione.
¿Qué podría estar causando esto?
Respuesta1
pruébalo de esta manera:
#!/bin/bash
# clear cache
PICS="/home/pvlkmrv/Pictures"
rm -f "${PICS}/wall.jpg"
rm -f "${PICS}/photo-of-the-day"
# download photo-of-the-day page
wget "http://photography.nationalgeographic.com/photography/photo-of-the-day" -O "${PICS}/photo-of-the-day"
# parse the url out from the file
url="`cat ${PICS}/photo-of-the-day | grep 'images.nationalgeographic.com.*cache.*990x742.jpg' | cut -d '\"' -f 2`"
# download the photo
wget "http:$url" -O "${PICS}/wall.jpg"
# set the desktop background
# only two slashes here, because the PICS var already has a leading slash
URI="file://${PICS}/wall.jpg"
echo ${URI}
gsettings set org.gnome.desktop.background picture-options 'centered'
gsettings set org.gnome.desktop.background picture-uri "${URI}"
Respuesta2
Puede citar la URI
variable completa como lo han mostrado cmks, o asegurarse de que se cite file://
y wall.jpg
, así:
URI="file:///"${PICS}"/wall.jpg"
Aquí hay una pequeña mejora de su guión. Las variables se utilizan para acortar la línea de comando. El archivo se guarda en /tmp
, que se elimina cada vez que se reinicia el sistema, por lo que no es necesario borrar el caché manualmente. AWK se utiliza para mejorar el análisis y disminuir las tuberías. wget
escribe directamente en AWK para evitar guardar archivos adicionales
#!/bin/bash
# set variables to shorten lines
FILE="/tmp/photo_of_the_day"
PAGE="http://photography.nationalgeographic.com/photography/photo-of-the-day"
SEARCH="images.nationalgeographic.com.*cache.*990x742.jpg"
# get image URI directly
IMAGE=$(wget "$PAGE" -O - -o /dev/null | awk -F'"' -v regex="$SEARCH" '$0~ regex {print $2}')
# download the photo
wget http:$IMAGE -O "$FILE"
# set the desktop background
URI="file:///$FILE"
echo ${URI}
gsettings set org.gnome.desktop.background picture-options 'centered'
gsettings set org.gnome.desktop.background picture-uri "${URI}"
Respuesta3
Creo que encontré el problema: incluso si voy al archivo, hago clic derecho y digo "Establecer como fondo de pantalla...", no sucede nada. Entonces postulé que es el hecho de que el nombre del archivo no cambia cada vez; Linux tiene algún tipo de característica de ahorro de costos que en realidad no voy a actualizar porque es la misma imagen. Para forzar al sistema a reconocer que es una imagen nueva cada vez, varíe el nombre del archivo de esta manera:
#!/bin/bash
# clear cache
PICS="/home/pvlkmrv/Pictures"
RAND=$RANDOM
rm -f ${PICS}/*.jpg
rm -f ${PICS}/photo-of-the-day
# download photo-of-the-day page
wget http://photography.nationalgeographic.com/photography/photo-of-the-day -O ${PICS}/photo-of-the-day
# parse the url out from the file
url=`cat ${PICS}/photo-of-the-day | grep 'images.nationalgeographic.com.*cache.*990x742.jpg' | cut -d '"' -f 2`
# download the photo
wget http:$url -O ${PICS}/wall${RAND}.jpg
# set the desktop background
URI="file://${PICS}/wall${RAND}.jpg"
echo ${URI}
gsettings set org.gnome.desktop.background picture-options 'centered'
gsettings set org.gnome.desktop.background picture-uri "${URI}"