Advertisement
Guest User

Create RSS for All Geeknights Episodes

a guest
Dec 20th, 2012
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 1.60 KB | None | 0 0
  1. # usr/bin/perl
  2. # twitter.com/lalanl
  3.  
  4. use strict;
  5. use LWP::Simple;
  6. use HTML::Tree;
  7. use HTML::Entities;
  8. use HTML::Element;
  9. use HTML::TreeBuilder;
  10. use URI::Escape;
  11.  
  12. my $ua = new LWP::UserAgent;
  13. $ua->agent("Mozilla/5.0 (Windows NT 6.1; Intel Mac OS X 10.6; rv:7.0.1) Gecko/20100101 Firefox/7.0.1 ");
  14.  
  15. my $n = 1;
  16. my $more = 1;
  17. my $date = localtime(time);
  18. $date = "$date -0600";
  19. print "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<rss xmlns:atom=\"http://www.w3.org/2005/Atom\" version=\"2.0\">\n<channel><title>Geeknights Archive</title><link>http://frontrowcrew.com/</link><description>All the episodes.</description>
  20. <atom:link href=\"/\" rel=\"self\"></atom:link><language>en</language><lastBuildDate>$date</lastBuildDate>";
  21.  
  22. while($more eq 1){
  23.     my $url = "http://www.frontrowcrew.com/geeknights?page=$n";
  24.     my $req = new HTTP::Request 'GET' => $url;
  25.     $req->header('Accept' => 'text/html');
  26.     my $response = $ua->request($req);
  27.     my $html = $response->content;
  28.  
  29.     my $tree = HTML::TreeBuilder->new_from_content($html);
  30.     $tree->eof();
  31.  
  32.     my @episodes = $tree->find_by_attribute('class', 'episode');
  33.     $more = 0;
  34.     foreach my $ep (@episodes){
  35.         my $titleLink = $ep->find_by_tag_name('h2');
  36.         my $title = encode_entities($titleLink->as_text);
  37.    
  38.         my $downloadLink = $ep->find_by_attribute('class','mp3')->find_by_tag_name('a');
  39.         my $link = $downloadLink->attr('href');
  40.    
  41.         if($title || $link){
  42.             $more = 1;
  43.             print "<item><title>$title</title>";
  44.             print "<link>$link</link><enclosure url=\"$link\" length=\"None\" type=\"audio/mpeg\"></enclosure></item>\n";
  45.         }
  46.     }
  47.  
  48.     $n++;
  49. }
  50.  
  51. print "</channel></rss>";
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement