Beta_Penguin
Beta_Penguin

Reputation: 73

(Python) Retrieve the sunrise and sunset times from Google

Hello! I recently went to the LACMA museum of art, and stumbled upon this clock. Basically it uses a light sensor to determine the percent of the day that has passed. This means sunrise would be 0.00% and sunset would be 100%. I wanted to create a easier version of this, having a program Google the sunset and sunrise times for the day and work from there. Eventually this would all be transferred to a Raspberry Pi 3 (another problem for another day), therefore the code would have to be in Python. Could I maybe get some help writing it?

TLDR Version

I need a Python program that googles and returns the times of the sunset and sunrise for the day. Mind helping?

Upvotes: 0

Views: 2082

Answers (1)

HexxNine
HexxNine

Reputation: 456

It's not pretty but it should work, just use your coordinates as the parameters.

From their website "NOTE: All times are in UTC and summer time adjustments are not included in the returned data."

import requests
from datetime import datetime
from datetime import timedelta

def get_sunrise_sunset(lat, long):
    link = "http://api.sunrise-sunset.org/json?lat=%f&lng=%f&formatted=0" % (lat, long)
    f = requests.get(link)
    data = f.text
    sunrise = data[34:42]
    sunset = data[71:79]
    print("Sunrise = %s, Sunset = %s" % (sunrise, sunset))

    s1 = sunrise
    s2 = sunset
    FMT = '%H:%M:%S'
    tdelta = datetime.strptime(s2, FMT) - datetime.strptime(s1, FMT)
    daylight = timedelta(days=0,seconds=tdelta.seconds, microseconds=tdelta.microseconds)
    print('Total daylight = %s' % daylight)

    t1 = datetime.strptime(str(daylight), '%H:%M:%S')
    t2 = datetime(1900, 1, 1)
    daylight_as_minutes = (t1 - t2).total_seconds() / 60.0
    print('Daylight in minutes =  %s' % daylight_as_minutes)

    sr1 = datetime.strptime(str(sunrise), '%H:%M:%S')
    sr2 = datetime(1900, 1, 1)
    sunrise_as_minutes = (sr1 - sr2).total_seconds() / 60.0
    print('Sunrise in minutes =  %s' % sunrise_as_minutes)

    ss1 = datetime.strptime(str(sunset), '%H:%M:%S')
    ss2 = datetime(1900, 1, 1)
    sunset_as_minutes = (ss1 - ss2).total_seconds() / 60.0
    print('Sunset in minutes =  %s' % sunset_as_minutes)

if __name__ == '__main__':
    get_sunrise_sunset(42.9633599,-86.6680863)

Upvotes: 1

Related Questions