เชนเชตเชพเชฎเชพเชจเชจเซ€ เชธเซŒเชฅเซ€ เชธเชšเซ‹เชŸ เช†เช—เชพเชนเซ€: เช•เซเชฒเชพเช‰เชก เชซเช‚เช•เซเชถเชจ เชชเชฐ เชŸเซ‡เชฒเชฟเช—เซเชฐเชพเชฎ เชฎเชพเชŸเซ‡ เชฌเซ‹เชŸ

เชนเชตเชพเชฎเชพเชจเชจเซ€ เชธเซŒเชฅเซ€ เชธเชšเซ‹เชŸ เช†เช—เชพเชนเซ€: เช•เซเชฒเชพเช‰เชก เชซเช‚เช•เซเชถเชจ เชชเชฐ เชŸเซ‡เชฒเชฟเช—เซเชฐเชพเชฎ เชฎเชพเชŸเซ‡ เชฌเซ‹เชŸ
เชนเชตเชพเชฎเชพเชจเชจเซ€ เชฎเชพเชนเชฟเชคเซ€ เชชเซ‚เชฐเซ€ เชชเชพเชกเชคเซ€ เช˜เชฃเซ€ เชฌเชงเซ€ เชธเซ‡เชตเชพเช“ เช›เซ‡, เชชเชฐเช‚เชคเซ เชคเชฎเชพเชฐเซ‡ เช•เซ‹เชจเซ€ เชชเชฐ เชตเชฟเชถเซเชตเชพเชธ เช•เชฐเชตเซ‹ เชœเซ‹เชˆเช? เชœเซเชฏเชพเชฐเซ‡ เชฎเซ‡เช‚ เชตเชพเชฐเช‚เชตเชพเชฐ เชธเชพเชฏเช•เชฒ เชšเชฒเชพเชตเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซเชฏเซเช‚, เชคเซเชฏเชพเชฐเซ‡ เชนเซเช‚ เชœเซเชฏเชพเช‚ เชธเชตเชพเชฐเซ€ เช•เชฐเซเช‚ เช›เซเช‚ เชคเซเชฏเชพเช‚เชจเชพ เชนเชตเชพเชฎเชพเชจเชจเซ€ เชธเซเชฅเชฟเชคเชฟ เชตเชฟเชถเซ‡ เชธเซŒเชฅเซ€ เชธเชšเซ‹เชŸ เชฎเชพเชนเชฟเชคเซ€ เชฎเซ‡เชณเชตเชตเชพ เชฎเชพเช‚เช—เชคเซ‹ เชนเชคเซ‹.

เชฎเชพเชฐเซ‹ เชชเชนเซ‡เชฒเซ‹ เชตเชฟเชšเชพเชฐ เชธเซ‡เชจเซเชธเชฐ เชธเชพเชฅเซ‡ เชเช• เชจเชพเชจเซเช‚ DIY เชตเซ‡เชงเชฐ เชธเซเชŸเซ‡เชถเชจ เชฌเชจเชพเชตเชตเชพเชจเซเช‚ เช…เชจเซ‡ เชคเซ‡เชฎเชพเช‚เชฅเซ€ เชกเซ‡เชŸเชพ เชชเซเชฐเชพเชชเซเชค เช•เชฐเชตเชพเชจเซเช‚ เชนเชคเซเช‚. เชชเชฐเช‚เชคเซ เชฎเซ‡เช‚ "เชตเซเชนเซ€เชฒเชจเซ‡ เชซเชฐเซ€เชฅเซ€ เชถเซ‹เชงเซเชฏเซเช‚" เชจเชฅเซ€ เช…เชจเซ‡ เชนเชตเชพเชฎเชพเชจ เชฎเชพเชนเชฟเชคเซ€ เชชเชธเช‚เชฆ เช•เชฐเซ€ เช›เซ‡ เชœเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชจเชพเช—เชฐเชฟเช• เช‰เชกเซเชกเชฏเชจเชฎเชพเช‚ เชšเช•เชพเชธเชพเชฏเซ‡เชฒ เชกเซ‡เชŸเชพเชจเชพ เชธเซเชคเซเชฐเซ‹เชค เชคเชฐเซ€เช•เซ‡ เชฅเชพเชฏ เช›เซ‡, เชเชŸเชฒเซ‡ เช•เซ‡ เชฎเซ‡เชŸเชฐ (Meteorological Aerodrome Report) เช…เชจเซ‡ taf (TAF - เชŸเชฐเซเชฎเชฟเชจเชฒ เชเชฐเซ‹เชกเซเชฐเซ‹เชฎ เชซเซ‹เชฐเช•เชพเชธเซเชŸ). เช‰เชกเซเชกเชฏเชจเชฎเชพเช‚, เชธเซ‡เช‚เช•เชกเซ‹ เชฒเซ‹เช•เซ‹เชจเซเช‚ เชœเซ€เชตเชจ เชนเชตเชพเชฎเชพเชจ เชชเชฐ เช†เชงเชพเชฐเชฟเชค เช›เซ‡, เชคเซ‡เชฅเซ€ เช†เช—เชพเชนเซ€ เชถเช•เซเชฏ เชคเซ‡เชŸเชฒเซ€ เชธเชšเซ‹เชŸ เช›เซ‡.

