Kuidas saada Facebooki messengerit ilmast teatamiseks

krediit: https://www.pexels.com/photo/blur-cars-dew-drops-125510/

Täielik DIY juhend oma ilmateate boti ehitamiseks.

Hommikurutiin on alati stressirohke. Kas poleks imeline, kui teil oleks hommikul veel üks mure, mille pärast muretseda?

Mis oleks, kui teil oleks kohandatav ilmateate robot, mis saadab teile AINULT lühisõnumi, kui vihma võimalus võib ületada teie eelnevalt määratletud läve?

Ärge raisake oma aega eraldi rakenduse ilmateate kontrollimisele. Seda saab teha otse oma Facebooki messengeri vestlusboksis!

Mida sul vaja on?

  • Python 3.6 (või vanem), millele on installitud panda ja fbchat paketid
pip install fbchat
AccuWeatheri tasuta konto
  • Arendajakonto AccuWeatheri jaoks peaks tasuta paketist piisama. See pakub 50 kõnet päevas ühe võtme / arendajakontoga.

Alustame!

Selle juhise lõpus on skriptide kaustas 3 faili:

keys.py: oma Facebooki e-posti, parooli ja accuweatheri API-võtme salvestamiseks

params.py: läve ja ilmateate asukoha ID salvestamiseks

main.py: see on põhiskript, see kutsub klahve keys.py ja params.py

1. Seadistage Facebooki konto ja AccuWeatheri API-võti

Esiteks paneme teie konto üksikasjad failisse keys.py.

2. Seadistamise parameetrid

Selles etapis määratleme vihma või lume tõenäosuse läve, viivituse aja iga päringu ja teate vahel ning ka asukoha.

Praegu seadsime künniseks 25% nii vihma kui ka lume jaoks. Hoiatusteate saame ainult siis, kui AccuWeatheri andmed näitavad tõenäosust ≥ 25%.

Allolevad skriptid taotlevad AccuWeatherilt andmeid iga 1 tunni tagant (UPDATE_INTERVAL_HR = 1) ja saadavad teate iga 4 tunni järel (DELAY_TIME_HR = 4).

Need parameetrid salvestatakse params.py faili.

3. Hankige andmed AccuWeatherist

Nüüd tuleb siin lõbus osa. Nüüd töötame põhiskripti kallal.

Kui plaanite seda lokaalselt käivitada, seadistage oma kataloog ja importige võtmed ja parameetrid. Pange võtmed.py ja params.py samasse kausta, kus see main.py skript.

Importige vajalikud moodulid.

Määratlege taotletav URL-leht. Selles näites toome 12-tunnise tunniprognoosi. Teisendage meie värskenduse / viivituse aeg sekundites.

Seejärel taotlege andmeid ja pange pandadesse DataFrame nimega 'json_df'.

Sel hetkel saame allalaaditud tabeli üle vaadata. Ekstraheerige ja nimetage meile vajalikud elemendid ümber. Selles näites vajame AccuWeatheri linki,% vihma,% lund, kuupäeva ja kellaaega soovitud vormingus.

Kui vaatame tähelepanelikult, on veeru 'DateTime' väljavõtmine pisut keeruline ja vajab natuke tööd. Pärast puhastamist salvestage see muutujasse 'current_retrieved_datetime'.

Järgmisena kirjutage hoiatussõnumi kohandamiseks tingimus if-else. Väljavõetud tabel annab meile 12-tunnise prognoosi. Kontrollime nii vihma- kui ka lumesammaste iga elementi ja saadame teate, kui tõenäosus on üle läve.

Esiteks lähtestage iga juhtumi kohta hoiatusteade.

Märkige veerud 'Percent_Rain' ja 'Percent_Snow', märgistage numbriga 1, kui% tõenäosus on üle läve (või 0).

Summeerige veerud ja muutke 'rain_msg' ja 'snow_msg'.

Initsialiseerige „alert_msg”, muutke sõnumeid, kui seal on „rain_msg” või „snow_msg”.

Lisage link muutujale „link_for_click”, see lisatakse sõnumile, kui me selle hiljem saadame.

Kuni selle hetkeni saame nad nüüd funktsiooni mässida. Ära muretse, kui sa eksid, olen need allpool kokku pannud.

4. Automatiseeritud silmus

Viimasena automatiseerime protsessi lõpuks silmuste abil. Allpool olevad skriptid määravad silmuste arvu nii, nagu num_repeat = 999.

Kasutage vigade ületamiseks proovige, välja arvatud juhul, kui ühendustega juhtub midagi valesti). Kutsuge funktsioon func_get_weather ja määrake muutujad.

Seejärel kontrollige, kas ilm on muutunud. Kui midagi pole muutunud, printige teade ekraanile. Ühtegi vestlussõnumit ei saadeta.

Teade saadetakse ainult siis, kui ilm muutub.

Saame oma sõnumi sel hetkel lõpule viia. Tooge oma sõprade kasutajatunnus ja salvestage 'sõbra_loendisse'. Looge sõnum igale sõbrale ükshaaval. Panime uneaja = 2 sekundit iga teate ja väljalogimise vahele pärast lõppu.

Täitke järgmise teate viivituse aeg. Failis params.py on juba määratletud - antud juhul on see 4 tundi. Ja veel üks AccuWeatheri päringu viivitus on 1 tund.

Jällegi, ärge muretsege, kui eksite. Olen allpool kokku pannud kogu silmuse.

Ta-da! Pärast meie rasket tööd on siin lühike pilt sõnumist, mille me saame.

Facebooki vestluskasti sõnum. Asukoha ID selles näites on 135564.

Juhul kui peame üksikasjalikumalt teadma, võime klõpsata sellel lingil otse. See navigeerib AccuWeatheri veebisaidile.

AccuWeatheri link

Selle juhise valmis skript on dokumenteeritud ka GitHubis.

Täname, et lugesite Proovige seda, nautige ja andke mulle tagasisidet!

Kui teile meeldib see, mida tegin, võiksite mind jälgida GitHubis, keskmises ja Twitteris. Tähistage see kindlasti GitHubis tärniga: D