(x)clip (x)clip hurra: Mediathek Download v2

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.

mediathek_download_v2

#!/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

3 Responses to (x)clip (x)clip hurra: Mediathek Download v2

  1. Chris

    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?

    • Ronny

      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!

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>