[ /tv/ /rf/ /vg/ /a/ /b/ /u/ /bo/ /fur/ /to/ /dt/ /cp/ /oe/ /bg/ /ve/ /r/ /mad/ /d/ /mu/ /cr/ /di/ /sw/ /hr/ /wh/ /lor/ /s/ /hau/ /slow/ /gf/ /vn/ /w/ /ma/ /azu/ /wn/ ] [ Main | Settings | Bookmarks | Music Player ]

No.24370 Reply
File: string.gif
Gif, 16.64 KB, 598×413 - Click the image to expand
edit Find source with google Find source with iqdb
string.gif
Описание API теперь можно найти тут: help://api

С вопросами и предложениями можно обращаться в этот тред.

АПИ для постинга будет позже, надеюсь на этой неделе.

Алсо, прошу обратить особое внимание на Last-Modified/E-Tags: использование этих заголовков значительно ускоряет работу с API и экономит траффик клиента и сервера.
Post was modified last time at 2011-10-20 16:45:48
>> No.24399 Reply
>>24370
Спасибо за новое API.
И сразу вопрос - как можно использовать board_id?
>> No.24401 Reply
>>24399
А где ты там его нашел?
>> No.24402 Reply
>>24370
> Алсо, прошу обратить особое внимание на Last-Modified/E-Tags: использование этих заголовков значительно ускоряет работу с API и экономит траффик клиента и сервера.
Да оно еще и будет экономить нагрузку на проц клиента. Ня, каваии.
>> No.24403 Reply
File: p_f[1].jpg
Jpg, 49.71 KB, 560×423 - Click the image to expand
edit Find source with google Find source with iqdb
p_f[1].jpg
>>24370
А что это такое? Как это может пригодиться? Прошу коротко объяснить.
>> No.24404 Reply
>>24401
Да он ведь отдается в каждом запросе из справки
Ну хотя примерно ясно что /d/==1, /b/==2, но почему бы не выдавать буквенный код?
>> No.24406 Reply
>> No.24407 Reply
>>24406
Спасибо!
>> No.24553 Reply
File: vlcsnap-2011-04-21-18h29m25s97.png
Png, 694.50 KB, 1280×720 - Click the image to expand
edit Find source with google Find source with iqdb
vlcsnap-2011-04-21-18h29m25s97.png
Товарищи админы, объясните одну непонятку.
Почему в запросе данных сессии (/api/user.json?threads) всегда параметр "unread" равен нулю? Разве он не должен указывать количество непрочитанных сообщений в треде?
Плюс ко всему второй удобный параметр этого запроса - "lastpostid" всегда неопределен (null), что тоже не очень хорошо
>> No.24554 Reply
>>24553
Потому, что это структура данных новой версии, которая еще не развернута на сервере. Я туда только кусок смержил, чтобы экспорт старой структуры не делать.
Когда эта часть будет live, я напишу отдельно в /news/ (да и её сложно будет не заметить, поскольку избранные/скрытые треды там совсем иначе сделаны).
>> No.24558 Reply
File: shot0045.png
Png, 305.39 KB, 800×450 - Click the image to expand
edit Find source with google Find source with iqdb
shot0045.png
>>24554
Ага,с этим все ясно, ждем следующего апдейта.
Теперь другой вопрос - почему в этих же данных сессии у избранных тредов ("level": "bookmarked") параметр threadid означает threadid, а у скрытых ("level": "hidden") threadid означает displayid?
Это бага и она будет исправлена или же фича и thread_id надо будет обрабатывать по-разному?
>> No.24560 Reply
>>24558
Это бага. Скрытые сейчас хранятся в другой структуре данных, и при экспорте просто нормализуются к новому виду. Чтобы thread_id получить, надо запросы лишние делать, поэтому я пока не стал этим заморачиваться, ибо сессии все-равно в течение месяца надеюсь таки развернуть на сервере новые. Можно, в принципе, чтобы не возникало недоразумений, сейчас отдавать еще display_id (=null у букмарков, и айди у хидден тредов).
>> No.24564 Reply
File: shot0055.png
Png, 342.57 KB, 800×450 - Click the image to expand
edit Find source with google Find source with iqdb
shot0055.png
>>24560
> чтобы не возникало недоразумений, сейчас отдавать еще display_id
Не стоит заморачиваться. Лучше подождем полного апдейта.
И вот еще что. Сильно ли будет отличаться реализация избранного/скрытого после апдейта со стороны апи? А то я сейчас пользуюсь api/thread/:board/:thread/hide.json, sign.json и подобными. Они будут работать после апдейта?
>> No.24565 Reply
>>24564
С т.з. интерфейса - всё также.
Разве что может изменю это странное sign на что-нибудь более логичное, типа bookmark, но старый вариант тоже будет работать.
>> No.24572 Reply
File: 2009_10_12_16_14_imgur_com_z1b9b.png
Png, 2.86 KB, 314×145 - Click the image to expand
edit Find source with google Find source with iqdb
2009_10_12_16_14_imgur_com_z1b9b.png
Последние сообщения треда
        * /api/thread/{thread_id:d+}/last{.format}
        * /api/thread/{board}/{display_id:d+}/last{.format}
Няша, сделай обратно возможность xhtml, пожалуйста.
И желательно оставь в том числе и старый формат тоже(Что сейчас и есть), но это не важно.
>> No.24580 Reply
>>24572
> сделай обратно возможность xhtml
Пока верну, конечно, но очень любопытно - зачем?
>> No.24583 Reply
File: 1235767007998.jpg
Jpg, 61.81 KB, 572×730 - Click the image to expand
edit Find source with google Find source with iqdb
1235767007998.jpg
>>24580
Но у меня же кривые руки, няша. Играясь яваскриптом, я из апишного xhtml'а в джва регекспа сделал полноценный текст для вставки.
Кроме моих кривых плагинов на этом браузере других скриптов не предвидится, обезьянка тут не взлетает. А даже если апи в .xhtml-e более нагружает сервер, то перезагрузки странички полностью нагружают его ещё больше.

tl;dr не умею в json.
>> No.24584 Reply
>>24583
> А даже если апи в .xhtml-e более нагружает сервер, то перезагрузки странички полностью нагружают его ещё больше.
Ну, как минимум желательно таки разобраться с If-Modified-Since/Last-Modified.

А так дело не в нагрузке, а прежде всего в идеологической неправильности такого решения - xhtml подразумевает ответ в виде валидного документа, а не кусков отрендереных шаблонов. Этому, как минимум, нужен другой идентификатор формата, чтобы не возникало путаницы.
>> No.24629 Reply
Такое дело. Я помню, администрация обещала предоставить доступ к списку display_id удаленных постов треда. Эта фича уже появилась?
>> No.25336 Reply
File: sora-no-woto4.jpg
Jpg, 97.90 KB, 1280×720 - Click the image to expand
edit Find source with google Find source with iqdb
sora-no-woto4.jpg
>>24370
Напомню на всякий случай
> АПИ для постинга будет позже, надеюсь на этой неделе.
> Post was modified last time at 2011-10-20 16:45:48
>> No.25445 Reply
File: 1301907990_annasophia-robb_posted_at_hicelebs.net_06.jpg
Jpg, 869.21 KB, 1997×3000 - Click the image to expand
edit Find source with google Find source with iqdb
1301907990_annasophia-robb_posted_at_hicelebs.net_06.jpg
У меня собственно два вопроса.
Во-первых, почему при запросе с If-Modified-Since я получаю в ответ 200 ОК, вместо 304?
Запрос:
GET /api/thread/new/mad/14108.json?last_post=15623 HTTP/1.1
If-Modified-Since: Sun, 27 Nov 2011 19:18:31 GMT
User-Agent: DobroParser
Cookie: hanabira=многацифр
Connection: Keep-Alive
Accept-Encoding: gzip
Accept-Language: en-US,*
Host: dobrochan.ru
Ответ:
HTTP/1.1 200 OK
Server: nginx/0.8.42
Date: Sun, 27 Nov 2011 16:25:04 GMT
Content-Type: application/json
Connection: keep-alive
Keep-Alive: timeout=20
Pragma: no-cache
Cache-Control: no-cache
Last-Modified: Sun, 27 Nov 2011 19:18:30 GMT
Content-Length: 281

