Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical
 
PerlMonks  

perlpodcatcher

by cosecant (Monk)
on Oct 20, 2005 at 01:16 UTC ( [id://501493]=sourcecode: print w/replies, xml ) Need Help??
Category: Web Stuff
Author/Contact Info nglimsdale@gmail.com
Description: 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
Replies are listed 'Best First'.
Re: perlpodcatcher
by Anonymous Monk on Oct 21, 2005 at 15:04 UTC
    perlpod? catcher? podcast catcher?
      Yeah, sorry about the name. I never made the connection about POD

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: sourcecode [id://501493]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others taking refuge in the Monastery: (6)
As of 2024-03-28 13:45 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found