|
From: Chilts <and...@us...> - 2005-05-08 03:30:05
|
Update of /cvsroot/pollpod/pollpod/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12230/pollpod/src Modified Files: pollpod.pl Log Message: - added ability to save both the XML feed and parsed (XML::Simple) version - added example options to config file - Minor: made a couple of tmsg()s to be fmsg()s Index: pollpod.pl =================================================================== RCS file: /cvsroot/pollpod/pollpod/src/pollpod.pl,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- pollpod.pl 6 May 2005 13:57:38 -0000 1.1 +++ pollpod.pl 8 May 2005 03:29:56 -0000 1.2 @@ -42,9 +42,17 @@ title('Fetching All Feeds'); fetchAllFeeds($data); + title('Saving RSS XML Feeds'); + saveRssXmlFeeds($data) + if $data->{Options}{SaveRssXmlFeeds} eq 'yes'; + title('Parsing Feeds'); parseFeeds($data); + title('Dumping Parsed XML'); + dumpParsedXml($data) + if $data->{Options}{DumpParsedXml} eq 'yes'; + title('Extracting Items'); extractItemsWithPodCasts($data); @@ -99,7 +107,8 @@ $data->{Options}{PodCastSaveDir} = tilde($cfg->val('Options', 'PodCastSaveDir')); $data->{Options}{MakeDateLinks} = $cfg->val('Options', 'MakeDateLinks'); $data->{Options}{TestOnly} = $cfg->val('Options', 'TestOnly'); - $data->{Options}{DumpItemsInFeed} = $cfg->val('Options', 'DumpItemsInFeed'); + $data->{Options}{SaveRssXmlFeeds} = $cfg->val('Options', 'SaveRssXmlFeeds'); + $data->{Options}{DumpParsedXml} = $cfg->val('Options', 'DumpParsedXml'); $data->{Options}{CatchUpAll} = $cfg->val('Options', 'CatchUpAll'); $data->{Options}{MakeDirs} = $cfg->val('Options', 'MakeDirs'); $data->{Options}{Feed} = $cfg->val('Options', 'Feed'); @@ -181,6 +190,33 @@ "- $failed failed" ); } +sub saveRssXmlFeeds +{ + my ($data) = @_; + + my $failed=0; + my $ok=0; + + foreach my $feed ( @{$data->{feeds}} ) { + next if $feed->{done}; + + my $fh = IO::File->new("$feed->{fullDir}/feed.xml", O_WRONLY|O_CREAT); + unless ( defined $fh ) { + tmsg('Failed', "Couldn't open file $feed->{fullDir}/feed.xml"); + $failed++; + next; + } + + print $fh $feed->{xml}; + undef $fh; + tmsg('Written', "$feed->{feedName}/feed.xml"); + $ok++; + } + fmsg( 'SaveXmlFeeds', + "Saved $ok feeds", + "- $failed failed writing" ); +} + sub parseFeeds { my ($data) = @_; @@ -206,10 +242,37 @@ $ok++; } fmsg( 'ParseXml', - "Parsed $ok valid RSS feed(s):", + "Parsed $ok well-formed RSS feed(s):", "- $failed failed" ); } +sub dumpParsedXml +{ + my ($data) = @_; + + my $failed=0; + my $ok=0; + + foreach my $feed ( @{$data->{feeds}} ) { + next if $feed->{done}; + + my $fh = IO::File->new("$feed->{fullDir}/feed.dmp", O_WRONLY|O_CREAT); + unless ( defined $fh ) { + tmsg('Failed', "Couldn't open file $feed->{feedName}/feed.dmp"); + $failed++; + next; + } + + print $fh Data::Dumper->Dump([$feed->{struct}], ['feed']); + undef $fh; + tmsg('Written', "$feed->{feedName}/feed.dmp"); + $ok++; + } + fmsg( 'DumpParsedXml', + "Saved $ok feeds", + "- $failed failed writing" ); +} + sub extractItemsWithPodCasts { my ($data) = @_; @@ -529,7 +592,7 @@ next if $podcast->{done}; tmsg( 'Fetching', - "$podcast->{orig_filename}..." ); + "$podcast->{orig_filename} ($podcast->{length})..." ); # get it my $filename = "$feed->{fullDir}/$podcast->{filename}"; @@ -628,7 +691,7 @@ } } - tmsg( 'DateLinks', + fmsg( 'DateLinks', "Created ($ok) links to podcasts:", "- $exists links already exist", "- $failed links failed" ); @@ -664,7 +727,7 @@ close(PLAYLIST); - tmsg( 'PlayList', + fmsg( 'PlayList', "Created ($ok) entries in playlist ($filename)" ); } |