Дальше дата.
И второй вопрос, возможно объясняющий первый. Почему так расходятся поля Date и Last-Modified?
В данном случае похоже date в реальном GMT, а Last-Modified указывает местное время.
>> No.25451 Reply
>>25445
> If-Modified-Since: Sun, 27 Nov 2011 19:18:31
> Last-Modified: Sun, 27 Nov 2011 19:18:30
Дату надо ставить точно такую же, какая отдается в Last-Modified.
> Почему так расходятся поля Date и Last-Modified?
Потому, что Date это время генерации ответа веб-сервера, а не контента.
>> No.25457 Reply
File: kinopoisk.ru-AnnaSophia-Robb-578261--w--800.jpg
Jpg, 60.21 KB, 800×600 - Click the image to expand
edit Find source with google Find source with iqdb
kinopoisk.ru-AnnaSophia-Robb-578261--w--800.jpg
>>25451
> > If-Modified-Since: Sun, 27 Nov 2011 19:18:31
> > Last-Modified: Sun, 27 Nov 2011 19:18:30
> Дату надо ставить точно такую же, какая отдается в Last-Modified.
Собственно там то же самое. И изначально я так и сделал, но так оно не работало.
> Потому, что Date это время генерации ответа веб-сервера, а не контента.
Ну это понятно. Я спрашиваю потчему оно находится далеко в будущем.
Last-Modified: Sun, 27 Nov 2011 19:18:30 за вычетом 27 November 2011 (Sun) 20:37 местного это будет 2,5 часа разницы. Причем страница "будет" изменена через 2.5 часа после моего >>25445 поста. Это не совсем правильно.
>> No.25458 Reply
>>25457
> Собственно там то же самое
Хм, действительно. Причем оно везде поломалось, с кешированием в браузерах тоже, хотя в коде ничего не менял. Буду разбираться.
> Я спрашиваю потчему оно находится далеко в будущем.
Это дата генерации ответа нгинксом, т.е. "прямо сейчас по серверу". Оно с ласт-модифид вообще никак не связано.
Сейчас выдает Date Mon, 28 Nov 2011 07:33:43 GMT что с поправкой на часовой пояс дает текущее время на сервере.
>> No.25459 Reply
File: AnnaSophia Robb-DGG-016051.jpg
Jpg, 48.94 KB, 383×644 - Click the image to expand
edit Find source with google Find source with iqdb
AnnaSophia Robb-DGG-016051.jpg
>>25458
> Хм, действительно.
А!ТО совершенно на пустом месте в ряд ли бы писать стал.
> Сейчас выдает Date Mon, 28 Nov 2011 07:33:43 GMT
Еще раз. Это понятно.
Я спрашиваю про поле Last-Modified.
По факту оно мне выдает GMT+4 вместо GMT.
>> No.25460 Reply
>>25459
> Я спрашиваю про поле Last-Modified. По факту оно мне выдает GMT+4 вместо GMT.
А, ну да. Оно выдает ровно тоже самое, что находится в поле last_modified треда (а там время по МСК), без поправки на часовой пояс, ибо нет смысла.
>> No.25462 Reply
File: 1287255806_annasophiarobb_posted_at_hicelebs.net_03.jpg
Jpg, 81.72 KB, 450×600 - Click the image to expand
edit Find source with google Find source with iqdb
1287255806_annasophiarobb_posted_at_hicelebs.net_03.jpg
>>25460
> Оно выдает ровно тоже самое, что находится в поле last_modified треда (а там время по МСК), без поправки на часовой пояс, ибо нет смысла.
Особого смысла да, нету. Но было бы несколько удобнее и очевиднее. Поскольку когда видишь GMT думаешь что это GMT, а не GMT+4.

Ладно, ок. Я понял. Ждемс когда починят If-Modified-Since.
>> No.25614 Reply
>>25462
Вверх.
>> No.25615 Reply
>>25614
Но зачем?
>> No.25616 Reply
>>25615
Очевидно же чтобы:
а) Починили If-Modified-Since, ну или назвали сроки.
б) Напомнить про API для постинга.
>> No.25618 Reply
Реально как-то спалить факт того что требуется ввод волнистой капчи в случае когда в данных сессии торчит токен "nousercaptcha"?
>> No.25658 Reply
>>25618
Ладно, замнем для ясности. Есть другой более интересный вопрос.
Почему в данных сессии "last_viewed" обновляется только при загрузке xhtml версии треда, но не json? У меня идея фигс - синхронизировать "избранное" на телефоне и на компе. А для этого надо знать либо количество непрочитанных сообщений (не работает в текущей версии доброчана), либо время последнего просмотра.
>> No.25664 Reply
>>25658
> У меня идея фигс - синхронизировать "избранное" на телефоне и на компе.
Поставить им одну печеньку?
>> No.25667 Reply
>>25664
Ясен пень одну. Но ведь надо еще как-то количество непрочитанных сообщений считать. А для этого нужно >>25658
Да, телефон работает через json. Потому и хочу исправления этого бага
>> No.25668 Reply
>>25667
> Да, телефон работает через json
Ведроидоклиент?
>> No.25669 Reply
>>25668
Он самый
>> No.25671 Reply
>>25667
> Потому и хочу исправления этого бага
Это не баг, это фича.
Во вторых запрос что полностью отрендеренного, что через json не означает ни разу что ты его прочитал.
Но в полностью отренедеренном виде это гораздо вероятнее.
Предлагаю обновлять дату последнего прочтения только при использовании дополнительного параметра в json.
>> No.25672 Reply
>>25671
Можно и через параметр. Главное чтобы была такая возможность. А то я ведь так буду XHTML дергать
>> No.25673 Reply
>>25671
> запрос что полностью отрендеренного, что через json не означает ни разу что ты его прочитал
Параметр называется не last_readed, а last_viewed, что характерно.
И все же лучше обновлять этот параметр при любом запросе. Ибо я не представляю ситуации где это может помешать
>> No.25674 Reply
>>25673
> Параметр называется не lastreaded, а lastviewed, что характерно.
По мне так что "просмотренный", что "прочитанный" это одно и то же.
> Ибо я не представляю ситуации где это может помешать
В случае листать чан с телефона и листать чан с компа:
Оставляем включенным автоматическое обновление на телефоне, получаем помеченные как прочитанные сообщения на компе, хотя мы их не читали.
Или есть пример лучше. Например нужно сделать какой-нибудь служебный запрос для того чтобы выцепить все картинки с треда и он попадает между тем когда добавлен новый пост и когда мы запрашиваем обновление для чтения.
>> No.25675 Reply
>>25674
> получаем помеченные как прочитанные сообщения на компе
Автоматическое обновление не загружает посты, а лишь смотрит их дату изменения.
> нужно сделать какой-нибудь служебный запрос
А зачем ему общие печеньки цеплять?
>> No.25676 Reply
>>25675
> а лишь смотрит их дату изменения.
А если они не в избранном?
> А зачем ему общие печеньки цеплять?
Чтобы сессия была одна и счетчики одни и избранное одно.
>> No.25678 Reply
>>25676
> А если они не в избранном?
/api/thread/{thread_id:d+}{.format}
> Чтобы сессия была одна и счетчики одни и избранное одно.
Для этого не обязательно цеплять куки к служебным запросам, как ты их назвал
>> No.25679 Reply
>>25678
> /api/thread/{thread_id:d+}{.format}
Но там нету last_viewed
> Для этого не обязательно цеплять куки к служебным запросам, как ты их назвал
Как будто я каждый раз ручками из цепляю. Но таки да. Можно.
>> No.25680 Reply
>>25679
Дата/время изменения хранится в last_modified
>> No.25682 Reply
>>25680
> last_modified
lastviewed и lastmodified немного разные вещи, не?
>> No.25685 Reply
>>25682
last_viewed < last_modified => есть новые сообщения
last_viewed >= last_modified => нет новых сообщений
Ты групый
>> No.25686 Reply
>>25685
> Ты групый
Няша, но как посмотреть last_viewed для сообщений, которых нет в избранном? Правильно такого нет.
>> No.25687 Reply
File: y-u-no-guy.jpg
Jpg, 13.29 KB, 250×254 - Click the image to expand
edit Find source with google Find source with iqdb
y-u-no-guy.jpg
>>25686
Но зачем нам узнавать last_viewed для сообщений, которых нет в избранном?
>> No.25697 Reply
>>25687
Нуокей нуокей. Считай как считаешь. Пусть будет так. Доброчан же.
>> No.25698 Reply
>>25697
Ага. Тем более что все равно в ближайшее время никто ничего не исправит.
>> No.25725 Reply
File: 0074f470bee64d528764d8afb7f9cd46.jpg
Jpg, 387.39 KB, 976×1049 - Click the image to expand
edit Find source with google Find source with iqdb
0074f470bee64d528764d8afb7f9cd46.jpg
Объясните, товарищи извращенцы, вот мне допустим, надо в стиле вакабы чтобы были страницы, такие например dobrochan.ru/b/1.html.
Тут у вас выдается предупреждение, что де пройдите в API (злые вы, даже 4chan поддерживает редиректит), но API, насколько я понял не поддерживает расстраничивание и список тредов в нем я вообще не понял получить как (тред не читал).
По крайней мере, юзерагент он не будет проверять при доступе к xhtml cтраницам?
Может быть всётаки поставите редирект на .html (я не собираюсь вайпать доброчан и вообще добрый)?
>> No.25734 Reply
File: 1289282396921.jpg
Jpg, 300.57 KB, 659×800 - Click the image to expand
edit Find source with google Find source with iqdb
1289282396921.jpg
>>25725

