ChromeCast Adhan - Mawaqit Python Wrapper

Skip to content

# ChromeCast Adhan

This python script will allow you to use your chromecast as your personal adhan at home. Download the MawaqitAPI library and run this script. At the bottom of the script you can initialize the mosque id, adhan url and the volumes of each prayer. You can run this on a server or a Raspberry Pi.

    from MawaqitAPI.mawaqit import Mawaqit
    from MawaqitAPI.google import ChromeCast
    from MawaqitAPI.constants import ADHAN_URL
    from dateutil import parser
    import time, threading

    def main(mosque_id, cast_name, fajr_vol, duhur_vol, asr_vol, maghrib_vol, isha_vol, adhan):
        #set the chromecast name
        cast = ChromeCast(cast_name)

        last_update = 0
        prayertimes = {}
        #initialize the mawaqit object

        mawaqitAPI = Mawaqit(mosque_id, new_data=True)
        next_prayer = ""
        data = mawaqitAPI.get_prayer_times()

        while True:

            #get new data at 03:00
            if time.strftime("%H:%M") == "03:00" or time.strftime("%H:%M") == "03:01" or time.strftime("%H:%M") == "02:59" and time.time() - last_update > 60*60:
                data = mawaqitAPI.get_prayer_times()
                print(data)
                last_update = time.time()

            #convert prayer times to seconds

            prayertimes["fajr"] = parser.parse(data["fajr"]).timestamp()
            prayertimes["dhuhr"] = parser.parse(data["dhuhr"]).timestamp()
            prayertimes["asr"] = parser.parse(data["asr"]).timestamp()
            prayertimes["maghrib"] = parser.parse(data["maghrib"]).timestamp()
            prayertimes["isha"] = parser.parse(data["isha"]).timestamp()

            #get the next prayer
            for prayer in prayertimes:
                if time.time() < prayertimes[prayer]:
                    next_prayer = prayer
                    break

            print(next_prayer)
            print(prayertimes[next_prayer])

            #open other thread to print time left
            def print_time_left():
                while True:
                    print("Time left for: " + next_prayer +  ": "+ time.strftime("%H:%M:%S", time.gmtime(prayertimes[next_prayer] - time.time())))
                    time.sleep(1)

            t = threading.Thread(target=print_time_left)
            t.start()

            print("Time left for: " + next_prayer +  ": "+ time.strftime("%H:%M:%S", time.gmtime(prayertimes[next_prayer] - time.time())))
            #sleep until next prayer time
            time.sleep(prayertimes[next_prayer] - time.time())
            #play adhan
            #per prayer volume
            if next_prayer == "fajr":
                cast.set_volume(int(fajr_vol))
            elif next_prayer == "dhuhr":
                cast.set_volume(int(duhur_vol))
            elif next_prayer == "asr":
                cast.set_volume(int(asr_vol))
            elif next_prayer == "maghrib":
                cast.set_volume(int(maghrib_vol))
            elif next_prayer == "isha":
                cast.set_volume(int(isha_vol))

            cast.play(adhan, "audio/mp3")
            time.sleep(5)

    if __name__ == "__main__":
        mosque_id = "essalam-rotterdam"
        cast_name = "Living Room speaker"
        fajr_vol = 0.4
        duhur_vol = 0.4
        asr_vol = 0.4
        maghrib_vol = 0.4
        isha_vol = 0.4
        adhan = ADHAN_URL
        main(mosque_id, cast_name, fajr_vol, duhur_vol, asr_vol, maghrib_vol, isha_vol, adhan)