Подписки открыты в API

Яндекс продолжает открывать API к своим сервисам. На этот раз мы открываем API Яндекс.Подписок в публичное бета-тестирование.

В духе последних веяний этот API тоже построен по идеологии REST и использует авторизацию по протоколу OAuth 2.0. Подробнее про процедуру авторизации  можно почитать в документации к OAuth.

С помощью API Яндекс.Подписок можно просматривать посты и статистику непрочитанных постов, редактировать подписки, подписываться на новые потоки, управлять папками, помечать прочитанными посты/папки/потоки, проставлять тэги постам — словом всё, что можно делать из интерфейса Подписок.

Перед выпуском мы устроили небольшой мозговой штурм и накидали список идей, которые можно было бы реализовать с помощью API:

  • Разнообразные виджеты для тулбаров, десктопов и телефонов с количеством непрочитанных постов.
  • Менеджер подкастов, использующий Подписки как хранилище списка подкастов с синхронизацией их прослушанности с мобильным устройством или компьютером.
  • Минималистичный гиковский текстовый интерфейс чтения подписок.
  • Сервис автоматической пометки прочтёнными давнишних неважных сообщений — чтобы, когда пользователь придёт из отпуска, непрочитанных у него было не 2000, а только 50.
  • Подсказчик "мёртвых" подписок, в которых давно ничего не появлялось.
  • Анализатор интересных подписок по стастистике прочитываемости.
  • Экспорт непрочитанных постов в формат, удобный для чтения в электронной книге.
  • Расшаривание списка подписок или определённой папки для использования в виджете своего блога.

Используйте свою фантазию и создавайте свои новые интересные проекты.

Чтобы дать вам почувствовать "вкус" API Подписок, вот короткий пример кода на Питоне, который выводит число непрочитанных сообщений:

# -*- coding:utf-8 -*-
from httplib2 import Http
import lxml.etree


ACCESS_TOKEN = '...' # получить через oauth.yandex.ru
HOST = 'api-lenta.yandex.ru'


def auth_request(url):
    '''Создаёт авторизованный объект запроса.'''
    headers, response = Http().request(
        url, headers={'Authorization': 'OAuth %s' % ACCESS_TOKEN}
    )
    return response

def get_link(link):
    '''Возвращает URL нужного ресурса из списка подписок авторизованного пользователя.'''
    response = auth_request('https://%s/subscriptions' % HOST)
    xml = lxml.etree.fromstring(response)
    links = xml.xpath('/subscriptions/%s' % link)
    return links[0].attrib['href']

def get_unread_count():
    '''Возвращает число непрочитанных постов.'''
    response = auth_request(get_link('stat'))
    xml = lxml.etree.fromstring(response)
    unreads = xml.xpath('/stat/unread')
    return unreads[0].text

if __name__ == '__main__':
    print get_unread_count()

Подробнее — в документации.

Мы выпускам API со статусом бета-версии. Нам интересно получить от вас пожелания по функционалу и сообщения об ошибках, о которых можно писать в клуб API Яндекс.Подписок.

Развлекайтесь на зимних каникулах

Собиратели и разматыватели лент

14 комментариев
Артёменко Александр
26 ноября 2015, 17:29
Что бы такого написать на новом АПИ ленты? Может правильную читалку?
Самая жесть -- теперь взять API Google Reader и написать синхронизатор этих двух читалок. Тогда, как минимум, любое мобильное приложение, работающее с гридером будет работать и с ялентой (правда через чжопу).

p.s.: хотя да, судя по доке там нету возможности посмотреть статистику последних действий пользователя, потому идея отпадает

А если RSS-ленты в Я.Подписках и Г.Ридере разные? Тогда это возможно?
Это не возможно впринципе) Так что да, и в этом случае тоже.
Артёменко Александр
26 ноября 2015, 17:29
Хотя да, в Google Reader и API то толком нету :-D
ну наконец-то!
подсписки это здорово! а подскажите как подписки в новом дизайне neo2010 вернуть в левую колонку под папочками почты как это реализовано было в предыдущем дизайне.
Здорово. Спасибо. А то было как-то неуютно, что список фавов никак вытащить нельзя.

Заметил, что в новом интерфейсе (neo2) перестал работать переход к следующей нечитанной странице по двойному jj. Так и задумано? Было очень удобно. Теперь нет (Ctrl-→ на некоторых клавиатурах требует двух рук, кстати).
Пожалуйста!
Этот баг мы поправим в ближайшее время.
Кирилл Кленов
26 ноября 2015, 17:29
Сделайте редактирование созданных клиентов уже. Надоело смореть на 10 тестовых клиентов для которых я даже не могу поменять редирект ури и создавать еще один для очередной дев среды.
Кирилл Кленов
26 ноября 2015, 17:29
Да я даже не могу посмотреть кэлбэк ури для уже созданных!
Кирилл Кленов
26 ноября 2015, 17:29
Не говоря уже о том, что по драфту я должен иметь возможность задавать его в запросе.
Иван Сагалаев
26 ноября 2015, 17:29
Вообще-то, нет. Callback может быть установлен во время регистрации клиента, и тогда это поле при запросе токена не required.
Иван Сагалаев
26 ноября 2015, 17:29
Сделаем обязательно, это в ближайших планах.