#!/bin/bash

# config
savepath="/Users/uwe/Movies/AppleTrailers"
donepath="$savepath/done"

log="$savepath/.appletrailer.log"

trailerurl="http://trailers.apple.com/trailers/home/xml/current_720p.xml"

useragent="QuickTime/7.6.2 (qtver=7.6.2;os=Windows NT 5.1Service Pack 3)"

if [ -n "$log" ]; then
    echo "$(date +%F-%T) start" >> $log
fi

# convert xml to something readable ... at least a bit readable
curl -s "$trailerurl" | xml fo - | egrep '<title>|<postdate>|<large filesize' > /tmp/$$

down=0

while read l; do
    case ${l:1:1} in
# <title>
        t)  t="$(echo "$l" | sed 's,<title>,,;s,</title>,,' | tr -d "/'")"
            ;;
# <postdate>
        p)  d="$(echo "$l" | sed 's,<postdate>,,;s,</postdate>,,')"
            ;;
# <preview><large filesize=...
        l)  # url
            url="$(echo "$l" | sed 's,<large[^>]*>,,;s,</large>,,')"
            # filename
            fn="${url/*\\/}"
            # savename (file will be written as this name)
            sn="$d $t -- $fn"
            # check if file exists
            if [ ! -f "$savepath/$sn" -a ! -f "$donepath/$sn" ]; then
                if [ -n "$log" ]; then
                    echo "$(date +%F-%T) get $t -- $fn" >> $log
                fi
                curl -s -A "$useragent" -o "$savepath/$sn" "$url"
                if [ $? -ne 0 ]; then
                    if [ -n "$log" ]; then
                        echo "$(date +%F-%T) nok   $t -- $fn" >> $log
                    fi
                    rm -f "$savepath/$sn"
                else
                    if [ -n "$log" ]; then
                        echo "$(date +%F-%T) ok    $t -- $fn" >> $log
                        (( down++ ))
                    fi
                fi
            fi
            ;;
    esac
done < /tmp/$$

rm -f /tmp/$$

# if something was downloaded, restart the dlna (force)
if [ $down -ne 0 ]; then
    /Users/uwe/scripts/update-dlna -f
fi

if [ -n "$log" ]; then
    echo "$(date +%F-%T) stop (downloaded $down)" >> $log
fi

Add a code snippet to your website: www.paste.org