From 4a4f77bce87f89fdd43619582cb21d7805e30266 Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Mon, 25 Jun 2018 22:06:27 +0200 Subject: Initial commit --- bin/is_nighttime | 93 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100755 bin/is_nighttime diff --git a/bin/is_nighttime b/bin/is_nighttime new file mode 100755 index 0000000..a4da308 --- /dev/null +++ b/bin/is_nighttime @@ -0,0 +1,93 @@ +#!/usr/bin/env perl + +use strict; +use warnings; +use 5.010; + +use Astro::Sunrise; +use DateTime; +use DateTime::Duration; +use Getopt::Std; + +our $VERSION = '0.0'; + +my %opts; +getopts( 'd:ov', \%opts ); + +my $now = DateTime->now( time_zone => 'Europe/Berlin' ); +my $delta = DateTime::Duration->new( minutes => $opts{d} || 0 ); + +my ( $rise_str, $set_str ) + = sunrise( $now->year, $now->month, $now->day, 6.47, 51.14, + $now->offset / 3600, + 0 ); + +my ( $rise_h, $rise_m ) = ( $rise_str =~ m{(..):(..)} ); +my ( $set_h, $set_m ) = ( $set_str =~ m{(..):(..)} ); + +my $sunrise = $now->clone->set( + hour => $rise_h, + minute => $rise_m, +); + +my $sunset = $now->clone->set( + hour => $set_h, + minute => $set_m, +); + +$sunrise->add_duration($delta); +$sunset->subtract_duration($delta); + +if ( $opts{v} ) { + say 'rise at ' . $sunrise->hms; + say 'now is ' . $now->hms; + say 'set at ' . $sunset->hms; +} + +if ( $opts{o} ) { + say( ( $now < $sunrise or $now > $sunset ) ? '1' : '0' ); + exit 0; +} + +if ( $now < $sunrise or $now > $sunset ) { + exit 0; +} +exit 1; + +__END__ + +=head1 NAME + +=head1 SYNOPSIS + +=head1 VERSION + +=head1 DESCRIPTION + +=head1 OPTIONS + +=over + +=back + +=head1 EXIT STATUS + +=head1 CONFIGURATION + +None. + +=head1 DEPENDENCIES + +=over + +=back + +=head1 BUGS AND LIMITATIONS + +=head1 AUTHOR + +Copyright (C) 2012 by Daniel Friesel Ederf@finalrewind.orgE + +=head1 LICENSE + + 0. You just DO WHAT THE FUCK YOU WANT TO. -- cgit v1.2.3