เช† เชฎเชพเชนเชฟเชคเซ€ เชซเซ‹เชฐเซเชฎเชฎเชพเช‚ เชฆเชฐเซ‡เช• เช†เชงเซเชจเชฟเช• เชเชฐเชซเชฟเชฒเซเชก เชชเชฐ เช…เชตเชพเชœ เชฆเซเชตเชพเชฐเชพ XNUMX/XNUMX เชชเซเชฐเชธเชพเชฐเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เชเชŸเซ€เช†เชˆเชเชธ (เช“เชŸเซ‹เชฎเซ‡เชŸเชฟเช• เชŸเชฐเซเชฎเชฟเชจเชฒ เช‡เชจเซเชซเซ‹เชฐเซเชฎเซ‡เชถเชจ เชธเชฐเซเชตเชฟเชธ) เช…เชจเซ‡ เชตเซ‹เชฒเซเชฎเซ‡เชŸ (เชซเซเชฐเซ‡เชจเซเชšเชฎเชพเช‚เชฅเซ€. เชตเซ‹เชฒเซเชฏเซเชฎ - เชซเซเชฒเชพเช‡เชŸ เช…เชจเซ‡ meteo - เชนเชตเชพเชฎเชพเชจ). เชชเซเชฐเชฅเชฎ เชเชฐเชซเชฟเชฒเซเชก เชชเชฐ เชตเชพเชธเซเชคเชตเชฟเช• เชนเชตเชพเชฎเชพเชจ เชตเชฟเชถเซ‡เชจเซ€ เชฎเชพเชนเชฟเชคเซ€ เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‡ เช›เซ‡, เช…เชจเซ‡ เชฌเซ€เชœเซเช‚ เชฎเชพเชคเซเชฐ เชชเซเชฐเชธเชพเชฐเชฃ เชเชฐเชซเชฟเชฒเซเชก เชชเชฐ เชœ เชจเชนเซ€เช‚, เชชเชฃ เช…เชจเซเชฏ เชชเชฐ เชชเชฃ เช†เช—เชพเชฎเซ€ 24-30 เช•เชฒเชพเช• เชฎเชพเชŸเซ‡ เช†เช—เชพเชนเซ€ เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‡ เช›เซ‡.

เชตเชจเซเช•เซ‹เชตเซ‹ เชเชฐเชชเซ‹เชฐเซเชŸ เชชเชฐ ATIS เช“เชชเชฐเซ‡เชถเชจเชจเซเช‚ เช‰เชฆเชพเชนเชฐเชฃ:

เชตเชจเซเช•เซ‹เชตเซ‹ เชเชฐเชชเซ‹เชฐเซเชŸ เชชเชฐ VOLMET เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชพเชฐเซเชฏ เช•เชฐเซ‡ เช›เซ‡ เชคเซ‡เชจเซเช‚ เช‰เชฆเชพเชนเชฐเชฃ

เช…เชจเซเชฐเซ‚เชช เชถเซเชฐเซ‡เชฃเซ€ เชฎเชพเชŸเซ‡ เชฆเชฐ เชตเช–เชคเซ‡ เชคเชฎเชพเชฐเซ€ เชธเชพเชฅเซ‡ เชฐเซ‡เชกเชฟเชฏเซ‹ เชธเซเช•เซ‡เชจเชฐ เช…เชฅเชตเชพ เชŸเซเชฐเชพเชจเซเชธเชธเซ€เชตเชฐ เชฐเชพเช–เชตเซเช‚ เช…เชธเซเชตเชฟเชงเชพเชœเชจเช• เช›เซ‡, เช…เชจเซ‡ เชนเซเช‚ เชŸเซ‡เชฒเชฟเช—เซเชฐเชพเชฎเชฎเชพเช‚ เชเช• เชฌเซ‹เชŸ เชฌเชจเชพเชตเชตเชพ เชฎเชพเช‚เช—เชคเซ‹ เชนเชคเซ‹ เชœเซ‡, เชเช• เชฌเชŸเชจเชจเชพ เช•เซเชฒเชฟเช• เชชเชฐ, เชคเชฎเชจเซ‡ เชธเชฎเชพเชจ เช†เช—เชพเชนเซ€ เชฎเซ‡เชณเชตเชตเชพ เชฎเชพเชŸเซ‡ เชชเชฐเชตเชพเชจเช—เซ€ เช†เชชเซ‡ เช›เซ‡. เช† เชฎเชพเชŸเซ‡ เชเช• เช…เชฒเช— เชธเชฐเซเชตเชฐ เชซเชพเชณเชตเชตเชพเชจเซเช‚ เช“เช›เชพเชฎเชพเช‚ เช“เช›เซเช‚ เช…เชตเซเชฏเชตเชนเชพเชฐเซ เช›เซ‡, เชคเซ‡เชฎเชœ เชคเชฎเชพเชฐเชพ เช˜เชฐ เชฐเชพเชธเซเชชเชฌเซ‡เชฐเซ€เชจเซ‡ เชตเชฟเชจเช‚เชคเซ€เช“ เชฎเซ‹เช•เชฒเชตเซ€.

