Shell-Skript zum Downsampeln von Podcasts
Zuletzt verändert am 24. Juli 2026 • 2 Min. Lesezeit • 243 WörterIch habe einen ganz einfachen MP3-Player mit nur 128 MB Speicher.
Ich habe einen sehr einfachen MP3-Player mit nur 128 MB Speicher. Ich höre hauptsächlich Podcasts, die von Amarok automatisch in den Ordner ~/.kde/share/apps/amarok/podcasts/data heruntergeladen werden. Um möglichst viele davon auf dem begrenzten Speicherplatz unterzubringen und von überall darauf zugreifen zu können, habe ich ein Skript geschrieben, das die Dateien beim Eintreffen automatisch downsampelt und auf meinem Webserver bereitstellt. Das Skript wird stündlich über die crontab ausgeführt. Die entsprechenden Dateien sehen wie folgt aus:
server:/etc/cron.hourly> more podcast_convert.sh
#!/bin/bash
/home/marzena/bin/podcast_convert.sh /home/marzena/.kde/share/apps/amarok/podcasts/data/*.mp3server:~/bin> more podcast_convert.sh
#!/bin/bash
if [ $1 = "/home/marzena/.kde/share/apps/amarok/podcasts/data/*.mp3" ]
then
echo "$1: No files to process!"
exit 1
else
while [ $# -ge 1 ]; do
infn=$1
echo "Infile = "$infn
strippedinfn=`basename $1`
strippedinfn=${strippedinfn//:/}
echo "Stripped Infile = "$strippedinfn
outfn="/srv/www/htdocs/vhosts/jeltsch.org/podcasts/${strippedinfn%%.mp3}_LQ.mp3"
echo "Outfile = "$outfn
if test ! -f $outfn
then
echo "Downsampling $outfn."
lame --mp3input -V 3 --strictly-enforce-ISO --resample 12 $infn $outfn
else
echo "The file $outfn has been already downsampled. Skipping…"
fi
# rm $infn
shift 1
done
fiEine moderne Version würde so etwa aussehen:
#!/bin/bash
if [ "$1" = "/home/marzena/.kde/share/apps/amarok/podcasts/data/*.mp3" ]; then
echo "$1: No files to process!"
exit 1
else
while [ $# -ge 1 ]; do
infn="$1"
echo "Infile = $infn"
strippedinfn=$(basename "$1")
strippedinfn=${strippedinfn//:/}
echo "Stripped Infile = $strippedinfn"
outfn="/srv/www/htdocs/vhosts/jeltsch.org/podcasts/${strippedinfn%%.mp3}_LQ.mp3"
echo "Outfile = $outfn"
if [ ! -f "$outfn" ]; then
echo "Downsampling $outfn."
lame --mp3input -V 3 --strictly-enforce-ISO --resample 12 "$infn" "$outfn"
else
echo "The file $outfn has been already downsampled. Skipping…"
fi
# rm "$infn"
shift
done
fi