Ладно, я пошутил. Но всё равно так только школьники делают.
>> No.25963 Reply
File: 34618f44219c637ae246b32eaa816449.png
Png, 64.97 KB, 650×606 - Click the image to expand
edit Find source with google Find source with iqdb
34618f44219c637ae246b32eaa816449.png
Реально достать трипкод через API?
Алсло бампаю >>25658
>> No.25977 Reply
Еще вопрос, а можно ли получить список ссылок на все изображения треда (они есть в сообщениях), с размерами и выставить ограничение по рейтингу через API же?

Плохая, кстати, у вас разметка, нерегулярная

25725-кун
>> No.25978 Reply
>>25977
1. Получаешь тред
2. Парсишь
3. ????
4. PROFIT
>> No.26025 Reply
>>25978

Да, я пробовал так делать, но из-за того, что там какая-то чехарда с тегами у первого изображения треда и остальных, всё изображения выделить декларативным способом (а именно его я применяю при парсинге) не получается, либо мне это пока не удалось. Кроме того, мне нужно отображать изображения в браузере, и даже, если я подменю реферрер (хотя пока не пробовал - выдаются пустые изображения), всё равно вылезут ограничения по рейтингу. Очень недружественно это всё.
>> No.26028 Reply
Забыл уточнить, что проблемы у меня из-за того, что мне нужны размеры изображений.
>> No.26029 Reply
>>25977
Не понимаю, чем не устраивает обычный апи тредов. Там все изображения есть.
>> No.26030 Reply
>>26025
> либо мне это пока не удалось
Вот в этом и вся проблема
>> No.26031 Reply
>>26030

Но если бы доброчан хоть сколько-нибудь стремился бы к совместимости с вакабой хотя бы по структуре разметки, её бы не было да, и XPath мне не доступен
>> No.26033 Reply
>>26031
Не надо парсить хтмл-ки доброчана. Мы вообще крайне отрицательно на это смотрим, и не гарантируем их дальнейшее существование.
Есть JSON API, который легко парсить как браузерами, так и любыми сторонними клиентами.
>> No.26304 Reply
Очень хочется чтобы запросы вида http://dobrochan.ru/b/0.json
тоже поддерживали параметры new_format и message_html.
>> No.26305 Reply
>>26304
Хм, про АПИ для страниц досок я просто забыл, он старый остался.
>> No.26485 Reply
а теперь самый хардкорный вопрос: можно ли получить список борд? вот как нить вот так
[...,"b",...]
>> No.26486 Reply
>>26485
1. На Зачем?
2. Почему "борд", а не "досок"?
3. Парси https://dobrochan.ru/frame.xhtml.
>> No.26493 Reply
>>26486
1) ну список постов в виде треда есть. список тредов есть в качестве страницы. we need to go deeperhigher!
2) май бед, сорри
3) пасибо. это то, что надо.
>> No.26495 Reply
>>26485
Есть вот такой апи, http://dobrochan.ru/api/chan/banners.js
>> No.26497 Reply
>>26495
Но ведь есть доски без баннеров. Проще список выдрать отсюда: http://dobrochan.ru/api/chan/stats/diff.json
>> No.26499 Reply
>>26497
Спасибо, это ваще пушка.%%регексп вообще детсадовский%% Пользуясь случаем, передаю привет маме спрашиваю: на основе чего вычисляются количества непрочитанных постов? Кукисы?
>> No.26501 Reply
>>26499
> регексп
> JSON
Нахуйтакжитьпосоны.жпг
> на основе чего вычисляются количества непрочитанных постов? Кукисы?
Тут всё привязано к кукисам.
>> No.26502 Reply
>>26501
Да мне как-то большой разницы нет - написать пятнадцать строк кода меньше или юзать либу.
Временами свой велосипед интереснее.
>> No.26507 Reply
>>26501
> > регексп
> > JSON
> Нахуйтакжитьпосоны.жпг
Думаешь подключаемая либа будет много быстродейственнее?
>> No.26509 Reply
>>26507
Думаю, что там, где идет речь о HTTP, "быстродействие" нахрен не нужно, в отличие от скорости разработки и надежности кода. JSON парсеры гарантируют преобразование в нативную структуру данных, которую легко обрабатывать, а ваши регэкспы ломаются от любого чиха.
К тому же, да, если либа написана на си, она будет быстрее, чем регэкспа.
>> No.26513 Reply
>>26509
> К тому же, да, если либа написана на си, она будет быстрее, чем регэкспа.
Но если я пишу на си? Oh, whatever...
> в отличие от скорости разработки и надежности кода.
Мне быстрее нарисовать регекспу, чем изучать еще одну либу. О надежности чуть ниже.
> JSON парсеры гарантируют преобразование в нативную структуру данных, которую легко обрабатывать, а ваши регэкспы ломаются от любого чиха.
В лучшем виде это будет либо ассоциативный массив, либо сразу конвертация в переменную с хранением названия поля в другой переменной. И в любом случае оно будет ломаться от смены названий полей, и практически в любом случае при смене формата поля данных.
Так что оно будет одинакого.
Осло, если регэкспа ломается от любого чиха то либо она криво написана (см. неосиляторство), либо тут сторонняя либа не поможет.
>> No.26514 Reply
File: 13081624153455.png
Png, 16.60 KB, 497×386 - Click the image to expand
edit Find source with google Find source with iqdb
13081624153455.png
>>26513
Пикрелейтед.

>>26499-кун
>> No.26609 Reply
>>26305
Но, я надеюсь, это потом подправят?
>> No.26703 Reply
>>25459
В общем, я не понял почему, но сейчас last-modified работает. Там какие-то экзотические проблемы с переводом из GMT в UTC.

Что-то мне кажется, что проще вообще использовать E-Tagи везде, с теми же датами, но без лишнего парсинга в таймстампы и обратно.
>> No.28519 Reply
File: shot0012.png
Png, 363.81 KB, 800×450 - Click the image to expand
edit Find source with google Find source with iqdb
shot0012.png
Бампану тредец и напомню о текущих проблемах:
  • невозможно узнать какие сообщения удалены, а какие появились после премодерации через запрос /api/thread/.../new;
  • интерфейс запроса страниц доски /{board}/{page}.json не поддерживает параметр message_html и вывод в новом формате (объект result или error);
  • /api/user.json до сих пор не показывает количество непрочитанного;
  • отсутствует api для постинга.