เชคเซ‡เชฅเซ€, เชฎเซ‡เช‚ เชธเซ‡เชตเชพเชจเซ‹ เชฌเซ‡เช•เชเชจเซเชก เชคเชฐเซ€เช•เซ‡ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซเช‚ เชจเช•เซเช•เซ€ เช•เชฐเซเชฏเซเช‚ เชธเชฟเชฒเซ‡เช•เซเชŸเซ‡เชฒ เช•เซเชฒเชพเช‰เชก เชธเซเชตเชฟเชงเชพเช“. เชตเชฟเชจเช‚เชคเซ€เช“เชจเซ€ เชธเช‚เช–เซเชฏเชพ เชจเชนเชฟเชตเชคเซ เชนเชถเซ‡, เชคเซ‡เชฅเซ€ เช†เชตเซ€ เชธเซ‡เชตเชพ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฐเซ€เชคเซ‡ เชฎเชซเชค เชนเชถเซ‡ (เชฎเชพเชฐเซ€ เช—เชฃเชคเชฐเซ€ เชฎเซเชœเชฌ, เชคเซ‡ 22 เชตเชฟเชจเช‚เชคเซ€เช“ เชฎเชพเชŸเซ‡ 100 เชฐเซเชฌเซ‡เชฒเซเชธ เชนเชถเซ‡).

เชฌเซ‡เช•เชเชจเซเชก เชคเซˆเชฏเชพเชฐเซ€

เชเช• เช•เชพเชฐเซเชฏ เชฌเชจเชพเชตเซ‹

เชจเชฟเชฏเช‚เชคเซเชฐเชฃ เชชเซ‡เชจเชฒเชฎเชพเช‚ my.selectel.ru เชฆเซƒเชถเซเชฏ เช–เซ‹เชฒเซ‹ เช•เซเชฒเชพเช‰เชก เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎ เช…เชจเซ‡ เชจเชตเซ‹ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชฌเชจเชพเชตเซ‹:

เชนเชตเชพเชฎเชพเชจเชจเซ€ เชธเซŒเชฅเซ€ เชธเชšเซ‹เชŸ เช†เช—เชพเชนเซ€: เช•เซเชฒเชพเช‰เชก เชซเช‚เช•เซเชถเชจ เชชเชฐ เชŸเซ‡เชฒเชฟเช—เซเชฐเชพเชฎ เชฎเชพเชŸเซ‡ เชฌเซ‹เชŸ
เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชฌเชจเชพเชตเซเชฏเชพ เชชเช›เซ€, เชตเชฟเชญเชพเช— เชชเชฐ เชœเชพเช“ เช•เชพเชฐเซเชฏเซ‹:

เชนเชตเชพเชฎเชพเชจเชจเซ€ เชธเซŒเชฅเซ€ เชธเชšเซ‹เชŸ เช†เช—เชพเชนเซ€: เช•เซเชฒเชพเช‰เชก เชซเช‚เช•เซเชถเชจ เชชเชฐ เชŸเซ‡เชฒเชฟเช—เซเชฐเชพเชฎ เชฎเชพเชŸเซ‡ เชฌเซ‹เชŸ
เชฌเชŸเชจเชจเซ‡ เชฆเชฌเชพเชฃ เช•เชฐเซ‹ เชเช• เช•เชพเชฐเซเชฏ เชฌเชจเชพเชตเซ‹ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เช‡เชšเซเช›เชฟเชค เชจเชพเชฎ เช†เชชเซ‹:

เชนเชตเชพเชฎเชพเชจเชจเซ€ เชธเซŒเชฅเซ€ เชธเชšเซ‹เชŸ เช†เช—เชพเชนเซ€: เช•เซเชฒเชพเช‰เชก เชซเช‚เช•เซเชถเชจ เชชเชฐ เชŸเซ‡เชฒเชฟเช—เซเชฐเชพเชฎ เชฎเชพเชŸเซ‡ เชฌเซ‹เชŸ
เชฆเชฌเชพเชตเซเชฏเชพ เชชเช›เซ€ เชเช• เช•เชพเชฐเซเชฏ เชฌเชจเชพเชตเซ‹ เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชฌเชจเชพเชตเซ‡เชฒ เช•เชพเชฐเซเชฏเชจเซเช‚ เชชเซเชฐเชคเชฟเชจเชฟเชงเชฟเชคเซเชต เชนเชถเซ‡:

เชนเชตเชพเชฎเชพเชจเชจเซ€ เชธเซŒเชฅเซ€ เชธเชšเซ‹เชŸ เช†เช—เชพเชนเซ€: เช•เซเชฒเชพเช‰เชก เชซเช‚เช•เซเชถเชจ เชชเชฐ เชŸเซ‡เชฒเชฟเช—เซเชฐเชพเชฎ เชฎเชพเชŸเซ‡ เชฌเซ‹เชŸ
เชคเชฎเซ‡ เชชเชพเชฏเชฅเซ‹เชจเชฎเชพเช‚ เช•เซ‹เชก เชฌเชจเชพเชตเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซ‹ เชคเซ‡ เชชเชนเซ‡เชฒเชพเช‚, เชคเชฎเชพเชฐเซ‡ เชŸเซ‡เชฒเชฟเช—เซเชฐเชพเชฎเชฎเชพเช‚ เชฌเซ‹เชŸ เชฌเชจเชพเชตเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเชถเซ‡. เช† เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฅเชพเชฏ เช›เซ‡ เชคเซ‡เชจเซเช‚ เชนเซเช‚ เชตเชฐเซเชฃเชจ เช•เชฐเซ€เชถ เชจเชนเซ€เช‚ - เชตเชฟเช—เชคเชตเชพเชฐ เชธเซ‚เชšเชจเชพเช“ เช›เซ‡ เช…เชฎเชพเชฐเชพ เชœเซเชžเชพเชจ เช†เชงเชพเชฐเชฎเชพเช‚. เช…เชฎเชพเชฐเชพ เชฎเชพเชŸเซ‡ เชฎเซเช–เซเชฏ เชตเชธเซเชคเซ เช เชฌเชจเชพเชตเซ‡เชฒ เชฌเซ‹เชŸเชจเซเช‚ เชŸเซ‹เช•เชจ เช›เซ‡.

