Categories
General

Save a WMA stream and convert it to an MP3

A WMA stream is like an innocent person imprisoned in a gulag. It is our duty to free them! First, free the music from its streaming prison by capturing it to a WMA file:

mplayer -dumpstream -dumpfile pop_tune.wma mms://gulag.com/pop_tune.wma

(From this page.) It’ll take a while, but you should end up with a file called ‘pop_tune.wma.’ A WMA is like an innocent person on work release from the gulag, wearing a lo-jack that prevents them from walking normally. So, let’s remove the lo-jack by converting the WMA to a WAV:

mplayer -vo null -vc dummy -ao pcm:file=pop_tune.wav pop_tune.wma

(From this page, refined by this reply.) If it worked, you should have a WAV file, which you can easily encode in your favorite non-evil format. You can also just use ffmpeg to turn the WMA file straight into an MP3 (or a ton of other things). This makes a 128kbps MP3:

ffmpeg -ab 128 -i pop_tune.wma pop_tune.mp3

Categories
General

crontab + wget = Tivo for internet radio

Let’s say your favorite radio station has an MP3 stream. Unfortunately, your favorite radio show on that station is on at some odd hour. Or you’re just scatterbrained and forget to tune in. You desperately need to record the show so you can listen to it whenever you’d like. Using cron, wget, and a little shell script it’s pretty easy.

Find the stream address

At my favorite station, KEXP, clicking an MP3 stream gives you a .pls file, which contains the stream address. Normally, you’d open this in an audio client such as xmms and listen away. Instead, download the .pls file so you can view the stream address.

Write a script

Here’s an example bash script that records a show with wget, using the date to make a unique name for the show. URL is the stream address you found earlier. LPath is the path where you want to put your recorded shows.


#!/bin/bash

Date=$(date +%F-%k-%M)
URL="http://internet-radio-station.net:8000/"
LPath="/home/joe/music/radio_shows/"

/usr/bin/wget $URL -O ${LPath}radio_show-${Date}.mp3

Save the script to your bin folder as something like “radioshowrec” and test it out – run it for a few seconds, stop it, then listen to the resulting mp3 file.

Setting up the cron jobs

First, make sure your user can use cron. I did this by switching to superuser mode and making an /etc/cron.allow file with my username in it.

Next edit your crontab file by typing “crontab -e” and add a pair of lines like this for each show you want to record:


00 12 * * 1 /home/joe/bin/radioshowrec
00 13 * * 1 /usr/bin/killall wget

The first line starts the recording at noon every Monday. The second line stops it at 1 pm. It will actually kill all of the wgets that might be running – if you plan on having more than one going at once you should figure out a smarter way to stop the recording.

Since the above script makes files with unique names, the files will pile up after a while. Personally, I just want to listen to the most recent show, so I leave the date part out of the script, overwriting the old file every week.

Categories
General

Abiword blues

Abiword is a nice, fast word processor. OpenOffice.org is better for importing and editing complex documents, but it can be painfully slow so I only use it if I have to. Abiword is also usually very stable, so I was surprised when it started crashing on startup. I tried upgrading, I tried downgrading, but it kept crashing. I finally found this bug report at Redhat’s Bugzilla. Comment 8 mentions starting Abiword like this:

$ abiword --geometry 800x600

Not sure why or how, but it worked!