Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic
 
PerlMonks  

comment on

( [id://3333]=superdoc: print w/replies, xml ) Need Help??
Greetings OverlordQ and Fellow Monks I saw your Astronomy Pick Of The Day post, liked it, and thought it would be really cool taken one step further and put to Perl/Tk. So... I adapted the code from another post of mine Perl/Tk---Weather Map Grabber and appended the relevant code to your original.

So now the script does the following:
1) Grabs the Image
2) Saves it to a day specific filename yyyymmdd format as suggested by sauoq (I agree it does allow for easier filename sorting)
3) Displays it in a Tk Window!
4) Clicking on the Image displays a dialog box containing image source info.

Important Note for Windows ActiveState Perl 5.6.1 users: as of Build 635, their still appears to be a compatability issue with Tk::JPEG, a module used by this script. I have come up with a 'work-around' for this problem. If you encounter this issue please see my node that addresses this Re: Activestate TK::JPEG compatibility issue -- QUICK WORK AROUND FOUND, Any Better Ideas?. This should not be an issue for Unix/Linux users since they would compile the module on their own specific OS.

Anyway... enough said. The code is posted below.

As always, any input or suggestions for improvement of this code are greatly appreciated.
Enjoy and Have Fun!

UPDATE: 08/26/2003 -- Modified Perl/Tk Display section of the code to account for the possibility of grabbing a gif image. However, need to work on the proper functional display of an animated gif which it looks like today's image appears to be.
Any suggestions on how to do this in Perl/Tk? Thanks.


#!/usr/bin/perl use strict; use warnings; use URI::URL; use LWP::Simple qw/get/; use Tk; use Tk::DialogBox; use Tk::Photo; use Tk::JPEG; my $TOP = "http://antwrp.gsfc.nasa.gov/apod/"; my $IMGPATH = 'image/\d{4}/\w+.(gif|jpg|jpeg)'; my @timearray = gmtime(); #my $time = sprintf "%02d%02d%04d", ($timearray[4]+1), ($timearray[3]) +, ($timearray[5]+1900); my $time = sprintf "%04d%02d%02d", ($timearray[5]+1900),($timearray[4 +]+1), ($timearray[3]); my $titledate=sprintf "%02d-%-02d-%04d", ($timearray[4]+1), ($timearra +y[3]), ($timearray[5]+1900); my $content = get $TOP or die "Cannot get APOD Page\n"; my ($imgurl) = $content =~ m!($IMGPATH)!i; $imgurl = url($imgurl,$TOP)->abs; print "Acquiring Image File ....\n"; my $picture = get $imgurl or die "Cannot grab image: $!\n"; my $ext=$2; my $fmt="jpeg"; if ($ext =~ m/(gif)/ig){$fmt="gif";} my $imgfile="apod$time\.$ext"; print "Saving as $imgfile . \n"; open(OUT, ">$imgfile") or die "Cannot write to file: $!\n"; binmode(OUT); print OUT $picture; close OUT; my $MW=MainWindow->new(-title=>"Astronomy Pic of The Day $titledate"); ### --- Prevents Main Window Resizing $MW->bind('<Configure>' => sub{ my $xe = $MW->XEvent; $MW->maxsize($xe->w, $xe->h); $MW->minsize($xe->w, $xe->h); }); print "generating Tk Window ....\n"; # my $image = $MW->Photo('-format' => 'jpeg', -file=>'apod08222003.jpg +'); #my $image = $MW->Photo('-format' => 'jpeg', -file=>$imgfile); my $image = $MW->Photo('-format' => $fmt, -file=>$imgfile); $MW->Button(-image=>$image, -command => sub { my $dialogA = $MW->DialogBox( -title => "About This Image", -buttons => [ "OK" ], ); $dialogA->add("Label", -borderwidth => '2', -background => "#FAEBD7", #ANTIQUE WHITE -font => 'bold', -justify => 'left', -relief => 'sunken', -text => "This Image is Produced by: N +ASA GSFC,\n and can be found along with other Astronomy Related Image +s here:\nhttp://antwrp.gsfc.nasa.gov/apod/astropix.html")->pack; ### --- Prevents Dialog Box Resizing $dialogA->bind('<Configure>' => sub{ my $xeD = $dialogA->XEvent; $dialogA->maxsize($xeD->w, $xeD->h); $dialogA->minsize($xeD->w, $xeD->h); }); $dialogA->Show; } )->pack; MainLoop(); ## Original Astronomy POD code by OverlordQ 08/22/2003 ## http://www.perlmonks.org/index.pl?node_id=285690 ## Additional Perl/Tk code by: PERLscienceman 08/24/2003 ## Code by PERLscienceman updated 08/26/2003 to compensate for capture + of .gif ## http://www.perlmonks.org/index.pl?node_id=243154

In reply to Perl/Tk --- Astronomy Pic of the Day Grabber by PERLscienceman
in thread Astronomy Pic of the Day Grabber by OverlordQ

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":



  • Are you posting in the right place? Check out Where do I post X? to know for sure.
  • Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
    <code> <a> <b> <big> <blockquote> <br /> <dd> <dl> <dt> <em> <font> <h1> <h2> <h3> <h4> <h5> <h6> <hr /> <i> <li> <nbsp> <ol> <p> <small> <strike> <strong> <sub> <sup> <table> <td> <th> <tr> <tt> <u> <ul>
  • Snippets of code should be wrapped in <code> tags not <pre> tags. In fact, <pre> tags should generally be avoided. If they must be used, extreme care should be taken to ensure that their contents do not have long lines (<70 chars), in order to prevent horizontal scrolling (and possible janitor intervention).
  • Want more info? How to link or How to display code and escape characters are good places to start.
Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others sharing their wisdom with the Monastery: (6)
As of 2024-03-28 22:57 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found