เช•เซ‹เชก เชคเซˆเชฏเชพเชฐ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช

เชฎเซ‡เช‚ เชตเชฟเชถเซเชตเชธเชจเซ€เชฏ เชกเซ‡เชŸเชพเชจเชพ เชธเซเชคเซเชฐเซ‹เชค เชคเชฐเซ€เช•เซ‡ เชจเซ‡เชถเชจเชฒ เช“เชธเซ‡เชจเชฟเช• เชเชจเซเชก เชเชŸเชฎเซ‹เชธเซเชซเซ‡เชฐเชฟเช• เชเชกเชฎเชฟเชจเชฟเชธเซเชŸเซเชฐเซ‡เชถเชจ (NOAA) เชชเชธเช‚เชฆ เช•เชฐเซเชฏเซเช‚ เช›เซ‡. เช† เชตเซˆเชœเซเชžเชพเชจเชฟเช• เชเชœเชจเซเชธเซ€ TXT เชซเซ‹เชฐเซเชฎเซ‡เชŸเชฎเชพเช‚ เชคเซ‡เชจเชพ เชธเชฐเซเชตเชฐ เชชเชฐ เชฐเซ€เช…เชฒ เชŸเชพเช‡เชฎเชฎเชพเช‚ เชกเซ‡เชŸเชพ เช…เชชเชกเซ‡เชŸ เช•เชฐเซ‡ เช›เซ‡.

METAR เชกเซ‡เชŸเชพ เชฎเซ‡เชณเชตเชตเชพ เชฎเชพเชŸเซ‡เชจเซ€ เชฒเชฟเช‚เช• (เช•เซ‡เชธเชจเซ€ เชจเซ‹เช‚เชง เชฒเซ‹):

https://tgftp.nws.noaa.gov/data/observations/metar/stations/<ะบะพะด ะฐัั€ะพะฟะพั€ั‚ะฐ ะฟะพ ICAO>.TXT

เชฎเชพเชฐเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เชจเชœเซ€เช•เชจเซเช‚ เชเชฐเชชเซ‹เชฐเซเชŸ Vnukovo เช›เซ‡, เชคเซ‡เชจเซ‹ ICAO เช•เซ‹เชก เช›เซ‡ UUWW. เชœเชจเชฐเซ‡เชŸ เช•เชฐเซ‡เชฒ URL เชชเชฐ เชœเชตเชพเชฅเซ€ เชจเซ€เชšเซ‡เชจเซ€ เชฌเชพเชฌเชคเซ‹ เชฎเชณเชถเซ‡:

2020/08/10 11:30
UUWW 101130Z 31004MPS 9999 SCT048 24/13 Q1014 R01/000070 NOSIG

เชชเซเชฐเชฅเชฎ เชฒเซ€เชŸเซ€ เช เช—เซเชฐเซ€เชจเชตเชฟเชš เชฎเซ€เชจ เชŸเชพเช‡เชฎเชฎเชพเช‚ เช†เช—เชพเชนเซ€เชจเซ‹ เชตเชฐเซเชคเชฎเชพเชจ เชธเชฎเชฏ เช›เซ‡. เชฌเซ€เชœเซ€ เชฒเชพเช‡เชจ เชตเชพเชธเซเชคเชตเชฟเช• เชนเชตเชพเชฎเชพเชจเชจเซ‹ เชธเชพเชฐเชพเช‚เชถ เช›เซ‡. เชจเชพเช—เชฐเชฟเช• เช‰เชกเซเชกเชฏเชจ เชชเชพเช‡เชฒเซ‹เชŸเซเชธเชจเซ‡ เช† เชฒเชพเช‡เชจเชจเซ‹ เช…เชฐเซเชฅ เชถเซเช‚ เช›เซ‡ เชคเซ‡ เชธเชฎเชœเชตเชพเชฎเชพเช‚ เช•เซ‹เชˆ เชธเชฎเชธเซเชฏเชพ เชจเชนเซ€เช‚ เชนเซ‹เชฏ, เชชเชฐเช‚เชคเซ เช…เชฎเชจเซ‡ เชธเชฎเชœเซ‚เชคเซ€เชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡:

  • [UUWW] - เชตเชจเซเช•เซ‹เชตเซ‹, เชฎเซ‹เชธเซเช•เซ‹ (เชฐเชถเชฟเชฏเชพ - เช†เชฐเชฏเซ);
  • [101130Z] โ€” เชฎเชนเชฟเชจเชพเชจเซ‹ 10เชฎเซ‹ เชฆเชฟเชตเชธ, 11:30 am GMT;
  • [31004MPS] - เชชเชตเชจเชจเซ€ เชฆเชฟเชถเชพ 310 เชกเชฟเช—เซเชฐเซ€, เชเชกเชช 4 m/s;
  • [9999] - เช†เชกเซ€ เชฆเซƒเชถเซเชฏเชคเชพ 10 เช•เชฟเชฎเซ€ เช…เชฅเชตเชพ เชตเชงเซ;
  • [SCT048] - 4800 เชซเซ‚เชŸ (~1584m) เชชเชฐ เช›เซ‚เชŸเชพเช›เชตเชพเชฏเชพ/เชตเชฟเช–เซ‡เชฐเชพเชฏเซ‡เชฒเชพ เชตเชพเชฆเชณเซ‹;
  • [เซง/เซจ] - เชคเชพเชชเชฎเชพเชจ 24ยฐC, เชเชพเช•เชณ เชฌเชฟเช‚เชฆเซ 13ยฐC;
  • [เชชเซเชฐ 1014] โ€” เชฆเชฌเชพเชฃ (QNH) 1014 เชนเซ‡เช•เซเชŸเซ‹เชชเชพเชธเซเช•เชฒเซเชธ (750 mm Hg);
  • [R01/000070] โ€” เชฒเซ‡เชจ 01 เชชเชฐ เชธเช‚เชฒเช—เซเชจเชคเชพเชจเชพ เช—เซเชฃเชพเช‚เช• โ€” 0,70;
  • [NOSIG] - เชจเซ‹เช‚เชงเชชเชพเชคเซเชฐ เชซเซ‡เชฐเชซเชพเชฐเซ‹ เชตเชฟเชจเชพ.

