advanced.md
Пользуемся в удовольствие
Table of Contents
Различные формы запуска программы
После установки программы, все её возможности доступны даже после запуска простейшим способом: либо двойным щелчком по исполняемому файлу, либо без каких-либо параметров из командной строки. Такой запуск в Windows осуществляется из каталога, где развёрнута программа командой:
.\LJexport.py
или в другой форме
py -m LJexport
А в Linux это может быть
./LJexport.py
или без привязки к первой строки #!/usr/bin/python3
и реальному нахождению среды Python3 в системе:
python3 LJexport.py
Для простоты, в последующих примерах мы будем писать вызов программы в ситуации с Windows.
Пользовательский интерфейс
Если вы пользуетесь исполняемым файлом для Windows или пакет PyQt6 установлен в системе, то программа будет взаимодействовать с пользователем через интерфейс в специально отзывающемся окне. Если это оказалось невозможно, то диалог с пользователем произойдёт в окне терминала (если только диалог не был заранее отклонен ключом -D
). Пользовательский интерфейс и диалог дают все те же возможности, что и командная строка. Помощь пользователю предоставляется либо всплывающими подсказками либо текстовыми сообщениями и она идентична тексту выводимому с помощью ключа -h
, см. ниже полный список ключей командной строки.
Проверка работы скрипта из командной строки
-
Спросите у скрипта как его использовать, запустите в терминале:
LJexport -h
На экран должен быть выведен текст приведенный ниже в этом документе.
-
Запустите выгрузку статистики журнала юзернейм (например, это frank) за тeкущий год/текущий месяц:
.\LJexport.py -j vad-nes -s
Программа выведет на экран полученное задания и запросит либо
* подтверждение на его выполнение, либо
* предложит поменять параметры.
Сейчас просто нажмём Enter, и программ должна показать статистику дневника [Вадима Нестерова](https://vad-nes.livejournal.com/).
Если ошибок не выдано, то всё отлично, можно продолжать с другими журналами.
Примеры использования скрипта
-
Загрузка записей frank-а за текущий год и месяц без картинок (по умолчанию, без явно указанного ключа
-i
значения картинки не грузятся).\LJexport.py -j vad-nes
-
То же самое с картинками (
-i
) и откликами (-c
) за все месяцы (-m all
) текущего (по умолчанию) года.\LJexport.py -j vad-nes -m all -i -c
-
Выгрузка записей Вадима Нестерова за три последних его месяца 2020 года с картинками
.\LJexport.py -j vad-nes -у 2020 -m 10 11 12 -i
Смотри следующий раздел для полного описания каким образом могут быть заданы списки/диапазоны годов и требуемых месяцев для загрузки.
Полный список ключей командной строки
Если исполнить программу с ключом -h
, то следующее описание всех доступных ключей будет выведено на экран:
usage: LJexport.py [-h] [-j JOURNAL] [-y [YEARS ...]] [-m [MONTHS ...]]
[-f FOLDER] [-s] [-i] [-c] [-x] [-e] [-p] [-D] [-N] [-L]
[-v]
Загрузка записей из ЖЖ (LiveJournal) за какой-то период времени, возможно с
картинками, откликами и внешними ссылками
options:
-h, --help show this help message and exit
-j JOURNAL, --journal JOURNAL
ник журнала для загрузки
-y [YEARS ...], --years [YEARS ...]
укажите год(ы) для обработки; можно выбрать один год
(напр. 2011), список годов через пробел (напр. '2020
2021 2022') или диапазон через дефис (напр.
'2013-2017'). Если год не указан, то используется
текущий год. Если указать диапазон с открытым концом
(напр. '2008-') то будут загружены все годы начиная с
указанного по настоящее время—используйте с
осторожностью, так как многочисленные запросы могут
перегрузить сервер.
-m [MONTHS ...], --months [MONTHS ...]
укажите месяц(ы) для обработки; можно выбрать один
месяц (напр. 04 для апреля), список месяцев через
пробел (напр. '05 07 09' для мая, июля и сентября),
диапазон через дефис (напр. '06-11') или "all" для
всех месяцев года. Если месяц не указан, и выбран
только один год, то будет использоваться текущий
месяц. Если выбраны несколько лет и месяц не указан,
то подразумеваются все месяцы выбранных годов
-f FOLDER, --folder FOLDER
путь к папке, где будет сохранён журнал. По умолчанию
это текущая рабочая директория (можно поменять в
настройках)
-s, --stats если задан — обрабатывать только СТАТИСТИКУ записей,
не сохраняя их самих
-i, --images если задан — сохранять также и КАРТИНКИ используемые в
записи (по умолчанию в записи остаются только ссылки
на картинки)
-c, --comments если задан — сохранять также и ОТКЛИКИ на записи (по
умолчанию отзывы игнорируются)
-x, --external если задан — сохранять также страницы по внешним
ССЫЛКАМ в записи, преобразовав их в PDF. В записи
останутся изначальные ссылки и будут добавлены ссылки
на загруженные страницы (по умолчанию—не загружать
другие страницы)
-e, --english если задан — сообщении и отчёты будут на английском
независимо от настроек системы
-p, --persistent если задан — продолжат работу со следующим выбранным
месяцем даже если в текущем возникли проблемы
-D, --nodialogue если задан — не запрашивать подтверждение или затевать
диалог, сразу начинать работать
-N, --noindex если задан — не создавать указатель на все загруженные
записи этого дневника
-L, --nocrosslinks если задан — не связывать все загруженные записи
дополнительными ссылками в цепочку
-v, --version show program's version number and exit
Открытый код и больше информации https://gitflic.ru/project/v-v-kisil/ljexport
All command line options in English
Calling LJexport -h
will produce the following output:
usage: LJexport.py [-h] [-j JOURNAL] [-y [YEARS ...]] [-m [MONTHS ...]]
[-f FOLDER] [-s] [-i] [-c] [-x] [-e] [-p] [-D] [-N] [-L]
[-v]
Downloads entries from LiveJournal for certain period of time, if needed—with
images, comments and external links
options:
-h, --help show this help message and exit
-j JOURNAL, --journal JOURNAL
nickname of the journal to download
-y [YEARS ...], --years [YEARS ...]
specify years to use; it may be a single year (e.g.
2020), or space separated list (e.g. '2020 2021'), or
a simple range (e.g. '2013-2028'). If omitted the
current year is used. If an open-ended range is
indicated (e.g. '2008-') then all years starting from
the given year will be downloaded — use it with
caution, given a number of journal's posts >200/year,
it may overload your waiting time or server
-m [MONTHS ...], --months [MONTHS ...]
specify month(s) to use; it may be a single month, e.g
04 for April, or space separated list, e.g. '04 05'
for April, May etc..., or a simple range, e.g. 3-11,
OR 'all' for all months in given year(s). If omitted
for and a single year is selected, then the current
month is used. If many years are selected and '-m' is
omitted, then all months is assumed.
-f FOLDER, --folder FOLDER
path to the folder, where the journal shall be saved.
The default is the current working directory (maybe
changed at config)
-s, --stats if given — output only STATISTICS without posts
downloading
-i, --images if given — download IMAGES from posts too (they are
not downloaded by default)
-c, --comments if given — download COMMENTS to posts too (they are
not downloaded by default)
-x, --external if given — download external LINKS in posts and save
them as PDF files (they are not downloaded by default)
-e, --english if given — do messaging/logging in English despite of
system locale
-p, --persistent if given — continue with the next month despite of a
previous failure
-D, --nodialogue if given — do not ask confirmation or initiate
dialogue to start the process
-N, --noindex if given — do not create an index for all previously
downloaded posts
-L, --nocrosslinks if given — do not cross-link all previously downloaded
posts among themselves
-v, --version show program's version number and exit
Code source and further information: https://gitflic.ru/project/v-v-
kisil/ljexport
Что можно сделать с сохранёнными записями?
Средствами работы с файлами можно посмотреть отчёты все вместе в одном листинге за год или неск. лет, если нужно (например, командой more
, работающей с терминала во всех ОС). По скачанным записям средствами работы с файлами (grep
, cat
, sort
и т.п.) можно делать поиск и выборку текстов по содержанию/тэгам/временному интервалу, в т.ч. анализ на часто встречаемые слова/выражения и пр. — всё то, что можно делать с текстами. Каждый HTML файл обработывается функцией prettify в т.ч. для удобства поиска, т.к. сам html-код ЖЖ именно там, где идёт ваша запись вытянут в одну строку.
Дополнительные рекомендации
См. config.py
и следующие рекомендации чтобы ваc не забанили как бота: 1. скрипт можно использовать как есть, а можно вставить побольше и/или других (лучше других) своих user-agents, через запятую в поле внутри квадратных скобок к ключу-параметру “User-Agent” в функции random.choice(); последнее желательно и обеспечит меньший риск бана 2. не торопитесь: не уменьшайте время между запросами к серверу ЖЖ (ключ-параметр “pause” в config.py) если не хотите рискнуть, иначе ПО сервера ЖЖ вас тогда проще заметит как бота и забанит по IP 3. если торопитесь, то используйте системный VPN или proxychains 4. см. ниже примеры запуска скрипта 5. предупреждение: вас всё равно могут забанить как бота просто потому, что владельцы ЖЖ не хотят, чтобы его пользователи полностью контролировали свои записи: имели полнотекстовый поиск по ним, могли проверить актуальность ссылок на картинки или вообще имели наглость желать скачивать свои записи… а то и не свои.. ещё и анализировать свои или чьи-либо ещё тексты без связи с интернетом.. ай-яй-яй! 6. вы используете скрипт на свой страх и риск: старайтесь не перегружать бестолку сервер ЖЖ и не заваливать его многими тыщами запросов в сутки, записи можно сгружать и в расслабленном режиме — т.е. не боле 1-2 тысячи в сутки… а если вы шпарите по несколько десятков записей в день, то отвлекитесь на математику, чтобы посчитать за сколько месяцев вы можете сгрузить их себе, не выглядя для сервера слишком ботоголово…