Плюс пожелание - хотелось бы разделить запрос /api/user.json?threads на два: /api/user.json?hidden и /api/user.json?bookmarked. А то при большом количестве скрытых тредов много траффика бесполезно расходуется.
>> No.28653 Reply
Как часто можно дёргать API? Очень ли обидятся админы, если я буду делать по 100 запросов подряд без интервала между ними каждые 3 часа?
>> No.28654 Reply
>>28653
> если я буду делать по 100 запросов подряд без интервала между ними каждые 3 часа?
За это просто забаним подсеть на уровне веб-сервера. Да и там троттлинг настроен на 5 запросов, после этого айпи блокируется автоматически.
>> No.28658 Reply
>>28654
У меня 20 IP из разных подсетей, заебётесь. Лучше скажите лимиты для запросов. Максимальное кол-во запросов в час, минимальный интервал внутри одной пачки и т.д.
>> No.28661 Reply
>>28658
Если вам нужно делать "100 запросов каждые 3 часа", то вы изначально делаете что-то не так, и тут надо не интервалы менять, а разбираться, что за данные вам нужны и нафига такое количество запросов с такой периодичностью.
>> No.28664 Reply
>>28661
Мне нужно треды получать с ~10 досок. Будем считать, что надо забрать первые 10 страниц (при условии, что они изменятся) с каждой доски. Даже если изменятся только 3 страницы, то это уже 30 запросов
>> No.28665 Reply
>>28664
За 3 часа 10 страниц не меняются => вы делаете совершенно не нужные и бессмысленные запросы.
>> No.28666 Reply
>>28665
А теперь прочитайте третье предложение, ага
>> No.28671 Reply
>>28654
> троттлинг настроен на 5 запросов
Это просто пушка. У вас API для того, чтобы им пользоваться или чтобы на него смотреть?
>> No.28672 Reply
>>28671
API не предназначен для копирования всего чана целиком. Для слежения за избранными тредами этого достаточно.
>> No.28674 Reply
Допустим, я пишу свой куклоскрипт, который ежеминутно дёргает открытый во вкладке тред через Ясона. Открываю 10 тредов = 10 запросов/минуту = бан?
>> No.28675 Reply
>>28672
Я бы не выкобенивался, если бы на Доброчане был rss. Я хочу подписаться на новые треды в нескольких разделах (не в /b/, в /b/ rss не нужен) и не обновлять каждый день страницы, а один раз открыть свой Google Reader и пролистать новые треды

If-None-Match-запросы, которые получают 304й ответ считаются дёрганием API или нет?
>> No.28676 Reply
>>28675
> новые треды в нескольких разделах
У нас за сутки во всех разделах суммарно создается не более 30-40 тредов. Их все можно получить одним запросом разом, а не сотней отдельных.
>> No.28677 Reply
>>28676
И что же это за магический запрос, отсутствующий в манах?
>> No.28685 Reply
>>28519
> Плюс пожелание - хотелось бы разделить запрос /api/user.json?threads на два: /api/user.json?hidden и /api/user.json?bookmarked. А то при большом количестве скрытых тредов много траффика бесполезно расходуется.
Добавил параметр thread-level с перечислением уровней, которые нужно отображать через запятую, например user.json?threads&thread-level=hidden, user.json?threads&thread-level=bookmarked, user.json?threads&thread-level=bookmarked,replied,op, по умолчанию thread-level равен bookmarked,replied,op,hidden.

>>28677
/api/threads.json?since=2012-02-22 16:46:22 как-то так, например.
>> No.28687 Reply
>>28685
replied и op не работают, но за остальное - спасибо.
> /api/threads.json
Интересно, сколько еще недокументированных возможностей есть у движка?
>> No.28688 Reply
>>28687
Ну, я и не писал, что они работают сейчас.
>> No.28708 Reply
>>28675
> если бы на Доброчане был rss
В /lor/ есть скрипт dobrochan-to-rss.
>>28688
> Ну, я
А можно попросить проверить полноту задокументирования текущего функционала?
>> No.28719 Reply
>>28708
Проще писать сюда, какие данные нужны. Ибо даже если АПИ нет, для выдачи существующих данных новый прикрутить - 3 минуты.
>> No.28725 Reply
>>28719
Хочу апи для вывода списка сообщений, которые удалены или появились после премодерации без загрузки полного списка сообщений.
И еще интерфейс запроса страниц доски /{board}/{page}.json с выводом текста сообщений в html формате.
Давно уже хочу.
>> No.28726 Reply
>>28725
С удаленными постами после ввода уведомлений. С премодерацией - пока я склоняюсь к варианту автоматически пихать раскрытые посты в конец треда, с новым дисплейайди и новой датой, так всем удобнее будет. Но это тоже после уведомлений.
Про доски - видел выше, у меня в туду записано, но там есть пока нюансы. Проще сделать отдельно /api/board/..., как с тредами.
>> No.30715 Reply
File: 05-felicia-01.jpg
Jpg, 55.38 KB, 640×360 - Click the image to expand
edit Find source with google Find source with iqdb
05-felicia-01.jpg
Тактический бамп.
Как дела, админы?
>> No.30883 Reply
File: wpid-Himatsubushi_Sora_no_Woto_-_01_-_H264_-_720p_-_E83AD672_7-500x281.jpg
Jpg, 26.35 KB, 500×281 - Click the image to expand
edit Find source with google Find source with iqdb
wpid-Himatsubushi_Sora_no_Woto_-_01_-_H264_-_720p_-_E83AD672_7-500x281.jpg
Куда вообще писать о багах в API? Сюда или в багрепорты?
Существует проблема с закладками.
  • Создаем тред,
  • Добавляем его в закладки,
  • Удаляем тред.
Заходим в "Закладки" на сайте - треда нет.
Открываем user.json?threads - тред присутствует. Удалить его от туда никак не получается.
Исправьте, а?
>> No.30884 Reply
>>30883
Лучше сюда.
> Удалить его от туда никак не получается.
Починю, но не раньше 1го числа.
>> No.31026 Reply
File: Screenshot-asd.png
Png, 64.86 KB, 517×345 - Click the image to expand
edit Find source with google Find source with iqdb
Screenshot-asd.png
Собственно, скоро поддержка API будет добавлена в куклоскрипт: https://github.com/SthephanShinkufag/Dollchan-Extension-Tools/pull/130
Сразу возникает несколько вопросов/предложений:
1) Когда будет починен If-Modified-Since?
If-Modified-Since: Mon, 30 Apr 2012 21:13:29 GMT Last-Modified: Mon, 30 Apr 2012 21:13:29 GMT Status Code: HTTP/1.1 200 OK 2) Можно ли в JSON'е отдавать время в том же формате, что и на борде? В куклоскрипте есть функция замены времени на местное и для подгруженных постов она не будет работать. Пик релейтед.
>> No.31027 Reply
>>31026
> Когда будет починен If-Modified-Since?
Когда последний раз проверял, всё работало. Прозреваю, опять из-за богомерзких таймзон преобразование времени сбилось.
На этой неделе заменю тогда везде на E-Tag.
> Можно ли в JSON'е отдавать время в том же формате, что и на борде?
JSON предполагает машиночитаемый формат, поэтому используется ISO. Преобразование из ISO в любой другой формат по идее поддерживается любым языком, скорее всего и жабаскриптом.
В принципе, можно, конечно, добавить отдельный ключ, но проще конвертировать на клиентской стороне.
>> No.31030 Reply
>>31027
> JSON предполагает машиночитаемый...
Ладно. Буду преобразовывать регексом.

Ах да, есть ли АПИ для получения удалённых сообщений из треда?

