Погода становится холоднее, сделайте помощника для напоминаний о погоде для родителей

Python

задний план

В последнее время погода похолодала, и я узнал из разговора с родителями, что им неудобно проверять ежедневный прогноз погоды.Помню, когда я был ребенком, каждую ночь около 19:30 вся семья остаться у телевизора, чтобы послушать прогноз погоды на следующий день. .

Сейчас нам, молодым людям, очень удобно получать информацию о погоде, но нашим родителям, которые не умеют пользоваться мобильными телефонами, по-прежнему очень сложно, они больше используют WeChat. С этой целью я написал небольшой инструмент менее чем из 40 строк кода и каждый день отправлял погодные условия дня напрямую в группу WeChat.

Запрос интерфейса погоды

Чтобы получить погоду, нужен интерфейс для запроса погоды.Я нашел его в сети.Вообщем, после регистрации я буду отправлять определенное количество звонков.Я выбрал один, и я отправлю 500 запросов бесплатно.

Давайте посмотрим на документацию API для интерфейса.

Требуется название города cityname и ключ.

http://v.juhe.cn/weather/index?format=2&cityname=%E8%8B%8F%E5%B7%9E&key=您申请的KEY

Значение ключа можно увидеть в колонке моего интерфейса на juhe.cn.

Мы также можем заранее посмотреть, можно ли настроить интерфейс в инструменте Postman.

Неважно, что инструмент интерфейса Postman не использовался, они также предоставляют инструменты отладки на своем веб-сайте.​

Как проверить погоду

Мы можем напрямую использовать библиотеку запросов, чтобы запросить интерфейс для получения информации о погоде в формате json.Данные json содержат информацию о погоде на текущий день и несколько следующих дней.Здесь мне нужен только текущий день.Данные текущего день все в сегодня под результатом.возврат возвращается.

Отправляйте сообщения о погоде через WeChat

Мы отправляем информацию о погоде в группу через WeChat.Здесь нам нужно использовать библиотеку, которая вызывает WeChat, либо библиотеку itchat, либо wxpy.Здесь я использую библиотеку wxpy.

Сначала импортируйте библиотеку wxpy.

from wxpy import *

Давайте сейчас интегрируем информацию о погоде, возвращенную интерфейсом запроса, а затем воспользуемся методом поиска библиотеки wxpy, чтобы найти группу, которой нужно отправить сообщение о погоде, по имени группы, и используем метод send для ее отправки.

Я отправляю его в группу здесь, конечно, вы также можете отправить его непосредственно в личный WeChat.

my_friend = bot.friends().search(u'pk哥')[0]

операция синхронизации

Если нам нужно запускать его каждый раз вручную, это будет немного хлопотно.Нам нужно заставить программу отправлять в фиксированное время каждый день.Здесь нам нужно использовать таймер Timer.

Формат таймера таймера:

Timer(86400, get_weather)

Первый параметр означает повторный вызов метода через указанное время (единица измерения: секунды) (второй параметр).Обратите внимание, что после метода нет круглых скобок.

86400 секунд — это 24 часа, то есть один день.

t = Timer(86400, get_weather)  
t.start()
t.join()

Обработка исключений

Если отправка информации не удалась, мы отправляем информацию себе, здесь я сделал обработку исключений.

   except BaseException:
        my_friend = bot.friends().search(u'brucepk')[
            0]  # 发送不成功,则发送消息给自己,提醒消息发送失败
        my_friend.send(u'天气消息发送失败')

Наша программа должна работать непрерывно. Она должна работать на компьютере все время? Это немного нереально. Мы можем сделать это, развернув ее на сервере. Теперь сервер также очень дешевый, обычно менее 100 юаней, когда делать деятельность.Вы можете купить его на год.

развернут на сервере

Запустите программу на сервере и отсканируйте код, чтобы войти в WeChat. Вот что я начал запускать в пятницу. Через 24 часа я снова вызываю метод в субботу, чтобы получить новую информацию о погоде.Эффект от отправки в группу следующий.Конечно, вы также можете добавить дополнительную информацию, возвращаемую интерфейсом, или то, что вы хотите сказать.

Потенциальная проблема

1. Мой WeChat не может войти в веб-версию WeChat, потому что и библиотека itchat, и библиотека wxpy вызывают интерфейс веб-версии WeChat.Если ваша регистрация в WeChat просрочена и функция входа в веб-версию ограничена, вы не можете запустить эта программа.

2. Если указанная группа не может быть отправлена, сначала проверьте имя группы и удалите некоторые символы эмодзи из имени группы.Эти специальные символы могут привести к нераспознаванию.

Если имя группы верное, проверьте, добавил ли номер, который автоматически отправляет сообщение, группу в адресную книгу.

Таким образом, небольшой инструмент для отправки сообщений через равные промежутки времени завершен, и вы также можете расширить его и добавить другие функции, чтобы сделать его более полным.

Весь исходный код этой статьи можно получить, ответив на «Виджет погоды» в фоновом режиме публичной учетной записи «Круг знаний Python».Значение ключа и имя группы в исходном коде необходимо заменить на свои.

Эта статья опубликована в блогеOpenWriteвыпуск!