#python #python_3x #requests #stackexchange_api
Мне вот стало интересно. Можно сделать скрипт на python использующий модуль requests(почему именно requests ну потому что он легкий и я его немного знаю, если есть другие варианты то предлагайте) для того чтобы смотреть новые сообщения в ru.stackoverflow.com скорее не смотреть а узнавать что они есть. Используется Python 3.6.1 Можно ли это сделать? Если можно то как?
Ответы
Ответ 1
Чтобы узнать есть ли непрочитанные входящие сообщения для Stack Overflow пользователя, идентифицируемого с помощью access_token: #!/usr/bin/env python import os import sys import requests url = ('https://api.stackexchange.com/2.2/me/inbox/unread' + '?key=' + os.environ['SO_KEY'] + '&access_token=' + os.environ['SO_TOKEN'] + '&site=stackapps') r = requests.get(url) r.raise_for_status() items = r.json()['items'] has_unread = len(items) > 0 if has_unread: assert next((True for x in items if x['is_unread']), False) print('there are unread items') else: print('nothing new') sys.exit(not has_unread) # success if there are unread items Скрипт использует /me/inbox/unread метод из Stack Exchange API. По ссылке документация и живой пример (нажмите на "Get Token" и "Run" кнопки, чтобы результат вызова API увидеть). Параметр site требуется в этом запросе, но все непрочитанные входящие сообщения со всех сайтов возвращаются. Для работы необходимо, чтобы SO_KEY и SO_TOKEN переменные окружения содержали API ключ и access_token соответственно. API ключ это просто уникальный идентификатор для вашего приложения, которое stackexchange API использует (при регистрации вашего приложения выдаётся этот ключ). Информация из /2.2/inbox/ не доступна анонимным пользователям, поэтому необходим ещё access_token (что требует наличие API ключа). Также ключ увеличивает кол-во разрешённых запросов к API и для запросов, не требующих authentication (<-- по ссылке описано как access_token получить в зависимости от вида приложения). Чтобы освоиться с Stack Overflow API, можно выполнить вызовы, которые не требуют аутентификации, пример. И/или воспользоваться готовыми библиотеками типа py-stackexchange, пример.
Комментариев нет:
Отправить комментарий