Алсо, что отдаёт JSON при получении новых постов, если тред был удалён?
>> No.31031 Reply
>>31030
> Ах да, есть ли АПИ для получения удалённых сообщений из треда?
Сами удаленные сообщения (содержание), естественно, получить без модераторских привилегий нельзя.
Список будет когда-нибудь потом.
> Алсо, что отдаёт JSON при получении новых постов, если тред был удалён?
Если тред удален, все апи для него будут возвращать ошибку "тред не существует", ЕМНИП. Или ошибку "тред удален", не помню точно, работает ли последняя.
>> No.31032 Reply
>>31031
> Список будет когда-нибудь потом.
Ладно, периодически буду просматривать эту ветку.
> Если тред удален, все апи для него будут возвращать ошибку "тред не существует"
Т.е. можно проверять так: if(json['error'] && json['message'].toLowerCase() === 'тред не существует') { /* тред удалён */ }?
>> No.31034 Reply
>>31032
Не, ошибка на английском, просто лень смотреть код.
Создал@удалил тред, вот пример: http://dobrochan.ru/api/thread/156292/all.json
>> No.31035 Reply
>>31034
Хм, надо же, даже сам тред возвращает.
>> No.31036 Reply
>>31035
А, ну да, баг был в длинной форме, т.е. http://dobrochan.ru/api/thread/d/31033/all.json - ошибка.
>> No.31037 Reply
>>31034
Ага, спасибо. Сделал так: if((json['result'] || {})['__class__'] === 'DeletedThread') { /* тред удалён */ }.
>> No.31038 Reply
>>31036
http://dobrochan.ru/help/api
> Ответ в json/xml содержит либо объект result либо объект error.
Объекта error в http://dobrochan.ru/api/thread/d/31033/all.json я не вижу. Баг? Или ошибка в хелпе?
>> No.31039 Reply
А тут http://dobrochan.ru/api/thread/d/31033/new.json?message_html&new_forma[...]31033 объект error есть. Странно это.
>> No.31040 Reply
>>31038
Отсутствие нужных флагов.
http://dobrochan.ru/api/thread/d/31033/all.json?new_format
>> No.31041 Reply
>>31040
А, ну всё тогда. Спасибо.
>> No.31062 Reply
File: filicia_heideman_by_darkhorsedommi-d3h8pur.jpg
Jpg, 134.12 KB, 900×1289 - Click the image to expand
edit Find source with google Find source with iqdb
filicia_heideman_by_darkhorsedommi-d3h8pur.jpg
>>30884
Мир, труд, май вам, админы!
И не забывайте про труд. Бага все еще висит.
>> No.31199 Reply
>>31026
Last-Modified должен корректно работать. До следующего перехода на зимнее время.
Но лучше сразу везде в коде предусмотреть E-Tags, ибо Last-Modified чуть позже из всех запросов уберу.
>> No.31216 Reply
>>31199
Ага, действительно работает! Я думаю, сегодня это многие заметили.
>> No.31550 Reply
File: -HorribleSubs-_Sora_no_woto_-_03_-720p-.mkv_snapsh.jpg
Jpg, 87.24 KB, 1280×720 - Click the image to expand
edit Find source with google Find source with iqdb
-HorribleSubs-_Sora_no_woto_-_03_-720p-.mkv_snapsh.jpg
А почему HEAD запросы к sign.json и unsign.json теперь выдают 405?
Какие еще неожиданные радости мне стоит ожидать?
>> No.31564 Reply
>>31550
Потому, что они никогда HEAD и не поддерживали и по сути выполняли GET.
> Какие еще неожиданные радости мне стоит ожидать?
Замену Last-Modified на ETag во всех API.
Надо документацию обновить, лол.
>> No.31582 Reply
>>31564
Раз уж вы опять взялись за пилинг сайта, добавьте вывод досок в message_html формате, плиз.
>> No.31671 Reply
>>31582
> вывод досок
Что это?
/d/index.js и т.д.?
>> No.31674 Reply
>>31671
Да, именно этот запрос. И его варианты со страницами вроде /d/4.js и т.д.
>> No.31756 Reply
Очень бы хотелось:
  • получать выдачу api в xml;
  • иметь возможность получить список доск с параметрами типа{ Tag='b',Name='Братство',Title='Доска обо всем'} способом, отличным от выдирания списка досок из js, затем запроса xhtml на каждую доску и выдирания названия и подзаголовка.
Было бы шикарно, если бы коллекции в xml-выдаче оборачивались в контейнер, тоесть вместо
<posts>
   <контентпоста1>
</posts>
<posts>
   <контентпоста2>
</posts>
Было
<posts>
   <post>
   <контентпоста1>
   </post>
   <post>
   <контентпоста2>
   </post>
<posts>

ЗЫ Если сильно дофига прошу, так и скажите - буду пилить грабли.
>> No.32383 Reply
Как я сейчас наблюдаю, в заголовке ETag содержится только дата/время последнего изменения информации. Тогда в чем его кардинальное отличие от применявшегося ранее Last-Modified?
>> No.32483 Reply
Господа разработчики, а кто для чего это АПИ использует? Может, кто-то уже запилил нормальную мобильную версию доброчана?

мимолюбопытствовал
>> No.32484 Reply
>>32483
Да, есть уже полноценный отличный клиент для Андройда.
>> No.32485 Reply
>>32484
А веб-версии нет? А то андройд-то далеко не у всех.
>> No.32486 Reply
>>32483
Еще есть скриптик dobrochan2rss или как-то так. Суть понятна из названия.
>> No.32803 Reply
>>32383
Отличия в семантике. ETag - просто строка, уникальная для какой-то конкретной версии страницы и не имеющая смысла. А Last-Modified это дата, которую фреймворк пытается интерпретировать, в том числе с пересчетом UTC/GMT зон (что периодически дает разницу в час между GMT и UTC).
Post was modified last time at 2012-07-13 05:39:05
>> No.33776 Reply
Добавьте, пожалуйста, в ответы апи заголовок Content-Length!
>> No.34135 Reply
Почему сервер может выдавать 503 в ответ на запросы к json api? Началось примерно сегодня утром.
Хотя старый доброридер работает нормально, его что - в исключения добавили?
>> No.34136 Reply
>>34135
полагаю, это что-то вроде защиты.
>> No.34137 Reply
>>34135
Из-за отсутствия кукисов с валидной сессией (более одного видимого поста). Временно до того, как исправлю баг, роняющий сервер.
>> No.34186 Reply
http://www.4chan.org/news
> release of a read-only JSON API
Видимо, кто-то из разработчиков случайно попал на Доброчан, и увидел заветную аббревиатуру "API". Или увидел Доброридер в гугломаркете.
>> No.34207 Reply
>>34186
И вот появилась первая борда, где через апи можно получить трипкод!
Но на основе их интерфейса нельзя сделать полноценный клиент. Текущая реализация больше подходит для юзерскриптов. Запросов к доскам нет, отдельные посты тоже получить нельзя, только новые сообщения - тоже. Зато то что есть очень понятно и хорошо документировано.
>> No.34788 Reply
File: 81381.jpg
Jpg, 28.81 KB, 225×350 - Click the image to expand
edit Find source with google Find source with iqdb
81381.jpg
Я уже почти год прошу добавить в интерфейс запроса страниц доски /{board}/{page}.json вывод текста сообщений в html формате (параметр message_html). >>26304, >>28519, >>28725, >>31582
Может сжалитесь наконец и сделаете эту фичу?
>> No.34841 Reply
Только начал разбираться в пхп, не забрасывайте помидорами.
Делаю запрос с помощью filegetcontents('http://dobrochan.ru/api/thread/info/b/1.json'), получаю ответ - Search bots disabled for a while. Запрос из браузера проходит нормально.
Что я делаю неправильно? Если RTFM - то ткните пальцем, пожалуйста.
>> No.34846 Reply
>> No.34847 Reply
>>34846
Копал в сторону .htaccess , не помогло. Это у меня руки кривые, и от смены юзерагента все заработает?
Спасибо.
>> No.34852 Reply
>>34846
Все, разобрался, спасибо.
>> No.35695 Reply
Ой, доброадмины, ответьте на вопрос, чому нельзя забирать json с помощью wget? На самом деле то можно, но пришлось анально огораживаться
Написано же, что можно делать черпалку через api.

У меня черпалка на sh (wget + php), которая запихивает в мой любимый awesome данные.
>> No.40849 Reply
File: slowbros.png
Png, 21.72 KB, 348×353 - Click the image to expand
edit Find source with google Find source with iqdb
slowbros.png
А API для постинга уже запилили?
>> No.40862 Reply
File: slowbros.png
Png, 21.72 KB, 348×353 - Click the image to expand
edit Find source with google Find source with iqdb
slowbros.png
А куда делся пост об API для постинга?
Оно таки появилось?
>> No.40863 Reply
>>40849
Нет, но для отдельных приложений может быть сделано исключение.
>> No.41305 Reply
Приветствую Вас, доброадмины!
ПОдскажите, как ВЫ реализовали в wakab'e:
1) Одновременное прикрепление в сообщение нескольких картинок?
2) Кнопочку "развернуть тред"?
Спасибо!
>> No.41306 Reply
>>41305
Это не вакаба, это ханабира. Ничего общего, кроме дизайна, между ними нет, ханабира написана на питоне на основе фреймворка Pylons, вакаба написана на перле.
>> No.41307 Reply
File: 1366510461999.jpg
Jpg, 20.71 KB, 370×297 - Click the image to expand
edit Find source with google Find source with iqdb
1366510461999.jpg
>>41306
Чувствую себя бакой-слоупоком -_-

