This script is used to download podcasts. It is very basic and uses LWP::Simple to download the rss file and the audio files. The feeds go under the __DATA__ token and it also requires an external podcast.conf file to store a list of already downloaded files.
#! /usr/bin/perl
use warnings;
use LWP::Simple;
#set date for making directory
($day, $month, $year) = (localtime)[3..5];
$year += 1900;
$month++;
$date = "$year-$month-$day";
$dir = "/home/nathan/music/$date";
#open file to create an array to test against
open FILE, "< /home/nathan/bin/podcast.log" or die("Can't open podcast
+.log for reading:$!");
@test=<FILE>;
close FILE;
#open file to add to log file
open(CONF, ">> /home/nathan/bin/podcast.log") or die("Can't open podca
+st.log for writing");
#making directory and chdir to it
mkdir($dir) unless -d $dir;
chdir($dir) or die("Can't change directory: $!");
#basic extraction of urls
foreach (<DATA>) {
$rss = get($_) or warn("Cant get $_: $!");
while ($rss =~ /url\s*=\s*["']?([^'">]+?)*./gi) {
($url = $&)=~ s/^url=['"]//gi;
$url =~ s/['"]$//gi;
#added for lugradio's awkward rss feed
$url =~ s/\?podcast$//;
($url =~ /[a-z0-9_?-]+?\....$/i) || ($url =~ /[a-z0-9_?-]+?\.mp3.tor
+rent$/i);
$line = join( $", @test);
#downloading file
getstore($url, $&) unless $line =~ /$&/;
#entering file into log
print CONF "$&\n" unless $line =~ /$&/;
}
}
__DATA__
http://perlcast.com/rss/current.xml