เชšเชพเชฒเซ‹ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เช•เซ‹เชก เชฒเช–เชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซ€เช. เชชเซเชฐเชฅเชฎ เชคเชฎเชพเชฐเซ‡ เช•เชพเชฐเซเชฏเซ‹ เช†เชฏเชพเชค เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เชตเชฟเชจเช‚เชคเซ€ ะธ pytaf:

from urllib import request
import pytaf

เชšเชฒเซ‹เชจเซ‹ เช‰เชฒเซเชฒเซ‡เช– เช•เชฐเซ‹ เช…เชจเซ‡ เชกเซ€เช•เซ‹เชกเชฟเช‚เช— เช•เชพเชฐเซเชฏ เชคเซˆเชฏเชพเชฐ เช•เชฐเซ‹:

URL_METAR = "https://tgftp.nws.noaa.gov/data/observations/metar/stations/UUWW.TXT"
URL_TAF = "https://tgftp.nws.noaa.gov/data/forecasts/taf/stations/UUWW.TXT"

def parse_data(code):
    code = code.split('n')[1]
    return pytaf.Decoder(pytaf.TAF(code)).decode_taf()

เชšเชพเชฒเซ‹ TAF เชคเชฐเชซ เช†เช—เชณ เชตเชงเซ€เช (เช•เซ‡เชธ เชชเชฃ เชฎเชนเชคเซเชตเชชเซ‚เชฐเซเชฃ เช›เซ‡).

https://tgftp.nws.noaa.gov/data/forecasts/taf/stations/<ะบะพะด ะฐัั€ะพะฟะพั€ั‚ะฐ ะฟะพ ICAO>.TXT

เช…เช—เชพเช‰เชจเชพ เช‰เชฆเชพเชนเชฐเชฃเชจเซ€ เชœเซ‡เชฎ, เชšเชพเชฒเซ‹ เชตเชจเซเช•เซ‹เชตเซ‹ เชเชฐเชชเซ‹เชฐเซเชŸ เชชเชฐเชจเซ€ เช†เช—เชพเชนเซ€ เชœเซ‹เชˆเช:

2020/08/10 12:21
TAF UUWW 101050Z 1012/1112 28003G10MPS 9999 SCT030 TX25/1012Z TN15/1103Z 
      TEMPO 1012/1020 -TSRA BKN020CB 
      BECMG 1020/1021 FEW007 BKN016 
      TEMPO 1021/1106 -SHRA BKN020CB PROB40 
      TEMPO 1021/1106 -TSRA BKN020CB 
      BECMG 1101/1103 34006G13MPS

เชšเชพเชฒเซ‹ เช†เชชเชฃเซ‡ เช–เชพเชธ เช•เชฐเซ€เชจเซ‡ เชฒเซ€เชŸเซ€เช“ เชชเชฐ เชงเซเชฏเชพเชจ เช†เชชเซ€เช เชŸเซ‡เชฎเซเชชเซ‹ ะธ BECMG. TEMPO เชจเซ‹ เช…เชฐเซเชฅ เช›เซ‡ เช•เซ‡ เชšเซ‹เช•เซเช•เชธ เชธเชฎเชฏเช—เชพเชณเชพ เชฆเชฐเชฎเชฟเชฏเชพเชจ เชตเชพเชธเซเชคเชตเชฟเช• เชนเชตเชพเชฎเชพเชจ เชธเชฎเชฏเชพเช‚เชคเชฐเซ‡ เชฌเชฆเชฒเชพเชถเซ‡. BECMG - เชšเซ‹เช•เซเช•เชธ เชธเชฎเชฏเช—เชพเชณเชพเชฎเชพเช‚ เชนเชตเชพเชฎเชพเชจ เชงเซ€เชฎเซ‡ เชงเซ€เชฎเซ‡ เชฌเชฆเชฒเชพเชถเซ‡.