А вот снизу приписка wakaba+futaba - кое-какие возможности wakab'Ы используются?
>> No.41343 Reply
>>41307
> кое-какие возможности wakab'Ы используются?
Используется идея и дизайн, лол.
>> No.41450 Reply
А почему, собственно, так долго загружается JSON? Даже на толстых каналах 32 КБ грузятся от 3 до 6 секунд.
>> No.41900 Reply
File: 1.py
Py, 0.00 KB, 0 lines - Click the image to get file
view edit
1.py
>>24370
И снова здравствуйте, доброчаньки.
Я принёс вам забавный скриктик, который проверяет активность тредов, выводит последний ответ, а так же интегрирован в awesome. Если понравится, могу пилить дальше всякие плюшки.

Сразу прошу прощения у питонщиков ибо это не мой профильный язык. Собрано за полдня на коленке
>> No.41954 Reply
>>41900
Я, если честно, не понял, что он делает. Можешь описать ещё раз поподробнее? И что такое awesome?
>> No.41964 Reply
>>41954
awesome wm - тайлинговый менеджер окон для linux. Подробнее можешь почитать в интернете.

А сам скрипт раз в 30 секунд проверяет состояние переданных ему в переменной urls тредов на наличие новых постов и если таковые есть, оповещает об этом юзверя. В целом типа вишмастера, только не вишмастер. Насчёт работоспособности на Шиндоуз я не уверен, ибо у меня её нет под рукой
>> No.41982 Reply
>>41964
> типа вишмастера
Удаляет разделы диска что ли?
>> No.41985 Reply
>>41982
когда ты научишься читать до конца няша?
> типа вишмастера, только не вишмастер
>> No.42189 Reply
Нужен API для получения списка удалённых из треда постов. Просто массива с номерами постов будет вполне достаточно. Давно же обещали, а так и не сделали.
Что-то вроде такого:
/api/thread/109992/deleted.json
>> No.42587 Reply
Как-нибудь можно получить инфу о новых постах на досках, кроме как расковырять http://dobrochan.ru/frame.xhtml ?
>> No.42588 Reply
Можно ли подгружать посты, которые были сняты с премодерации?
>> No.42629 Reply
>>42588
Так да или нет?
>> No.42674 Reply
>>25963
>>34207
Тоже поддержу вопрос о трипкоде. Можно его всё же добавить в json?
>> No.43340 Reply
>>42587
Осилить жысон, как это сделал я в скриптике.
Правда надо его немного перепилить для этого, но я думаю в скором времени на сишке отрисовать прогу для красноглазых коим и являюсь
>> No.43342 Reply
>>43340
Ты невероятно оперативен анон, не говоря уже о том, что не дал собственно ссылку на джсон, по которой скрипт ханабиры и обновляет фрейм.
> прогу для красноглазых
А мог писать на кроссплатформенном фреймворке, как и полагается всякому порядочному швабодколюбу.
>> No.43357 Reply
>>43342
/api/chan/stats/diff.json

Он же из кода выковыривается за пару секунд.
>> No.43361 Reply
>>43342
Шиндоуз проблемы. Не грусти, будет тебе поддержка твоей плиточной недосистемы.

#ifdef WIN_32
...
#endif

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

Но это всё сраная лирика, так что не обращай особо внимание
>> No.43366 Reply
>>43361
> плиточной
Ват?
> недосистемы
У нас хотя бы игры есть.
> #ifdef WIN_32
И будешь всё ручками делать? А если только консоль, то в идеале всё и так должно работать без хаков.

Осло, при чём тут жава? Осло, скажи, какой у тебя телефон, я посмеюсь.
>> No.43367 Reply
>>43366
> > плиточной
> Ват?
Восьмёрка, да и сперму сюда тоже можно причислить.
> У нас хотя бы игры есть.
Да что ты говоришь? Играю в X3 и L4D, доволен.
> И будешь всё ручками делать?
Осилил бы ты уже для себя правильные редакторы и паттерны программирования, а потом бы мы с тобой поговорили.
> какой у тебя телефон
У меня две ноклы, самый дешёвые, хотя я могу позволить себе и ваши любимые лопаты. Телефон должен звонить, а не свистопердеть, для этого вполне хватает недобука, который на ура трудится уже 5 лет.

Посмеялся?
>> No.43370 Reply
>>43367
> Восьмёрка, да и сперму сюда тоже можно причислить.
Ещё с хп сижу на классической схеме аля 98.
> X3
Окей.
> L4D
Шутан не игра.
> правильные редакторы и паттерны программирования
При чём тут редакторы и тем более паттерны? Перечитай пост.
> Посмеялся?
А то. Так и представляю, как ты с нетбуком будешь корячиться, если в интернет понадобиться выйти на улице. А ещё на андроиды няшные казуальные игры есть, на пека оно всё шароварное.
>> No.43456 Reply
>>43370
> При чём тут редакторы и тем более паттерны? Перечитай пост.
Ты не просто жирный, а ещё и ебанутый. В нормальных редакторах настраивается автодополнение и не надо каждый раз бить ручками одно и то же.
> с нетбуком будешь корячиться
Продолжаешь свою ебанутость. Мне не надобится выйти в интернет на улице - раз, если вдруг совсем пиздец распидарасило всё в кровь кишки - есть пара людей, кому можно позвонить и они всё что надо интернете найдут - два. Я не на столько привязан к сети, как ты, видимо. Хотя вроде админ 5 серверов и 2 высоконагруженных проектов. Может я просто чего-то не понимаю в этой жизни.

А вообще сходи к венерологу и похудей, потом поговорим
>> No.43457 Reply
>>43456
> Я не на столько привязан к сети, как ты, видимо. Хотя вроде админ 5 серверов и 2 высоконагруженных проектов.
А бандерлог от этих интернет-баталий у тебя не хуже, чем у школьника Васи из 6 "В".
мимозаметил
>> No.45037 Reply
Пытался запилить бэкап закладок, возникла проблема с их массовым восстановлением - при посылке нескольких GET запросов подряд, проходят якобы все, но на деле Доброчан добавляет только одну закладку. ВТФ и что как это чинить?
>> No.45040 Reply
>>45037
Отсылай по очереди
>> No.45264 Reply
File: fail.png
Png, 37.43 KB, 938×383 - Click the image to expand
edit Find source with google Find source with iqdb
fail.png
Начал переносить свой мэдскиллз с локалхоста, в результате вылез такой момент: при попытке забрать json через curl клаудфларе срывает башню и, собственно, пикрелейтед.

