You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
929 B
42 lines
929 B
#!/usr/bin/perl |
|
|
|
# TODO: If gammastep is already running, allow location to update |
|
|
|
use strict; |
|
use warnings; |
|
|
|
use LWP::UserAgent; |
|
use JSON::XS; |
|
|
|
my $location = "https://papillon.john.me.tz/data/location.json"; |
|
my $lat_lon = fetch_lat_lon($location); |
|
|
|
my $pid = fork; |
|
unless ($pid) { |
|
open STDIN, '/dev/null'; |
|
open STDOUT, '>>/dev/null'; |
|
open STDERR, '>>/dev/null'; |
|
|
|
`gammastep -l $lat_lon -b 1:0.7`; |
|
} |
|
|
|
sub fetch_lat_lon |
|
{ |
|
my ($location) = shift; |
|
|
|
my $ua = LWP::UserAgent->new(); |
|
my $json = JSON::XS->new(); |
|
|
|
my $raw = $ua->get($location)->content(); |
|
|
|
if (defined $raw) { |
|
my $decoded = $json->decode($raw); |
|
if (defined $decoded->{lat} && defined $decoded->{lon}) { |
|
return "$decoded->{lat}:$decoded->{lon}"; |
|
} |
|
} |
|
sleep 5; |
|
return fetch_lat_lon($ua, $json, $location); |
|
} |
|
|
|
exit;
|
|
|