[Dxspider-support] XML interface for qrz.com

Ron Gibson r.gibson2 at sympatico.ca
Wed Oct 7 01:45:42 BST 2009


Very nice Ricardo. It works well.
Thanks

Ricardo Suarez wrote:
> Hi, all
> 
> As requested by Enzo, IK6IHL, I write the xml interface for qrz.com.
> 
> The script, cut and paste it, are named qrz.pl, you need to copy it to 
> /spider/local_cmd/show/ and to pay the xml access fee to qrz.com's owner.
> 
> It need for WWW::mechanize and if you not copy it to the right 
> directory, you need to change the two lines in reference to the file 
> KEY.txt.
> 
> In  KEY.txt file the script write the xml key, if the directory its ok, 
> the file KEY.txt are created automatically, if not, it aborts with a 
> "permissions" error.
> 
> I not agree to pay for the information, but understand the costs of 
> mantain a server. In this case, because my script is  for a not free 
> access to database, I not support it.
> 
> I write it because I like to program in perl. It is shared as-is, I are 
> 100% sure it works today, but not ask me if tomorrow not works  ;-) .
> 
> Regards
> 
> Rick LU9DA
> 
> 
> 
> #begin of the script, place it in /spider/local_cmd/show/qrz.pl
> 
> #
> # Query the QRZ Database server for a callsign
> #
> # from an idea by Steve Franke K9AN and information from Angel EA7WA
> #
> # Copyright (c) 2001 Dirk Koopman G1TLH
> #
> # modified on 10/6/2009 by Ricardo Suarez LU9DA to work with QRZ.COM xml
> #
> # interface, by request from Enzo, IK6IHL.
> #
> # need for WWW:Mechanize ! download it from CPAN
> #
> # remember to change $password and $username for yours!
> #
> ############################################################################# 
> 
> #
> # NOTE: xml access to QRZ.COM is under payment to QRZ.COM's owner, need for
> #
> # user and password, I NOT SEND YOU THE PASS/USR, ask QRZ.COM's owner.
> #
> # I NOT SUPPORT this script, are a gift for Enzo, if not works as you want,
> #
> # you can modify it for your needs or erase it from your box, but NOT 
> ASK ME.
> #
> ############################################################################# 
> 
> 
> 
> use WWW::Mechanize;
> 
> 
> my ($self, $line) = @_;
> my @list = split /\s+/, $line;        # generate a list of callsigns
> my $l;
> my $call = $self->call;
> my @out;
> my $url;
> my $page;
> my $linea;
> my $flag;
> my $temp;
> my $password = "yourpass";
> my $username = "yourcall";
> 
> return (1, $self->msg('e24')) unless $Internet::allow;
> return (1, "SHOW/QRZ <callsign>, e.g. SH/QRZ lu9da") unless @list;
> 
> 
> 
> #...............................
> 
> 
> open KEY, "/spider/local_cmd/show/KEY.txt" or &key;
> 
> #...............................
> 
> 
> my($key) = <KEY>;
> 
> close KEY;
> 
> chomp($key);
> 
> if ($key eq ""){
> 
>    $key = &key;
> 
>    }
> 
> $url = "http://www.qrz.com/xml?s=$key;callsign=@list";
> 
> my $mechanize = WWW::Mechanize->new(autocheck => 1);
> 
> $mechanize->get($url);
> 
> my $page = $mechanize->content;
> 
> my @tabla = split('\n', $page);
> 
> $flag = 1;
> 
> foreach $linea (@tabla) {
> 
> if ($linea =~ m/Error/){
> 
>  $linea =~ s/<Error>//g;
> 
>  $linea =~ s/<\/Error>//g;
> 
> 
>  if ($linea =~ m/found/){
> 
>       push @out,"QRZ.COM return: $linea - please retry\n";
> 
>   $flag = 0;
> 
>   }
> 
>  if ($linea =~ m/Timeout/){
> 
>       push @out,"QRZ.COM return: $linea - please retry now\n";
> 
>   &key;
> 
>   }
> 
>  if ($linea =~ m/Invalid/){
> 
>       push @out,"QRZ.COM return: $linea - please retry now\n";
> 
>   &key;
> 
>   }
> 
>  if ($linea =~ m/refused/){
> 
>       push @out,"Service unavailable caused by QRZ.COM\n";
> 
>   push @out,"ask AA7BQ why, not the writer of the script! :-)))\n"
> 
>   }
> 
>  }
> 
> }
> 
> if ($flag eq 1){
> 
> foreach $linea (@tabla) {
> 
>  if ($linea =~ m/call/){
> 
>      if ($linea =~ m/p_call/){
> 
>   }else{
> 
>   $linea =~ s/<call>//;
> 
>   $linea =~ s/<\/call>//;
> 
>       push @out,"$linea\n";
> 
>   }
>  }
> 
>  if ($linea =~ m/fname/){
> 
>   $linea =~ s/<fname>//;
> 
>   $linea =~ s/<\/fname>//;
> 
> 
>   $temp = "$linea ";
> 
>   }
> 
>  if ($linea =~ m/name/){
> 
>   $linea =~ s/<name>//;
> 
>   $linea =~ s/<\/name>//;
> 
>       push @out,"$temp$linea\n";
> 
>   }
> 
>  if ($linea =~ m/addr1/){
> 
>   $linea =~ s/<addr1>//;
> 
>   $linea =~ s/<\/addr1>//;
> 
>       push @out,"$linea\n";
> 
>   }
> 
>  if ($linea =~ m/addr2/){
> 
>   $linea =~ s/<addr2>//;
> 
>   $linea =~ s/<\/addr2>//;
> 
>       push @out,"$linea\n";
> 
>   }
> 
>  if ($linea =~ m/state/){
> 
>   $linea =~ s/<state>//;
> 
>   $linea =~ s/<\/state>//;
> 
>       $temp = "STATE = $linea ";
> 
>   }
> 
> 
>  if ($linea =~ m/zip/){
> 
>   $linea =~ s/<zip>//;
> 
>   $linea =~ s/<\/zip>//;
> 
>       push @out,"$temp- ZIP CODE = $linea\n";
> 
>   }
> 
>  if ($linea =~ m/country/){
> 
>   $linea =~ s/<country>//;
> 
>   $linea =~ s/<\/country>//;
> 
>       push @out,"$linea\n";
> 
>   }
> 
>  if ($linea =~ m/grid/){
> 
>   $linea =~ s/<grid>//;
> 
>   $linea =~ s/<\/grid>//;
> 
>       push @out,"LOCATOR = $linea\n";
> 
>   }
> 
>  if ($linea =~ m/qslmgr/){
> 
>   $linea =~ s/<qslmgr>//;
> 
>   $linea =~ s/<\/qslmgr>//;
> 
>       push @out,"QSL VIA = $linea\n";
> 
>   }
> 
>  }
> 
> }
> 
> 
> sub key {
> 
> $url = 
> "http://www.qrz.com/xml?username=$username;password=$password;agent=q5.0";
> 
> my $mechanize = WWW::Mechanize->new(autocheck => 1);
> 
> $mechanize->get($url);
> 
> my $page = $mechanize->content;
> 
> my @tabla = split('\n', $page);
> 
> foreach $linea (@tabla) {
> 
> if ($linea =~ m/Key/){
> 
>  $linea =~ s/<Key>//g;
> 
>  $linea =~ s/<\/Key>//g;
> 
> #...............................
> 
>  open KEY, ">/spider/local_cmd/show/KEY.txt" or die $!;
> 
> #...............................
> 
>  print KEY $linea;
> 
>  close KEY;
> 
>  return "$linea";
> 
>     }
> 
> }
> 
> }
> 
> 
> return (1, @out);
> 
> 
> # end of the script
> 
> _______________________________________________
> Dxspider-support mailing list
> Dxspider-support at dxcluster.org
> http://mailman.tobit.co.uk/mailman/listinfo/dxspider-support
> 
> 



More information about the Dxspider-support mailing list