CURLOPT_COOKIESESSION, CURLOPT_COOKIEFILE и CURLOPT_COOKIEJAR заданы, если что.
На всякий случай, функция:
`
function fetchjson($jsonurl) {
$ch = curl_init($json_url);
$options = array(
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_USERAGENT      => 'Mozilla/5.0 (X11; Linux i686; rv:22.0) Gecko/20100101 Firefox/22.0',
  CURLOPT_HTTPHEADER     => array('Content-type: application/json'),
  CURLOPT_COOKIESESSION  => true,
  CURLOPT_COOKIEFILE     => COOKIE_FILE,
  CURLOPT_COOKIEJAR      => COOKIE_FILE
);
curl_setopt_array($ch, $options);
return curl_exec($ch);
}
`
>> No.45269 Reply
>>45264
> function fetchjson($jsonurl) {
Я знаю магию.
function fetch_json($json_url) {
И покажу, как её творить:
function fetch*_*json($json*_*url) {
>> No.45297 Reply
>>45269
А ты смешной.
>> No.45299 Reply
>>45297
Спасибо. Мне действительно приятно, что я заставил тебя улыбнуться.
>> No.45320 Reply
>>45269
Разметка-кун, научи трифорсить.
>> No.45326 Reply
>>45320
 A
A A
Учись.
>> No.45327 Reply
Наши, допилите апи, чтоб api/thread/{thread_id}/sign.json тоже работало.
>> No.45454 Reply
Я, наверное, туплю, но
wget http://dobrochan.com/api/thread/264001/all.json
> Автоматические запросы к Доброчану разрешены только через специальный API.
Э-э… Но я ведь пользуюсь "специальным API, нет?".
>> No.45484 Reply
File: talking_captcha.png
Png, 0.91 KB, 300×20 - Click the image to expand
edit Find source with google Find source with iqdb
talking_captcha.png
>>45454
Меняй User-agent же. Доброчан не пускает самых очевидных ботов дальше такой заглушки.
>> No.45487 Reply
>>45484
Об этом я догадался, но непонятен вообще смысл сообщения, потому как с юзерагентом он пускает вообще куда угодно (специально сейчас проверил на этой странице).
>> No.47361 Reply
Админы, слушайте, доделайте уже закладки, иначе люди так и будут грузить добрачик миллионом запросов.
Например единственный метод, который я пока знаю для проверки на появление новых сообщений - использовать /last.json?count=1 для каждого отдельного треда.
Если у меня их 50 штук? И если меня 50 штук?
В общем задумайтесь, няши, дело вроде не хитрое, а разгрузит сервер неплохо.
>> No.47368 Reply
>>47361
> Например единственный метод, который я пока знаю для проверки на появление новых сообщений - использовать /last.json?count=1 для каждого отдельного треда.
Нет, правильный метод это использовать http://dobrochan.com/api/thread/109992.json и проверять last_modified
> Если у меня их 50 штук? И если меня 50 штук?
Прям щас лучше уж 50 thread запросов, чем 1 запрос к bookmarks.

Но да, так как букмарки задолбали в их текущей реализации, постараюсь сегодня переписать и сделать вывод в жсон заодно.
>> No.47373 Reply
>>47368
> проверять last_modified
А разница, что там один запрос, что тут один запрос.
> Прям щас лучше уж 50 thread запросов, чем 1 запрос к bookmarks.
Неужто там всё так сложно? Ну давай я тебе помогу.
>> No.47374 Reply
>>47368
> > Если у меня их 50 штук? И если меня 50 штук?
> Прям щас лучше уж 50 thread запросов, чем 1 запрос к bookmarks.
Кстати не 50, а 2500. А вот если букмарк пользовать, то всего 50.
>> No.47375 Reply
>>47373
> А разница, что там один запрос, что тут один запрос.
Разница в стоимости выполнения. Запросы к таблице постов намного дороже, чем к таблице тредов.
>> No.47376 Reply
>>47375
Я так понимаю структура примерно следующая: tblthreads%boardname% tblposts%boardname%
Ну тогда да, тредов ощутимо меньше, чем постов.
>> No.47377 Reply
>>47376
скушал разметку
tbl_threads_%board_name%
tbl_posts_%board_name%
>> No.47395 Reply
>>47375
> Запросы к таблице постов намного дороже, чем к таблице тредов.
В самом деле? Так может пофиксить всего один символ >>43298 ?
>> No.47473 Reply
>>47368
Ну что, мой друг, ты как всегда возложил на идею API?
>> No.47526 Reply
А таки у куда писать, чтобы иметь постинг-рабочий UserAgent и какие справки в поликлинике для этого брать надо?
>> No.47537 Reply
>>47526
Для начала смириться с тем, что всем наплевать.
Дальше как пойдёт. Программер объявился, бзднул в лужу и пропал узнаю себя, да
>> No.47538 Reply
>>47526
У меня летом работало с любым, неужто запретили уже?
>> No.47541 Reply
>>47537
> бзднул в лужу
   фрибзднул в лужу
>> No.47567 Reply
>>47541
Я не уверен, что Зой использует именно эту версия юнипсов
>> No.47902 Reply
А есть ли какой-то способ узнать без дополнительных запросов, указывает ли ссылка вроде >>1234123412 на сообщение?
Как, например, куклоскрипт это определяет? Ссылки на сообщения в треде - это понятно. А остальные?
>> No.47903 Reply
>>47902
> Как, например, куклоскрипт это определяет?
Открой да посмотри.
>> No.47905 Reply
>>47903
А, да, нужно использовать message_html, что-то я ступил.
>> No.50948 Reply
Аноны, объясните балбесу, дергаю /api/chan/stats/diff.json, все хорошо, но вот как сказать API'шке, что я прочитал, скажем, /b/ и надо сбросить счетчик?

капча шитьминетровнымсебясиреневогополучилась явно на что-то намекает
>> No.50950 Reply
>>50948
Дёрнуть индекс соответствующей борды, как мне кажется.
>> No.50952 Reply
>>50950
Я уверен что есть другой путь, дорогой вызов иначе получается. Пойду в тред к ведроидам, может там подскажут.
>> No.54051 Reply
File: 1225568730053.jpg
Jpg, 12.14 KB, 344×328 - Click the image to expand
edit Find source with google Find source with iqdb
1225568730053.jpg
Полноценного апи для досок нет. Недокументированная фича /b/0.json возвращает только в старом формате (что ещё куда ни шло) и не форматированные сообщения, что совсем печально. Если я буду отдельно запрашивать последние 10 постов для каждого треда на странице, это сильно жирно будет?
>> No.54729 Reply
>>54051
> Недокументированная фича /b/0.json
Ого благодарю, не знал.
> и не форматированные сообщения
Да и не нужны они вообще, display_id десяти последних например, более чем достаточно IMO

А есть ли какая нибудь недокументированная фича что бы сообщения об ошибках "неправильно введена капча" "не поддерживаемый формат" итд. смотреть?
>> No.54735 Reply
>>54729
> не нужны
Кому не нужны? Чтоб хтмл получить, приходится по отдельному запросу на каждый тред отправлять. И если так две доски с небольшим промежутком открыть, то получим 503, ибо Доброчан не любит частые обращения к апи.
Апи для постинга нет вообще, насколько я знаю, там простр возвращается редирект на соответствующую страницу.
>> No.54736 Reply
>>54735
> если так две доски с небольшим промежутком открыть, то получим 503, ибо Доброчан не любит частые обращения к апи
А как ты тогда "10 постов для каждого треда на странице" тоже самое же будет или я понял не так?
> Апи для постинга нет вообще, насколько я знаю, там простр возвращается редирект на соответствующую страницу.
Ну да, редирект, но
> /error/post/6947209
Нельзя как нибудь вот это запросить типа
> /api/post/error/6947209.json
чтоб просто текст получить?
>> No.54759 Reply
>>54736
Да, то же самое. На тот момент я как-то забыл, что чтобы взять оп-пост и десять последних постов, надо аж два запроса на тред.
> Нельзя как нибудь вот это запросить типа
> > /api/post/error/6947209.json
> чтоб просто текст получить?
Не слышал о таком.
>> No.55016 Reply
>>54759
> Да, то же самое. На тот момент я как-то забыл, что чтобы взять оп-пост и десять последних постов, надо аж два запроса на тред.
Ну тогда парсер постов только писать. В принципе это даже в некотором роде плюс, так сообщения от api будут еще короче и ссылки на ютуб будут не коцаные.
>> No.55334 Reply
А есть возможность получить настройки каждой доски единым json? Есть /api/chan/stats/diff.json, /api/chan/banners.json, а как получать всякие штуки вроде максимального количества файлов, поддерживаемые форматы файлов, скрытие имён и прочее, что отображается обычно под формой постинга.

Алсо реквестирую обновление help://api до текущей ситуации. Много чего недокументированно же. Пресловутые /b/0.json, /api/chan/stats/diff.json и прочие лимиты на количество запросов к api. В идеале с полным описанием формата ответов.
>> No.55355 Reply
>>55334
> максимального количества файлов, поддерживаемые форматы файлов
Большинство таких вещей давно уже одинаково для всех разделов.
>> No.55367 Reply
File: boards.json.js
Js, 0.03 KB, 0 lines - Click the image to get file
view edit
boards.json.js
>>55355
Большинство, но не все. Например на /mu/ можно пилить сразу 10 файлов в посте, тогда как везде 5. Ибо filesmaxqty = 10. Или в /di/ deletethreadpost_limit = 20, тогда как на большинстве досок 100.
Вручную я что-то такое собрал см. boards.json.js. Кстати нельзя вот запостить json в качестве файла.

Кстати можно было бы попробовать запилить новый api без обратной совместимости со старым. Например по адресу api.dobrochan.com|org|ru
>> No.55374 Reply
File: Screen-Shot-2015-02-24-at-10.47.03.png
Png, 109.58 KB, 959×776 - Click the image to expand
edit Find source with google Find source with iqdb
Screen-Shot-2015-02-24-at-10.47.03.png
К концу недели возможно запилю свой поисковик по Доброчану. Ато плохо, что встроенный не робит.

Индексация даже работает. Пять тхредов в минуту это нормальная нагрузка или можно больше/меньше? Архив я так понимаю придётся парсить вручную?
>> No.55377 Reply
>>55374
Если от этого не будет тормозить Доброчан, то ты просто няша.
>> No.55378 Reply
>>55377
Врятли. Нагрузка сравнима с десятком открытых вкладок при наличии юзерскрипта автообновления.
>> No.55379 Reply
>>55378
> Нагрузка сравнима с десятком открытых вкладок при наличии юзерскрипта автообновления
Нет, разумеется.
Во-первых нормальный скрипт автообновления использует апи загрузки новых постов, что даже в худшем случае, когда новые посты вообще есть, загружает всего пару сообщений. А при скачивании доброчана тред грузится со всеми сообщениями сразу, да еще в отрендеренной форме (html дороже json, в т.ч. из-за кривизны используемой библиотеки шаблонов, у которой в результате сильный оверхед).
Во-вторых автообновление запрашивает одни и те же треды, т.е. те, которые находятся в кэше вплоть до кэша запросов. Скачивание запрашивает разные, и более того, старые треды, что делает необходимым чтение данных с жесткого диска.

Честно говоря, с учетом всего этого упорства в попытках скачать старые треды, действительно похоже проще выложить публично sql-дамп, очищенный от личных данных.
>> No.55400 Reply
>>55379
Бот опрашивает api и json досок. Самая большая нагрузка будет в период первой полной индексации. Потом будет слежение за первыми несколькими страницами с учётом /api/chan/stats/diff.json. При этом всём бот использует одну и ту же добросессию.
> Честно говоря, с учетом всего этого упорства в попытках скачать старые треды, действительно похоже проще выложить публично sql-дамп, очищенный от личных данных.
Для меня это только решит проблему с первой индексацией. Потом всё равно будет реалтайм слежение за досками.
Идеально для меня было бы вот такое api: /:board/all.json и /:board/archive.json или /api/all.json?board_id=43&archived&autosage со списком всех тхредов определённой доски. Примерно вот в таком формате:
{
  ":board": {
    "threads": [
      {"thread_id": 452365342, "display_id": 5235432, "board_id": 34, "last_hit": "2006-01-02 15:04:05", "last_modified": "2006-01-02 15:04:05" ...остальные настройки треда...}
    ]
  }
}
Т.е. без постов, а значит и без рекурсивных запросов. Я в любом случае буду опрашивать обновлённые треды полностью премодерацию и прочее ведь никто не отменял. При этом я могу, скажем, опрашивать /b/ раз в час или два, а слоудоску вроде /di/ или /hau/ раз в день и реже.
>> No.55416 Reply
>>55400
Оно ещё конечно не готово, но вот http://dobrosearch.ngrok.com/
Полная индексация не проводится пока. Чисто потестить пока врубил.
>> No.55419 Reply
>>55416
Неплохо. Введи, пожалуйста, exact search и поддержку вайлдкард (*,?, []) или мб даже лучше ограниченные регулярки.
>> No.55461 Reply
Багофича такая багофича. Если вместо /api/chan/stats/diff.json написать что-то вроде /api/chan/stats/diff.j или /api/chan/stats/diff.all или ещё как с ошибкой, то собсна сабж.
>> No.55815 Reply
>>55416
Уже не работает?
слоупок
>> No.56086 Reply
>>55815
Ещё не работает. Будет примерно в то же время, что и доброчановский апдейт. Наверное.
слоупок-программер
>> No.56094 Reply
Обнаружил недокументированную возможность

/api/post/{board}/{thread}/{post}.json?message_html&new_format&thread

Вернет информацию о доске + информацию о треде + информацию о посте

Доска:{ ... тред[1]:{ ... пост[1]:{ ... } } }
>> No.56095 Reply
>>56094
Н-но ведь про это написано в справке.
>> No.56321 Reply
>>56095
Про параметр &thread не написано же.
>> No.56323 Reply
>>56321
Твоя правда.
>> No.57066 Reply
>>24370
Апи вообще кто-нибудь занимается сейчас?
Хотелось бы апи для списка тредов на доске.
Недокументированного явно не хватает, т.к. нужен распаршенный хтмл, а не исходная разметка постов.
>> No.57237 Reply
>>24370
> /utils/post/edit/109992/2145167/
А вообще свои посты есть возможность редактировать? (как нибудь там по паролю или типа того.)
>> No.61008 Reply
Раз такие дела, то может теперь апи немного поправят и дополнят?
>> No.61738 Reply
Реквестирую фичу чтобы при запросе новых постов в ответе были трипкоды\флажки\флаги стран.
>> No.61806 Reply
File: -.png
Png, 86.94 KB, 1519×332 - Click the image to expand
edit Find source with google Find source with iqdb
-.png
Добрый день.
Недавно на Доброчане что-то поменялось, и теперь кукла не может правильно определить трипкоды/флажки своих (моих) постов, потому что не может их получить по запросу. Вот что сказали куклоделы: пикрилейтед.
Не могли бы вы это как-то поправить?
>> No.69959 Reply
Доброняши, хелп, алярм, ворн !
апи выдает вот это
class=\"message\">\u0412\u043d\u0435\u0437\u0430\u043f\u043d\u043e ....

А можно пожалуйста просто готовыми буковками ?
Так-то я понимаю что юникод все дела, но тот кузнечик на котором крутится запрос считает парсинг неподъемным.
>> No.69977 Reply
>>69959
> кузнечик
Что?

Этим должен заниматься твой парсер JSON.
>> No.69981 Reply
>>69977
> заниматься твой парсер JSON.
Так он и занимается, но съедает весь хилый ресурс железа.
А вот было бы буковками сразу то былоб полегче.
>> No.70012 Reply
>>69959
Вот кстати согласен. К тому же, отдача в готовом текстовом виде, без эскейпа, солидно уменьшила бы вес отдаваемого файла и ускорила загрузку на мобильных телефонах.
Но хер там мы что получим.
>> No.70851 Reply
А какие вообще ключи есть недокументированные к пост запросам?
/b/post/new.xhtml?X-Progress-ID=${тукущая дата в милисекундах} тогда вместо ошибки в сообщении приходит страница перенаправляющая на страницу с ошибкой.
Может еще что то есть полезное или вообще ответы в формате /b/post/new.json ?
>> No.71973 Reply
А почему у вас нет файла `{board}/catalog.json`, как на других досках?
Постраничный вывод вида `{board}/0.json`, и т.п. — не вариант.
`{board}/index.json` — судя по всему, то же самое, что `{board}/0.json`.
>> No.73139 Reply
Есть ли какое-то решение вопроса с ошибкой 503 при использовании JSON API? Сервер постоянно унижает и порой врубает безумные таймауты, вплоть до 10 секунд. И происходит это очень часто.
Как нужно обращаться к апи, чтобы не получать блокировок вообще? Пробовал выставлять большие интервалы между запросами, но это тоже рано или поздно даёт сбой.
Не уверен, что получу ответ, конечно, но хотелось бы.


Password:

[ /tv/ /rf/ /vg/ /a/ /b/ /u/ /bo/ /fur/ /to/ /dt/ /cp/ /oe/ /bg/ /ve/ /r/ /mad/ /d/ /mu/ /cr/ /di/ /sw/ /hr/ /wh/ /lor/ /s/ /hau/ /slow/ /gf/ /vn/ /w/ /ma/ /azu/ /wn/ ] [ Main | Settings | Bookmarks | Music Player ]