Скрипт для чтения комментариев любого пользователя
Навеяно постом http://old.reactor.cc/post/3643230Вкратце: пользователь muted решил написать скрипт (вот этот), который обрабатывает его комментарии: формирует .csv-файл с таблицей, куда включены данные по каждому из комментариев, а также .html-файл, представляющий собой интерактивный график с кликабельными точками, соответствующими тому или иному комменту.
Я же на его основе решил написать ещё один, вынимающий комментарии любого пользователя Реактора и данные по ним (ссылка)На вход этому скрипту подаётся юзернейм или же ссылка на профиль пользователя. Результат - .xlsx-файл - таблица с подробными данными по комментариям - и интерактивный график по аналогии с первоначальным скриптом
Как этим воспользоваться?
Для работы этого скрипта нужен Python (проверял на версии 3.6) и либы к нему (написаны в заголовке скрипта), а также скачать скрипт как .py-файл (кнопка clone в заголовке пасты на Pastebin). Когда все эти действия совершены, можно приступать.
Для работы скрипта в Windows можно использовать командную строку. При этом необходимо вначале указать конкретную папку, куда программа будет записывать выходные файлы. После чего указывается путь к интерпретатору Python, потом через пробел путь к скрипту, чтобы запустить его:
После того как началась работа скрипта, через некоторое время появляется надпись:
type 1 to enable reading mode
type 2 to enable continuation mode
type 3 to enable updating mode
>>
Первоначально вводим 1 (про два других режима будет написано ниже). После чего возникает ещё одно сообщение:
you have two options now: you can either enter username
or paste the link to his or her profile
type 1 to do the first thing and type 2 to do the other one
>>
Если вы собираетесь вводить юзернейм, набирайте 1, Enter, а потом копируйте юзернейм. Если для вас предпочтительнее копировать ссылку, то жмёте 2, Enter и потом копируете ссылку на профиль нужного пользователя. В данном случае для примера наберу 1 и имя какого-нибудь пользователя:
Доступ к комментариям осуществляется со страницы комментариев у пользователя (в данном примере http://old.reactor.cc/user/procxela/comments). При обработке каждого отдельного комментария скрипт получает ссылку на пост, проверяет, не был ли пост обработан ранее. Если нет, то осуществляется переход к посту по ссылке, а затем в посте ищутся все комментарии нужного пользователя и вынимается инфа из них: дата, время, ссылка на пост, ссылка на комментарий, рейтинг, текст и медиа (картинка или видео, если присутствует). Когда с данным постом скрипт отработал, то id этого поста запоминается, и скрипт больше не обрабатывает его.
В конце концов скрипт обрабатывает все страницы комментариев и сохраняет следующие файлы:
— Искомую таблицу в виде .xlsx-файла (в данном примере получилась такая таблица)
— Интерактивный график (например, такой. Чтобы увидеть результат во всей красе, скачайте файл и откройте скачанный файл)— Кроме того, через каждые 15 минут производится копирование в резервный файл data backup.xlsx. Если работа скрипта завершена успешно, то он больше не нужен
— Текстовый файл лога. В нём написано то же самое, что выдавала консоль. Опять же, если всё прошло нормально, то он не нужен.
Режимы работы скрипта
Как было уже указано, есть какие-то три режима у этого скрипта: reading mode, continuation mode, updating mode. Первый описан выше.
Второй режим (continuation mode)
Этот режим нужен, если по какой-то причине запись комментариев прервалась раньше времени. Как им воспользоваться?
Во-первых, опять запускаем этот же скрипт из той же папки, куда сохранялись файлы. Далее, после сообщения о выборе режима набираем 2, жмём Enter. После чего появится сообщение:
Enter name of the excel file or paste path to it
>>
Вот тут уже понадобится файл бекапа (сохранён в той же папке, к концу имени дописано слово backup). Пишем его имя или копируем путь к нему. А потом:
Для того, чтобы знать, какой номер страницы ввести, нужно зайти в лог-файл (сохраняется в той же папке как log.txt), найти самую последнюю надпись Successfully saved, а над ней - вторую снизу надпись вида page number %число%. Например,
Вводим это число и жмём Enter:
Таким образом, можно продолжать записывать комменты в уже существующую таблицу, начиная с некоторой страницы комментариев пользователя (он определяется автоматически по уже имеющейся в таблице информации). После успешного завершения continuation мода сохраняются те же файлы, что и в режиме чтения.
Третий режим (updating mode)
Этот режим нужен, если ранее была записана таблица всех комментариев какого-то пользователя, но с тех пор прошло достаточно много времени, и хотелось бы обновить таблицу новыми комментами. Воспользоваться им можно следующим образом:
При запросе режима нажимаем 3. Потом, как и во втором режиме, скрипт просит название файла или путь к нему, вводим его. А затем скрипт определяет, чьи это комменты, и начинает читать все комментарии этого пользователя с первой страницы до тех пор, пока не обнаружатся старые, уже записанные комментарии. При этом перед чтением новых комментов производится резервное копирование таблицы в ту же папку (только оно осуществляется уже единожды, а не каждые 15 минут, как в других режимах, так что если фейл, то надо начинать сначала).
Учтён так же тот фактор, что рейтинги отдельных уже записанных комментариев могли поменяться (которым на момент записи таблицы было не старше 2 дней). Скрипт находит новые значения рейтингов для них и перезаписывает в той же таблице, где они сохранены.
Чтение всех комментов, по моим подсчётам, выполняется со скоростью где-то 300-400 страниц в час (если комментов у пользователя больше, то скорость замедляется из-за бекапания больших таблиц).
Если тот или иной комментарий, доступный со страницы пользователя, не был прочтён, то это свидетельствует о том, что коммент оставлен или в посте, или в ветке комментариев, который(ая) в последствии был(а) забанен(а).
И немного данных напоследок
Проанализированы комментарии следующих пользователей (с ссылками на таблицы и графиками по ним):
Все занятые физическим трудом люди страдают реальными психическими проблемами, их работа это просто попытка адаптации, они в большинстве не то что могут что-то что не дается другим, а не могут ничего остального что позволяло бы зарабатывать на жизнь, как-то интегрироваться в общество. И год от года работы эта ситуация у них только усугубляется, поэтому очень мало таких кто сменил бы сферу деятельности достаточно долго занимаясь физическим трудом. Это кривая дорожка в бездну моральной и психической деградации. Ты просто превращаешься из полноценного человека во вьючный скот для решения бытовых задач. Творчество отнимает у тебя жизнь и дарит крылья, айти превращает свободный живописный поток твоего сознания в советскую ГЭС питающую завод замшелой пятилетки, но дает знание глубинных процессов и причастности к чему-то значимому, проституция лишает тебя общественного уважения и личного достоинства, но дает неоценимый опыт и знание человеческой натуры. Физический труд забирает у тебя все дав взамен горстку бумажек на которые ты можешь только купить себе отупляющего пойла чтобы после нехитрых развлечений вроде просмотра и обсуждения ТВ-передач, стычек утверждающих твое право самого агрессивного животного в загоне, дерьмовой еды удовлетворяться которой тебя приучили с совхозного детства и механической ебли наконец забыться тяжелым сном в котором ничего кроме образов этого скотного двора твоей жизни...
Все люди творческих профессий страдают от реальных психических проблем, их творчество это просто попытка адаптации, они в большинстве не то что могут что-то что не дается другим, а не могут ничего остального что позволяло бы зарабатывать на жизнь, как-то интегрироваться в общество. И год от года эта ситуация у них только усугубляется, поэтому очень мало таких кто сменил бы сферу деятельности достаточно долго подвизаясь на творческой ниве. Это кривая дорожка в бездну социальной дезадаптации и психической деградации. Ты просто превращаешься из нормального человека с его в чем-то наивными планами на жизнь, маленькими и большими мечтами и радостями в невротика зацикленного на оторванных от реальности образах поднимающихся из хтонических глубин темного колодца твоего сознания к невидимым в свете дня звездам на которые ты смотришь со дна. Физический труд отнимает твои силы, но не требует продать душу, айти превращает свободный живописный поток твоего сознания в советскую ГЭС питающую завод замшелой пятилетки, но дает знание глубинных процессов и причастности к чему-то значимому, проституция лишает тебя общественного уважения и личного достоинства, но дает неоценимый опыт и знание человеческой натуры. Творчество забирает у тебя все дав взамен горстку вымученных образов твоих болезненных видений в которые ты можешь разве что бесконечно всматриваться, вслушиваться, вчитываться переживая снова и снова этот подъем из темноты предвечных вод над которыми носился одинокий дух Создателя к звездам невидимым в свете людского дня где эти образы теряют форму, смысл и суть ускользающую из твоей жизни вместе с ними в мрачную глубину...