#!/bin/sh
# Copyright (C) 2010 Sergio García-Cuevas González.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
# rtve-mediateca-dl
#
# Download a video file from the "mediateca" of RTVE:
# .
#
# Usage:
# download-from-rtve-mediateca ADDRESS [OUTPUT-FILE]
SUCCESS=0
FAILURE=1
NAME=rtve-mediateca-dl
VERSION=1.0
RTVE_MEDIATECA_DL=`basename "$0"`
usage() {
printf 'Usage: %s [OPTION] ADDRESS [OUTPUT-FILE]\n' "$RTVE_MEDIATECA_DL"
printf 'Download a video from the "mediateca" of RTVE.\n'
printf '\n'
printf ' -q, --quiet quiet (no output)\n'
printf ' -h, --help display this help and exit\n'
printf ' --version output version information and exit\n'
printf '\n'
printf 'Mail bug reports and suggestions to .\n'
}
version() {
printf '%s %s\n' "$NAME" "$VERSION"
printf 'Copyright (C) 2010 Sergio García-Cuevas González .\n'
printf 'License GPLv3+: GNU GPL version 3 or later \n'
printf '\n'
printf 'This is free software; you are free to change and redistribute it.\n'
printf 'There is NO WARRANTY, to the extent permitted by law.\n'
}
# Process [OPTION]
QUIET=""
case "$1" in
-h|--help) usage
exit $SUCCESS
;;
--version) version $SUCCESS
exit
;;
-q|--quiet) QUIET=--quiet
shift
;;
esac
# Get the address and the output file
ADDRESS="$1"
if [ "x$ADDRESS" = "x" ]; then
usage >&2
exit $FAILURE
fi
OUTPUT_FILE="$2"
# Extract the numeric content Id
CONTENT_ID_LINE_PATTERN='var flashcontentId ='
CONTENT_ID=`wget $QUIET "$ADDRESS" -O - \
| sed -n "/$CONTENT_ID_LINE_PATTERN/s/[^0-9]//gp"`
if [ "x$CONTENT_ID" = x ]; then
printf '%s: Could not extract the content Id from %s.\n' \
"$RTVE_MEDIATECA_DL" "$ADDRESS" >&2
exit $FAILURE
fi
# Extract the resource file URI
RESOURCE_URI_TEMPLATE=http://www.rtve.es/alacarta/player/%s.xml
RESOURCE_URI=`printf "$RESOURCE_URI_TEMPLATE" "$CONTENT_ID"`
# Extract the location of the video file
LEADING_REGEX='^.*'
TRAILING_REGEX='.*$'
ORIGINAL_PREFIX='rtmp://stream'
DESIRED_PREFIX='http://www'
VIDEO_URI=`wget $QUIET "$RESOURCE_URI" -O - \
| sed "s_${LEADING_REGEX}__;s_${TRAILING_REGEX}__" \
| sed "s_${ORIGINAL_PREFIX}_${DESIRED_PREFIX}_"`
if [ "x$VIDEO_URI" = x ]; then
printf '%s: Could not extract the video location from %s.\n' \
"$RTVE_MEDIATECA_DL" "$ADDRESS" >&2
exit $FAILURE
fi
# Download the video file
if [ "x$OUTPUT_FILE" = x ]; then
wget $QUIET "$VIDEO_URI" -c
else
wget $QUIET "$VIDEO_URI" -c -O "$OUTPUT_FILE"
fi
# Maybe something went wrong at the last step
if [ $? != 0 ]; then
printf '%s: Could not download video from %s\n' \
"$RTVE_MEDIATECA_DL" "$VIDEO_URI" >&2
exit $FAILURE
fi