Total Recorder -> iTunes/iPod on Windows

Do you have a question? Post it now! No Registration Necessary.  Now with pictures!

For anyone who may have Total Recorder Pro, iTunes, and Perl on
Windows, I've created that takes a TR job name, a "show
name" (i.e. whatever you want to call your recording), a duration, a
path to save to, and an extension for the file (i.e. mp3) and launches
a TR job, records it to a file name based on the show name and date,
gives it and ID3v2 tag with the show name, and puts it in iTunes in a
playlist with the name of the job as the playlist.

This basically gives you a way to schedule any web broadcast directly
into your iPod.

To use Windows' Scheduled Task functionality with this (I had trouble
using Cygwin cron because it runs as a different user by default and
can't do OLE automation to iTunes), just create a task with something
like the following:

"c:\Program Files\cygwin\bin\perl5.8.2.exe" "c:\Documents and
Settings\Jase\My Documents\bin\" "WBAA AM" "Acoustic Blend"
"01:04:00" "c:\Documents and Settings\Jase\My Documents\My
Music\WBAA\" "mp3"

This assumes your TotalRecorder.exe is in its standard install location
and that you have Perl's Win32::OLE, File::Basename, and MP3::Tag.

Please feel free to use this under the GPL:

#!/usr/bin/perl -w
use strict;

use Win32::OLE;
use File::Basename;
use MP3::Tag;

my $scriptName = basename($0);
my $job = $ARGV[0];
my $show = $ARGV[1];
my $duration = $ARGV[2];
my $path = $ARGV[3];
my $extension = $ARGV[4];

die "usage: $scriptName <jobName> <showName> <duration> <path>
<extension>\n" unless $job && $show && $duration && $path &&

my ($second, $minute, $hour, $day, $month, $year, $weekday, $dayOfYear,
$isDST) = localtime time;
$month += 1;
$year += 1900;
my $date = sprintf("%02d-%02d-%04d %02d.%02d.%02d", $month, $day,
$year, $hour, $minute, $second);
my $file = "$path$show-$date.$extension";

print "Recording $show from job \"$job\" to $file\n";
Files/HighCriteria/TotalRecorder/TotalRecorder.exe \"$file\"
/Time:$duration /Job:\"$job\"");

print "Tagging $file\n";
my $mp3File = MP3::Tag->new($file);
$mp3File->->add_frame("TIT2","$show - $month/$day/$year");

print "Adding $file to iTunes\n";
my $iTunesApp = new Win32::OLE('iTunes.Application');
my $playlist = $iTunesApp->LibrarySource->Playlists->ItemByName($job);
$playlist = $iTunesApp->CreatePlaylist($job) unless $playlist;

Site Timeline