«Апи» 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.