เชเชŸเชฒเซ‡ เช•เซ‡, เชฒเซ€เชŸเซ€:

TEMPO 1012/1020 -TSRA BKN020CB

เช…เชฐเซเชฅ เชฅเชถเซ‡:

  • [เซง/เซจ] - 12 เชฅเซ€ 20 เช•เชฒเชพเช•เชจเซ€ เชตเชšเซเชšเซ‡ (เช—เซเชฐเซ€เชจเชตเชฟเชš เชฎเซ€เชจ เชŸเชพเชˆเชฎ);
  • [-TSRA] โ€” เชตเชพเชตเชพเชเซ‹เชกเซเช‚ (TS = เชตเชพเชตเชพเชเซ‹เชกเซเช‚) เชตเชฐเชธเชพเชฆ เชธเชพเชฅเซ‡ (RA = เชตเชฐเชธเชพเชฆ) เช“เช›เซ€ เชคเซ€เชตเซเชฐเชคเชพ (เชฎเชพเชˆเชจเชธ เชšเชฟเชนเซเชจ);
  • [BKN020CB] - เชจเซ‹เช‚เชงเชชเชพเชคเซเชฐ (BKN = เชคเซ‚เชŸเซ‡เชฒเชพ), cumulonimbus (CB = cumulonimbus) เชธเชฎเซเชฆเซเชฐ เชธเชชเชพเชŸเซ€เชฅเซ€ 2000 เชซเซ€เชŸ (610 เชฎเซ€เชŸเชฐ) เชชเชฐ เชตเชพเชฆเชณเซ‹.

เชนเชตเชพเชฎเชพเชจเชจเซ€ เช˜เชŸเชจเชพเช“ เชฎเชพเชŸเซ‡ เช˜เชฃเซ€ เชฌเชงเซ€ เชถเชฐเชคเซ‹ เช›เซ‡, เช…เชจเซ‡ เชคเซ‡เชฎเชจเซ‡ เชฏเชพเชฆ เชฐเชพเช–เชตเซเช‚ เชฎเซเชถเซเช•เซ‡เชฒ เช›เซ‡. TAF เชตเชฟเชจเช‚เชคเซ€ เชฎเชพเชŸเซ‡ เช•เซ‹เชก เชธเชฎเชพเชจ เชฐเซ€เชคเซ‡ เชฒเช–เชพเชฏเซ‡เชฒ เช›เซ‡.

เชฎเซ‡เช˜ เชชเชฐ เช•เซ‹เชก เช…เชชเชฒเซ‹เชก เช•เชฐเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡

เชธเชฎเชฏ เชจ เชฌเช—เชพเชกเชตเชพ เชฎเชพเชŸเซ‡, เชšเชพเชฒเซ‹ เช…เชฎเชพเชฐเชพ เชญเช‚เชกเชพเชฐเชฎเชพเช‚เชฅเซ€ เชŸเซ‡เชฒเชฟเช—เซเชฐเชพเชฎ เชฌเซ‹เชŸ เชŸเซ‡เชฎเซเชชเชฒเซ‡เชŸ เชฒเชˆเช เช•เซเชฒเชพเช‰เชก-เชŸเซ‡เชฒเชฟเช—เซเชฐเชพเชฎ-เชฌเซ‹เชŸ. เชคเซเชฏเชพเช‚ เชเช• เชชเซ‚เชฐเซเชต เชคเซˆเชฏเชพเชฐเซ€ เช›เซ‡ เชœเชฐเซ‚เชฐเซ€เชฏเชพเชคเซ‹. txt ะธ setup.py เชฏเซ‹เช—เซเชฏ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€ เชฎเชพเชณเช–เซเช‚ เชธเชพเชฅเซ‡.

เช•เซ‹เชกเชฎเชพเช‚ เชนเซ‹เชตเชพเชฅเซ€ เช†เชชเชฃเซ‡ เชฎเซ‹เชกเซเชฏเซเชฒ เชเช•เซเชธเซ‡เชธ เช•เชฐเซ€เชถเซเช‚ pytaf, เชชเช›เซ€ เชคเซ‡เชจเซเช‚ เชธเช‚เชธเซเช•เชฐเชฃ เชคเชฐเชค เชœ เช‰เชฎเซ‡เชฐเชตเซเช‚ เชœเซ‹เชˆเช เชœเชฐเซ‚เชฐเซ€เชฏเชพเชคเซ‹. txt

pytaf~=1.2.1

  • เชšเชพเชฒเซ‹ เชธเช‚เชชเชพเชฆเชจ เชคเชฐเชซ เช†เช—เชณ เชตเชงเซ€เช bot/tele_bot.py. เช…เชฎเซ‡ เชฌเชงเซ€ เชฌเชฟเชจเชœเชฐเซ‚เชฐเซ€ เชตเชธเซเชคเซเช“ เชฆเซ‚เชฐ เช•เชฐเซ€เช เช›เซ€เช เช…เชจเซ‡ เช…เชฎเชพเชฐเซ‹ เช•เซ‹เชก เช‰เชฎเซ‡เชฐเซ€เช เช›เซ€เช.

import os
from urllib import request
import telebot
import pytaf
 
TOKEN = os.environ.get('TOKEN')
URL_METAR = "https://tgftp.nws.noaa.gov/data/observations/metar/stations/UUWW.TXT"
URL_TAF = "https://tgftp.nws.noaa.gov/data/forecasts/taf/stations/UUWW.TXT"
 
