«Апи» d3.ru - Ambilight/d3-mobile GitHub Wiki

/moar

У д3 нет никакого апи, зато есть волшебный адрес, послав application/x-www-form-urlencoded POST запрос по такому адресу:

http://blog.d3.ru/index/moar

Можно получить список постов в блоге blog. Но посылать надо не просто так, а закодировав в form-data параметр offset=0, к которому я еще вернусь.

Этот волшебный урл, назовем его для краткости /moar принимает следующие аргументы (здесь описаны не все, а только самые важные):

  • offset — обязательный
  • type — опциональный
  • threshold — опциональный
  • csrf_token — обязательный с точки зрения аутентификации

type – тип выборки постов, значение которого может быть одним из следующих:

  • imperial – популярное
  • new – новое
  • best — лучшее

Про социализм ничего не знаю.

offset – это сколько постов сверху должно быть пропущено. В ответе приходит 42 поста, соответственно, каждый следующий запрос должен увеличивать offset по сравнению с предыдущим. Но лучше так не делать, ниже будет объяснено почему.

threshold – это фильтр постов. Принимает целое значение, и при type=best, threshold=30 по умолчанию.

csrf_token — самый слабоизученный аргумент, и связан с логином. На самом d3.ru он лежит в переменной globals.user.csrf_token, и если послать его вместе с запросом, то сайт будет думать, что вы залогенины.

Ответ приходит в формате json, в котором самые важные на данный момент поля, это:

  • offset – количество постов, находящихся в template. Следует брать offset для запроса следующей порции именно отсюда, потому что в блоге могут закончиться посты, и тогда в ответе их придет меньше, чем обычно.
  • template — текст в формате html, который представляет собой сами посты. Сайт потом вставляет их непосредственно на страницу.
  • user — Относится к логину, и поскольку, про логин я ничего не знаю, то пропущу его.
  • domain — информация о текущем блоге.

/domains

Есть еще один волшебный урл, который мы, по устоявшейся традиции назовем /domains: http://d3.ru/ajax/domains/

Он совершенно аналогичен /moar-у, за тем лишь исключением, что отфильтровать сайты в ответе можно только с помощью cookie – domains_sort, которая принимает одно из следующих самоочевидных значений: new, top и random.

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

Ответ с этого урла также приходит в формате json, у которого самые интересные поля — это domains и template.