-
-
Save julianaito/b6fbfbdf308b6d74a7710b54db228e0d to your computer and use it in GitHub Desktop.
Récupère les niveaux de pollens pour un département donné (en France métropolitaine)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env perl | |
# Requiert uniquement Perl (et wget ou curl ou lftp de préférence) | |
# l'aide est en bas, et peut s'afficher via `./pollens -h' | |
use strict; | |
use warnings; | |
use 5.010; | |
use utf8; | |
binmode( STDOUT, ':encoding(UTF-8)' ); | |
use File::Fetch; | |
use JSON::PP; | |
use Term::ANSIColor; | |
use Pod::Usage qw( pod2usage ); | |
my @colors = | |
( 'reset', 'green', 'bold green', 'yellow', 'bold yellow', 'bold red' ); | |
my $base_url = 'https://pollens.fr/risks/thea/counties/'; | |
sub cprint { | |
my ( $pollen, $level ) = @_; | |
print color $colors[$level]; | |
printf "%-12s %d\n", $pollen, $level; | |
print color $colors[0]; | |
} | |
unless ( defined $ARGV[0] and $ARGV[0] =~ /^\d{2}$/ ) { | |
pod2usage( -verbose => 3, -noperldoc => 1 ); | |
exit 1; | |
} | |
my $ff = File::Fetch->new( uri => $base_url . $ARGV[0] ); | |
my $result; | |
$ff->fetch( to => \$result ) or die $ff->error(1); | |
my $json = JSON::PP->new->decode($result); | |
printf "Situation en %s\n\n", $json->{countyName}; | |
cprint "GLOBAL", $json->{riskLevel}; | |
say ""; | |
for ( reverse sort { $a->{level} <=> $b->{level} } @{ $json->{risks} } ) { | |
cprint $_->{pollenName}, $_->{level} if $_->{level}; | |
} | |
__END__ | |
=pod | |
=encoding utf8 | |
=head1 USAGE | |
pollens numéro_département | -h | |
=head1 EXEMPLE | |
pollens 04 | |
=head1 DESCRIPTION | |
Ce programme permet de connaître le risque d'allergies au pollen pour un | |
département métropolitain donné. | |
Le numéro de département doit être préfixé d'un "0" pour les départements | |
inférieurs à 10. | |
Si aucune alerte n'est émise pour un type de pollen, alors il ne sera | |
pas affiché. | |
=head1 ENVIRONNEMENT | |
=over 10 | |
=item ANSI_COLORS_DISABLED | |
Si defini à 1, les couleurs seront désactivées. | |
=back | |
=head1 BUGS | |
Le retour de File::Fetch est pas super informatif - je vous recommande | |
d'avoir lftp(1), wget(1) ou curl(1) installé sur votre système. | |
=cut |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
A noter que j'ai préféré privilégier une approche sans module provenant du CPAN parce que Termux sous Android ne fournit pas de modules et que gérer CPAN sur mon smartphone m'arrange pas.
Si vous voulez faire les choses vraiment bien, il y a LWP::JSON::Tiny.