Radiomitschnitt per Rezept

Wed, 30. Dec 2009

Categories: de sysadmin Tags: Bayern2 cron Cronjob id3v2 Linux Mitschnitt Radio Stream streamripper vServer

Seit lÀngerem schneide ich mir interessante Sendungen aus dem (Internet-)Radio mit, vor allem Hörspiele auf B2.

Bisher mußte dazu immer mein alter (Linux-)Rechner laufen und den Mitschnitt mußte ich hĂ€ndisch starten – wie unbequem. Oder man ist unterwegs und verpaßt den Mitschnitt. Wie Ă€rgerlich.

Doch das ist ab jetzt vorbei, denn ab sofort schneidet mein vServer (lÀuft ja eh stÀndig) mit!

Und so geht’s:

  1. Ein Script auf dem vServer, das den Mitschnitt startet und beendet:

    #!/bin/sh
    
    # id3v2 scheint Bilder nicht zu mögen:
    # - http://ubuntuforums.org/showthread.php?t=1353213
    # - readonly: http://id3v2.cvs.sourceforge.net/viewvc/id3v2/id3v2/id3v2.cpp?revision=1.17&view=markup#l_610
    # - http://www.id3.org/id3v2.4.0-frames Kapitel4.14.
    # erfolglos: id3v2 --APIC "0\0image/jpeg\03hello\0`cat moby_dick.jpg`" $file
    
    if [ $# -lt 3 ]; then
      echo "rip audio streams to a local file."
      echo " "
      echo "Usage:"
      echo " "
      echo "  $0 stream marker duration id3v2_tags"
      echo "    stream     typically a URL, see 'man streamripper'"
      echo "    marker     filename prefix"
      echo "    seconds    how long will we dump"
      echo "    id3v2_tags optional, tag the download with id3v2"
      echo " "
      echo "Example:"
      echo "  $0 http://gffstream.ic.llnwd.net/stream/gffstream_w11a bayern2 3660"
      echo " "
      exit 1
    fi
    
    src=$1 ; shift
    basename=$1 ; shift
    seconds=$1 ; shift
    
    dst=$basename-`date --iso-8601=seconds`
    
    echo "dumping $seconds (sec) from $src to $dst ..."
    
    streamripper $src -u Mozilla -i -a $dst -l $seconds
    rm $dst.cue
    
    if [ $# -gt 0 ] ; then
      id3v2 "$@" $dst.mp3
    fi
    
    chmod a+r $dst.*
    
    echo done.
    
  2. Ein Cronjob fĂŒr jeden Mitschnitt:

    PATH=/bin:/usr/bin
    HOME=/home/USERNAME
    
    # Recorder
    
    rec_cmd=/home/USERNAME/bin/stream-rip
    rec_dir=/home/USERNAME/pub/recorder
    
    ON3=http://gffstream.ic.llnwd.net/stream/gffstream_w9a
    BAYERN1=http://gffstream.ic.llnwd.net/stream/gffstream_w10a
    BAYERN2=http://gffstream.ic.llnwd.net/stream/gffstream_w11a
    M945=http://stream.m945.mwn.de:80/m945-hq.mp3
    
    # B2 Krimihörspiel
    29 20 * * 3 $rec_cmd $BAYERN2 $rec_dir/b2-krimi 3660 -A "B2 Krimi"