bot = telebot.TeleBot(token=TOKEN, threaded=False)
keyboard = telebot.types.ReplyKeyboardMarkup(resize_keyboard=True)
keyboard.row('/start', '/get_metar', '/get_taf')
 
def start(message):
    msg = "ะŸั€ะธะฒะตั‚. ะญั‚ะพ ะฑะพั‚ ะดะปั ะฟะพะปัƒั‡ะตะฝะธั ะฐะฒะธะฐั†ะธะพะฝะฝะพะณะพ ะฟั€ะพะณะฝะพะทะฐ ะฟะพะณะพะดั‹ " 
          "ั ัะตั€ะฒะตั€ะพะฒ NOAA. ะ‘ะพั‚ ะฝะฐัั‚ั€ะพะตะฝ ะฝะฐ ะฐัั€ะพะฟะพั€ั‚ ะ’ะฝัƒะบะพะฒะพ (UUWW)."
    bot.send_message(message.chat.id, msg, reply_markup=keyboard)
 
def parse_data(code):
    code = code.split('n')[1]
    return pytaf.Decoder(pytaf.TAF(code)).decode_taf()
 
def get_metar(message):
    # Fetch info from server.
    code = request.urlopen(URL_METAR).read().decode('utf-8')
    # Send formatted answer.
    bot.send_message(message.chat.id, parse_data(code), reply_markup=keyboard)
 
def get_taf(message):
    # Fetch info from server.
    code = request.urlopen(URL_TAF).read().decode('utf-8')
    # Send formatted answer.
    bot.send_message(message.chat.id, parse_data(code), reply_markup=keyboard)
 
def route_command(command, message):
    """
    Commands router.
    """
    if command == '/start':
        return start(message)
    elif command == '/get_metar':
        return get_metar(message)
    elif command == '/get_taf':
        return get_taf(message)
 
def main(**kwargs):
    """
    Serverless environment entry point.
    """
    print(f'Received: "{kwargs}"')
    message = telebot.types.Update.de_json(kwargs)
    message = message.message or message.edited_message
    if message and message.text and message.text[0] == '/':
        print(f'Echo on "{message.text}"')
        route_command(message.text.lower(), message)

  • เช…เชฎเซ‡ เชธเชฎเช—เซเชฐ เชจเชฟเชฐเซเชฆเซ‡เชถเชฟเช•เชพเชจเซ‡ เชเซ€เชช เช†เชฐเซเช•เชพเช‡เชตเชฎเชพเช‚ เชชเซ‡เช• เช•เชฐเซ€เช เช›เซ€เช เช…เชจเซ‡ เชฌเชจเชพเชตเซ‡เชฒ เช•เชพเชฐเซเชฏ เชฎเชพเชŸเซ‡ เช•เช‚เชŸเซเชฐเซ‹เชฒ เชชเซ‡เชจเชฒ เชชเชฐ เชœเชˆเช เช›เซ€เช.
  • เชฆเชฌเชพเชฃ เชธเช‚เชชเชพเชฆเชฟเชค เช•เชฐเซ‹ เช…เชจเซ‡ เช•เซ‹เชก เชธเชพเชฅเซ‡ เช†เชฐเซเช•เชพเช‡เชต เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเซ‹.

เชนเชตเชพเชฎเชพเชจเชจเซ€ เชธเซŒเชฅเซ€ เชธเชšเซ‹เชŸ เช†เช—เชพเชนเซ€: เช•เซเชฒเชพเช‰เชก เชซเช‚เช•เซเชถเชจ เชชเชฐ เชŸเซ‡เชฒเชฟเช—เซเชฐเชพเชฎ เชฎเชพเชŸเซ‡ เชฌเซ‹เชŸ

  • เชซเชพเช‡เชฒเชฎเชพเช‚ เชธเช‚เชฌเช‚เชงเชฟเชค เชชเชพเชฅ เชญเชฐเซ‹ tele_bot (เชตเชฟเชธเซเชคเชฐเชฃ .เชชเซ€ เช‰เชฒเซเชฒเซ‡เช–เชฟเชค เชจ เชนเซ‹เชˆ เชถเช•เซ‡) เช…เชจเซ‡ เชเชจเซเชกเชชเซ‹เช‡เชจเซเชŸ เชซเช‚เช•เซเชถเชจ (เช† เช†เชชเซ‡เชฒ เช‰เชฆเชพเชนเชฐเชฃเชฎเชพเช‚ เชฎเซเช–เซเชฏ).
  • เช•เชฒเชฎ เชชเชฐเซเชฏเชพเชตเชฐเชฃเซ€เชฏ เชšเชฒเซ‹ เชšเชฒ เชฒเช–เซ‹ เชŸเซ‹เช•เชจ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เช‡เชšเซเช›เชฟเชค เชŸเซ‡เชฒเชฟเช—เซเชฐเชพเชฎ เชฌเซ‹เชŸเชจเซเช‚ เชŸเซ‹เช•เชจ เชธเซ‹เช‚เชชเซ‹.
  • เชฆเชฌเชพเชฃ เชธเชพเชšเชตเซ‹ เช…เชจเซ‡ เชตเชฟเชธเซเชคเซƒเชค เช•เชฐเซ‹, เชœเซ‡ เชชเช›เซ€ เช†เชชเชฃเซ‡ เชตเชฟเชญเชพเช—เชฎเชพเช‚ เชœเชˆเช เช›เซ€เช เชŸเซเชฐเชฟเช—เชฐเซเชธ.
  • เช…เชฎเซ‡ เชธเซเชตเซ€เชš เชฎเซ‚เช•เซ€ HTTP เชตเชฟเชจเช‚เชคเซ€เชตเชฟเชจเช‚เชคเซ€เชจเซ‡ เชœเชพเชนเซ‡เชฐ เช•เชฐเชตเชพ.

