bing.sh


#!/bin/bash

function logit {
    z=$1
#    echo $1
}

# export DBUS_SESSION_BUS_ADDRESS environment variable useful when the script is set as a cron job
PID=$(pgrep gnome-session)
export DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ|cut -d= -f2-)


# $bing is needed to form the fully qualified URL for
# the Bing pic of the day
bing="http://www.bing.com"

# $xmlURL is needed to get the xml data from which
# the relative URL for the Bing pic of the day is extracted
#
# The mkt parameter determines which Bing market you would like to
# obtain your images from.
# Valid values are: en-US, zh-CN, ja-JP, en-AU, en-UK, de-DE, en-NZ, en-CA.
#
# The idx parameter determines where to start from. 0 is the current day,
# 1 the previous day, etc.
xmlURL="http://www.bing.com/HPImageArchive.aspx?format=xml&idx=1&n=1&mkt=en-US"

# $saveDir is used to set the location where Bing pics of the day
# are stored.  $HOME holds the path of the current user's home directory
saveDir="$HOME/Pictures/wallpapers/Bing/"

# Create saveDir if it does not already exist
mkdir -p $saveDir

# Set picture options
# Valid options are: none,wallpaper,centered,scaled,stretched,zoom,spanned
picOpts="zoom"

# The desired Bing picture resolution to download
# Valid options: "_1024x768" "_1280x720" "_1366x768" "_1920x1200"
#desiredPicRes="_1920x1200"
desiredPicRes="_1366x768"

# The file extension for the Bing pic
picExt=".jpg"

# Extract the relative URL of the Bing pic of the day from
# the XML data retrieved from xmlURL, form the fully qualified
# URL for the pic of the day, and store it in $picURL

xml=$(curl -s $xmlURL)

# Form the URL for the desired pic resolution
desiredPicURL=$bing$(echo $xml  | grep -oP "<urlBase>(.*)</urlBase>" | cut -d ">" -f 2 | cut -d "<" -f 1)$desiredPicRes$picExt

# Form the URL for the default pic resolution
defaultPicURL=$bing$(echo $xml | grep -oP "<url>(.*)</url>" | cut -d ">" -f 2 | cut -d "<" -f 1)

# $picName contains the filename of the Bing pic of the day

# Attempt to download the desired image resolution. If it doesn'
t
# exist then download the default image resolution
desiredPicName="$saveDir${desiredPicURL##*/}"
defaultPicName="$saveDir${defaultPicURL##*/}"

if [ -a $desiredPicName ]
then
    logit "allready download $desiredPicName"
    exit
fi

if [ -a $defaultPicName ]
then
    logit "allready download $defaultPicName"
    exit
fi

logit $desiredPicURL
logit $defaultPicURL
logit $desiredPicName
logit $defaultPicName


http_code=`curl -o $desiredPicName --silent --write-out '%{http_code}' $desiredPicURL`
if [[ $http_code == "200" ]]
then
    logit "download $desiredPicName"
    local_file=$desiredPicName
else
    logit "fail download $desiredPicName"
    rm -f $desiredPicName
    http_code=`curl -o $defaultPicName --silent --write-out '%{http_code}' $defaultPicURL`
    if [[ $http_code == "200" ]]
    then
    logit "download $defaultPicName"
    local_file=$defaultPicName
    else
    logit "fail download $defaultPicName"
    rm -f $defaultPicName
    exit
    fi
   
fi
logit "set wallpaper $local_file"
# Set the GNOME3 wallpaper
gsettings set org.gnome.desktop.background picture-uri "file://$local_file"
# Set the GNOME 3 wallpaper picture options
gsettings set org.gnome.desktop.background picture-options $picOpts

# Remove pictures older than 30 days
#find $saveDir -atime 30 -delete

# Exit the script
exit