(x)clip (x)clip hurra: Mediathek Download v2
20
Mai
Viele Kommentare gab es zu “Mediathek Download” (s. Artikel) – auch mit vielen Tipps und Hinweisen. Vielen Dank dafür!!
Einen Verbesserungsvorschlag habe ich nun umgesetzt. Aicke hat vorgeschlagen den Weg für das Einfügen der .asx URL über xclip abzukürzen. Naja, da hat er auch Recht. Warum sollte man die URL erst kopieren und dann einfügen, wenn das eigentlich auch das Script übernehmen kann?!
Die neue Version hat also quasi 3 Modi:
- das Script fragt über einen Dialog nach der URL
- das Script wird über die Kommandozeile mit Parameter die URL gestartet (Debug)
- oder und neu: erst die URL in die Zwischenablage kopieren und dann das Script starten
Sobald sich in der Zwischenablage ein String mit der Endung .asx befindet, startet der Download ohne weitere Interaktion.
#!/bin/bash
#
# Download Script fuer .asx URLs (embedded .wmv)
#
# Download aus der ZDF Mediathek:
# - HTML Version der Mediathek aufrufen
# - Beitrag auswaehlen
# - Windows Media Player Link (DSL 1000 / DSL 2000) kopieren
# - Script aufrufen ... Download startet automatisch
# oder
# - HTML Version der Mediathek aufrufen
# - Beitrag auswaehlen
# - Windows Media Player Link (DSL 1000 / DSL 2000) kopieren
# - den Link als Parameter dem Script uebergeben (debug)
# oder (ohne xclip)
# - HTML Version der Mediathek aufrufen
# - Beitrag auswaehlen
# - Windows Media Player Link (DSL 1000 / DSL 2000) kopieren
# - Script aufrufen und Link einfügen
# - Download starten
#
# Prerequisites:
# - mencoder
# - curl
# - zenitiy
# - .asx URL (linked to a .wmv Stream)
# - xclip (optional)
#
# Ronny Becker, 01.2010
#
# Update: xclip integriert
# Ronny Becker, 05.2010
# grab URL
which xclip >/dev/null 2>&1 && CLIPBOARD="`xclip -o`"
if [[ $CLIPBOARD =~ \.asx ]]
then
URL=$CLIPBOARD
fi
if [ ! $1 ] && [ ! $URL ]; then
URL=`zenity --entry --text "Bitte die URL (.asx) eingeben:" --title "Mediathek Downloader" --width=400`
else
if [ ! $URL ]
then
URL=$1
fi
fi
# check if a URL was entered
if [ ${#URL} -eq 0 ]; then
zenity --error --title "Mediathek Downloader" --text="Keine gueltige URL ($URL)"
exit
fi
# get mms:... out of .asx
URL=`curl -s ${URL} | grep -o "mms:.*\.wmv"`
# get filename from the origin; without .wmv
OUTFILE=`basename $URL | sed 's/\.wmv//'`
# download and save; show progressbar
# if you need debugging, please comment out the progressbar function
# beginning at "| awk ..."; then you get all to console output
if [ $1 ]; then
mencoder -ofps 25 -oac lavc -ovc lavc -of mpeg -mpegopts format=dvd -vf harddup\
-srate 48000 -af lavcresample=48000,volnorm=1\
-lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=15360:vbitrate=15360:keyint=15:acodec=ac3:abitrate=192\
-o "${OUTFILE}.mpg"\
$URL
else
mencoder -ofps 25 -oac lavc -ovc lavc -of mpeg -mpegopts format=dvd -vf harddup\
-srate 48000 -af lavcresample=48000,volnorm=1\
-lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=15360:vbitrate=15360:keyint=15:acodec=ac3:abitrate=192\
-o "${OUTFILE}.mpg"\
$URL 2>&1 | awk -vRS="\r" '$1 ~ /Pos/ {gsub(/Pos:/," ");gsub(/%\)/," ");gsub(/ \(/," ");print $3"\n#Position
\t"$1"\\nFrame
\t"$2"\\nPercentage
\t"$3"%\\nFrame Rate
\t"$4"\\nTime Remaining
\t"$6; fflush();}' | zenity --progress --auto-kill --auto-close
fi

Vielen Dank, nun klappts!
Tolles Skript!
Hey.
leider funktioniert das skript bei mir nicht. mencoder, curl, xclip, zenity sind installiert. was ist denn .asx URL?
Das Skript nimmt die URL entgegen, gibt die im Terminal aus und beendet sich dann. Was hab ich übersehen?
Hi,
hab den Fehler gefunden. Da war noch ein “echo $URL; exit” drin – vom debuggen. Das ganze ist nun korrigiert.
Danke fürs Bescheid sagen!