เชนเชตเชพเชฎเชพเชจเชจเซ€ เชธเซŒเชฅเซ€ เชธเชšเซ‹เชŸ เช†เช—เชพเชนเซ€: เช•เซเชฒเชพเช‰เชก เชซเช‚เช•เซเชถเชจ เชชเชฐ เชŸเซ‡เชฒเชฟเช—เซเชฐเชพเชฎ เชฎเชพเชŸเซ‡ เชฌเซ‹เชŸ
เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชนเชตเซ‡ เชซเช‚เช•เซเชถเชจเชจเซ‡ เชธเชพเชฐเซเชตเชœเชจเชฟเช• เชฐเซ€เชคเซ‡ เช•เซ‰เชฒ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชเช• URL เช›เซ‡. เชฌเชธ เชฌเชพเช•เซ€ เช›เซ‡ เชตเซ‡เชฌเชนเซ‚เช• เช—เซ‹เช เชตเซ‹. เช…เชฎเชพเชฐเชพ เชฌเซ‹เชŸ เชถเซ‹เชงเซ‹ @SelectelServerless_bot เชŸเซ‡เชฒเชฟเช—เซเชฐเชพเชฎเชฎเชพเช‚ เช…เชจเซ‡ เช†เชฆเซ‡เชถ เชธเชพเชฅเซ‡ เชคเชฎเชพเชฐเชพ เชฌเซ‹เชŸเชจเซ€ เชจเซ‹เช‚เชงเชฃเซ€ เช•เชฐเซ‹:

/setwebhook <you bot token> <public URL of your function>

เชชเชฐเชฟเชฃเชพเชฎ

เชœเซ‹ เชฌเชงเซเช‚ เชฏเซ‹เช—เซเชฏ เชฐเซ€เชคเซ‡ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชนเซ‹เชฏ, เชคเซ‹ เชคเชฎเชพเชฐเซ‹ เชฌเซ‹เชŸ เชคเชฐเชค เชœ เช•เชพเชฎ เช•เชฐเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเชถเซ‡ เช…เชจเซ‡ เชจเชตเซ€เชจเชคเชฎ เช‰เชกเซเชกเชฏเชจ เชนเชตเชพเชฎเชพเชจ เช…เชนเซ‡เชตเชพเชฒ เชธเซ€เชงเชพ เชœ เชฎเซ‡เชธเซ‡เชจเซเชœเชฐเชฎเชพเช‚ เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เช•เชฐเชถเซ‡.

เชนเชตเชพเชฎเชพเชจเชจเซ€ เชธเซŒเชฅเซ€ เชธเชšเซ‹เชŸ เช†เช—เชพเชนเซ€: เช•เซเชฒเชพเช‰เชก เชซเช‚เช•เซเชถเชจ เชชเชฐ เชŸเซ‡เชฒเชฟเช—เซเชฐเชพเชฎ เชฎเชพเชŸเซ‡ เชฌเซ‹เชŸ
เช…เชฒเชฌเชคเซเชค, เช•เซ‹เชก เชธเซเชงเชพเชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡, เชชเชฐเช‚เชคเซ เชคเซ‡เชจเซ€ เชตเชฐเซเชคเชฎเชพเชจ เชธเซเชฅเชฟเชคเชฟเชฎเชพเช‚ เชชเชฃ เชคเซ‡ เชตเชฟเชถเซเชตเชธเชจเซ€เชฏ เชธเซเชคเซเชฐเซ‹เชคเชฎเชพเช‚เชฅเซ€ เชธเซŒเชฅเซ€ เชธเชšเซ‹เชŸ เชนเชตเชพเชฎเชพเชจ เช…เชจเซ‡ เช†เช—เชพเชนเซ€ เชถเซ‹เชงเชตเชพ เชฎเชพเชŸเซ‡ เชชเซ‚เชฐเชคเซเช‚ เช›เซ‡.

เชคเชฎเชจเซ‡ เช…เชฎเชพเชฐเชพเชฎเชพเช‚ เช•เซ‹เชกเชจเซเช‚ เชธเช‚เชชเซ‚เชฐเซเชฃ เชธเช‚เชธเซเช•เชฐเชฃ เชฎเชณเชถเซ‡ GitHub เชชเชฐ เชฐเซ€เชชเซ‹เชเซ€เชŸเชฐเซ€เช.

เชนเชตเชพเชฎเชพเชจเชจเซ€ เชธเซŒเชฅเซ€ เชธเชšเซ‹เชŸ เช†เช—เชพเชนเซ€: เช•เซเชฒเชพเช‰เชก เชซเช‚เช•เซเชถเชจ เชชเชฐ เชŸเซ‡เชฒเชฟเช—เซเชฐเชพเชฎ เชฎเชพเชŸเซ‡ เชฌเซ‹เชŸ

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