LinHES Forums
http://forum.linhes.org/

make_atsc_chanconf.pl
http://forum.linhes.org/viewtopic.php?f=15&t=4241
Page 1 of 1

Author:  Human [ Fri Apr 22, 2005 10:24 am ]
Post subject:  make_atsc_chanconf.pl

I updated Angel Li's perl script that pulls data from antennaweb.org to help you make an ~/.azap/channels.conf. Between the original writing and now, antennaweb.org's form behavior changed, breaking the script.

I emailed Angel with the update, but I wanted to post it here, too, in case people needed immediate functionality.

Code:
#!/usr/bin/perl

# Angel Li sent me this script to help set up an
# ~/.azap/channels.conf file automagically.  This probably
# isn't the final version .

# 04/22/2005: Edits by Bob Igo (Bob@StormLogic.com) to adapt the script to the
# new behavior on antennaweb.

 use LWP;
 use HTML::Form;
 use XML::XPath;
 use XML::XPath::XMLParser;

 #
 # Center frequencies for NTSC channels
 #
 @ntsc = (
     0,  0,  57,  63,  69,  79,  85, 177, 183, 189,
    195, 201, 207, 213, 473, 479, 485, 491, 497, 503,
    509, 515, 521, 527, 533, 539, 545, 551, 557, 563,
    569, 575, 581, 587, 593, 599, 605, 611, 617, 623,
    629, 635, 641, 647, 653, 659, 665, 671, 677, 683,
    689, 695, 701, 707, 713, 719, 725, 731, 737, 743,
    749, 755, 761, 767, 773, 779, 785, 791, 797, 803,
 );

$ZIPCODE = 'txtZipcode';
$MARKETING = 'chkMarketing';
$SURVEYS = 'chkSurveys';

 $XML = 'stationXml';
 $WEBSITE = 'http://www.antennaweb.org/aw/welcome.aspx';

 $zipCode = $ARGV[0];
 unless ($zipCode) {
    die "Zipcode missing on the command line";
 }
 unless ($zipCode =~ /^\d\d\d\d\d$/) {
    die "Illegal zipcode: $zipCode";
 }

 $ua = LWP::UserAgent->new;
 push @{$ua->requests_redirectable}, 'POST';
 $response = $ua->get($WEBSITE);
 if ($response->is_success) {
    $form = HTML::Form->parse($response);
    $request = $form->click;
   $response2 = $ua->request($request);
    if ($response2->is_success) {
       $form2 = HTML::Form->parse($response2);
      $form2->param($ZIPCODE, $zipCode);
      $form2->param($MARKETING, "off");   
      $form2->param($SURVEYS, "off");

       $request2 = $form2->click;
       $response3 = $ua->request($request2);
       if ($response3->is_success) {
         $form3 = HTML::Form->parse($response3);
          $xml = $form3->value($XML);
          $xml =~ s/%22/\"/g;
          $xml =~ s/%2c/,/g;
          $xml =~ s/%2f/\//g;
          $xml =~ s/%3c/</g;
          $xml =~ s/%3d/=/g;
         $xml =~ s/%3e/>/g;
          $xml =~ s/\+/ /g;
          genConf($xml);
          exit(0);
       }
       else {
          print STDERR "Could not submit zipcode: $zipCode\n";
          die $response3->status_line;
       }
    }
    print STDERR "Could not reach zipcode page";
    die $response2->status_line;
 }
 else {
    print STDERR "Error reaching $WEBSITE\n";
    die $response->status_line;
 }

 sub genConf {
    my($xml) = @_;
    my($s);
    my($callSign);
    my($channel);
    my($c);
    my($psipChannel);
    my($freq);

   $xp = XML::XPath->new(xml => $xml);
    foreach $s ($xp->find('//Station[BroadcastType="D"]')->get_nodelist) {
    if ($s->find('LiveStatus')->string_value eq "1") {
       $callSign = $s->find('CallSign')->string_value;
       $callSign =~ s/-DT//;
       $channel = $s->find('Channel')->string_value; # Channel to tune
      $psipChannel = $s->find('PsipChannel')->string_value;

       if ($DEBUG) {
         print STDERR $callSign, "\t", $channel, " -> ", $psipChannel, "\n";
       }

      $psipChannel =~ s/\.\d+$//;
      $freq = $ntsc[$channel]*1000000;
       if ($freq) {
          print $callSign, ":", $freq, ":8VSB:0:0\n";
       }
    }
 }
 }
[/code]

Author:  brendan [ Fri Apr 22, 2005 11:59 am ]
Post subject:  Re: make_atsc_chanconf.pl

What prerequisites?

Code:
Can't locate XML/XPath.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .) at ./get_channels_from_antennaweb.sh line 12.
BEGIN failed--compilation aborted at ./get_channels_from_antennaweb.sh line 12.


Author:  Human [ Fri Apr 22, 2005 12:18 pm ]
Post subject: 

Good point :) I had to get XML-XPath from CPAN at http://search.cpan.org/dist/XML-XPath/XPath.pm, build it, and install it:

Code:
perl Makefile.PL
su
make install

Author:  brendan [ Fri Apr 22, 2005 2:31 pm ]
Post subject: 

Confused for a minute, until I realized that there was a link to the Source and then a link to the archive and I needed the latter.

Thanks!

Author:  cesman [ Sat Apr 23, 2005 3:30 pm ]
Post subject: 

apt-get install libxml-xpath-perl

Page 1 of 1 All times are UTC - 6 hours
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/