#!/usr/bin/perl # # A ajouter dans /etc/crontab # 49 2,5,8,11,14,17,20,23 * * * perl /usr/local/bin/clouds.pl #49 2,5,8,11,14,17,20,23 * * * mathieu perl /usr/local/bin/clouds.pl > /home/mathieu/xplanetclouds.log # ------------------------------------------------------------------------------------ # Program for downloading XPlanet cloud images from a random mirror # # Copyright (c) 2003, cueSim Ltd. http://www.cueSim.com, Bedford, UK # # ------------------------------------------------------------------------------------ # # Redistribution and use, with or without modification, are permitted provided # that the following conditions are met: # # * Redistributions of source code must retain the above copyright notice, # this list of conditions and the following disclaimer. # * Neither the cueSim name nor the names of its contributors may # be used to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT # SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT # OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # (2005-06) hacked by mose at nguild.org for personal use on a debian SID # (2008-08) hacked by benhaim_jerome at yahoo.fr for personal use on a ubuntu Hardy use LWP::Simple; # Options: # - ou sauvegarder l'image des nuages (par defaut le répertoire courant) # my $Filename = "/home/mathieu/.xplanet/images/clouds.jpg"; # - fréquences de mise à jour de l'image sur le serveur my $MaxDownloadFrequencyHours = 2; # - Combien d'essais, si le serveur ne répond pas my $MaxRetries = 3; ## Note: excessive requests to a single image server is discouraged. ## This script limits max retries, does not download more frequently ## than every two hours (the file is generated every 3 hours). and ## picks a random mirror location for every download. ## ## Changer les paramètres risque de vous exclure (blacklisted) ## des serveurs d'images if(-f $Filename) { my @Stats = stat($Filename); my $FileAge = (time() - $Stats[9]); my $FileSize = $Stats[7]; if($FileAge < 60 * 60 * $MaxDownloadFrequencyHours && $FileSize > 400000) { print "File is already up to date\n"; exit(1); } } for(1..$MaxRetries) { my $MirrorURL = GetRandomMirror(); print "Using $MirrorURL\nDownloading...\n"; my $Response = getstore($MirrorURL, $Filename); if( IndicatesSuccess($Response)) { print "Finished: file successfully downloaded to $Filename\n"; exit(0); } print "Download not available, trying another website\n\n"; } print "ERROR: Tried to download the file $MaxRetries times, but no servers could provide the file\n"; exit(2); sub IndicatesSuccess() { my $Response = shift(); if($Response =~ /2\d\d/) { return(1); } else { return(0); } } ## Liste des serveurs miroir sub GetRandomMirror() { my @Mirrors = ( "http://xplanet.arculeo.com/clouds_2048.jpg", "http://xplanet.sourceforge.net/clouds/clouds_2048.jpg", "http://www.ruwenzori.net/earth/clouds_2048.jpg", "http://xplanet.dyndns.org/clouds/clouds_2048.jpg", "http://userpage.fu-berlin.de/~jml/clouds_2048.jpg", "http://userpage.fu-berlin.de/~jml/clouds_4096.jpg", "http://php.nctu.edu.tw/~ijliao/clouds_2048.jpg", "http://home.megapass.co.kr/~gitto88/cloud_data/clouds_2048.jpg", "http://home.megapass.co.kr/~holywatr/cloud_data/clouds_2048.jpg", "ftp://ftp.iastate.edu/pub/xplanet/clouds_2048.jpg", "http://xplanet.explore-the-world.net/clouds_2048.jpg", "ftp://mirror.pacific.net.au/xplanet/clouds_2048.jpg", "http://www.narrabri.atnf.csiro.au/operations/NASA/clouds_2048.jpg", ); return $Mirrors[rand scalar(@Mirrors)]; }