Как на Reddit скрипты получают количество голосов «за» и «против» комментария?

На Reddit люди могут публиковать комментарии, которые получают положительные и отрицательные голоса. Эта информация недоступна на самой странице, поэтому кажется, что для сбора этой информации используется что-то вроде API.

Я нашел скрипт, который делает это, но не могу определить, где в скрипте он извлекает эту информацию от. Может ли кто-нибудь указать мне соответствующую строку, откуда скрипт получает данные?


person Gary    schedule 01.06.2012    source источник


Ответы (2)


Каждый комментарий имеет data атрибутов:

<div class="thing id-t1_c4upmtm odd comment " onclick="click_thing(this)" data-fullname="t1_c4upmtm" data-ups="646" data-downs="83">

HTML-структуру Reddit действительно сложно понять, поэтому найдите способ перейти от идентификатора комментария к элементу, содержащему этот материал.

person Blender    schedule 01.06.2012
comment
Я вытащил этот HTML-код непосредственно из источника веб-страницы. Это соответствует комментарию. - person Blender; 02.06.2012
comment
Можете ли вы объяснить мне, что такое вещь? - person Blender; 02.06.2012
comment
Прочтите документацию по API. Хотя вещи иногда могут быть комментариями по классификации Reddit, это не то, что пользователи считают комментариями. ... Обычно это ссылки верхнего уровня. Комментарии обычно делаются о вещах. Обратите внимание, что это было давно, и я лично не использую Reddit, поэтому некоторые из них могут быть немного неправильными или устаревшими. Но ответ data-attribute не относится к тому, что большинство людей считает комментариями на Reddit. - person Brock Adams; 02.06.2012
comment
На самом деле для меня, используя Firebug, похоже, что эти атрибуты данных также появляются для комментариев, а также для представлений. Я не знаю, почему я пропустил это раньше, но спасибо, что указали на это. Кроме того, я также дал более раннее решение, потому что я думаю, что это все еще то, что делает скрипт, что странно, если он может просто получить данные через HTML, но я полагаю, что он просто делает это, потому что он захватывает другие данные вместе с плюсами и минусами . - person Gary; 08.06.2012
comment
Что ж, вы правы, данные теперь есть для комментариев и страниц пользователей. (Я мог бы поклясться, что неделю назад их там не было, но я не вижу журнала изменений для Reddit.) Очевидно, что эти данные были добавлены где-то в последние несколько месяцев — после того, как был написан этот скрипт. - person Brock Adams; 08.06.2012
comment
Эти атрибуты data- появились два месяца назад: github.com/reddit/reddit/commit/ - person Blender; 08.06.2012
comment
Именно тогда код был изменен, не обязательно (или даже вероятно), когда изменение вступило в силу на сайте. - person Brock Adams; 22.06.2012

Этот скрипт использует GM_xmlhttpRequest() для получения данных JSON для заданных комментариев или страницы пользователя.

Данные, возвращаемые GM_xmlhttpRequest(), доступны в строке:

var jsonText = response.responseText,data;

а затем анализируется функцией скрипта processTree(). На самом деле нет ни одной линии; для этой функциональности требуется большая часть скрипта.

На страницах комментариев кажется, что использование API — единственный способ получить отдельно голоса за и против.

person Brock Adams    schedule 01.06.2012