#!/bin/sh

#
# Script downloads videos from streaming site arte.tv
#
#   usage: ./arte http://videos.arte.tv/de/videos/kaufen_fuer_die_muellhalde-3700234.html
#
# Needed binaries:
#
#   wget, grep, cut, perl
#
#   flvstreamer: http://savannah.nongnu.org/projects/flvstreamer
#   ffmpeg: http://horsfall.eu/2010/11/27/ffmpeg-full/
#

#
# Marcel Meckel, February 2011
#


WGETOPT="-q -O- --user-agent='Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13'"

URL="$1"
VIDXML="$(wget $WGETOPT "$(wget $WGETOPT "$URL" | grep -F vars_player.videorefFileUrl | cut -d'"' -f 2)" | grep -F Xml.xml | grep -F -v 'lang="fr"' | perl -pi -e 's#^.*ref="(:?.+)".*$#$1#')"
RTMP="$(wget $WGETOPT "$VIDXML" | grep -F rtmp:// | grep -F -v 'quality="sd"' | perl -pi -e 's#^.*>(:?.+)<.*$#$1#')"
NAME="$(echo "$VIDXML" | perl -pi -e 's#^.*/(.*-\d+),view,.*$#$1#')"

echo -n "Downloading ${NAME}.flv"

while ! flvstreamer -q -e -o "${NAME}.flv" -r "$RTMP"
do
  sleep 1
done

echo ", done"
echo "Extracting video from flash container"

if ffmpeg -loglevel quiet -i "${NAME}.flv" -acodec copy -vcodec copy "${NAME}.mp4" ; then
  rm "${NAME}.flv"
fi
