advanced.md
Пользуемся в удовольствие
**Table of Contents**Различные формы запуска программы
После установки программы, все её возможности доступны даже после запуска простейшим способом: либо двойным щелчком по исполняемому файлу, либо без каких-либо параметров из командной строки. Такой запуск в Windows осуществляется из каталога, где развёрнута программа командой:
.\LJexport.py
или в другой форме
py -m LJexport
А в Linux это может быть
./LJexport.py
или без привязки к первой строки #!/usr/bin/python3
и реальному нахождению среды Python3 в системе:
python3 LJexport.py
Для простоты, в последующих примерах мы будем писать вызов программы в ситуации с Windows.
Проверка работы скрипта из командной строки
-
Спросите у скрипта как его использовать, запустите в терминале:
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 ...]] [-s]
[-i] [-c] [-n] [-e] [-p]
Загрузка записей из ЖЖ (LiveJournal) за какой-то период времени, возможно с
картинками и откликами
options:
-h, --help show this help message and exit
-j JOURNAL, --journal JOURNAL
ник журнала для загрузки
-y [YEARS ...], --years [YEARS ...]
укажите год(ы) для обработки; можно выбрать один год
(напр. 2011), список годов через пробел или запятую
(напр. 2012,2016,2019) или диапазон через дефис (напр.
2013-2017). Если год не указан, то используется
текущий год. Если указать диапазон с открытым концом
(напр. '2008-') то будут загружены все годы начиная с
указанного по настоящее время — будьте осторожны: для
активных журналов (напр. более 200 записей в году) так
как это может вызвать перегрузку сервера
-m [MONTHS ...], --months [MONTHS ...]
укажите месяц(ы) для обработки; можно выбрать один
месяц (напр. 04 для апреля), список месяцев через
пробел или запятую (напр. 05,07,09 для мая, июля и
сентября), диапазон через дефис (напр. 06-11) или
"all" для всех месяцев года. Если месяц не указан, и
выбран только один год, то будет использоваться
текущий месяц. Если выбраны несколько лет и месяц не
указан, то подразумеваются все месяцы выбранных годов
-s, --stats если задан — брабатывать только статистику записей, не
сохраняя их самих
-i, --images если задан — сохранять также и картинки используемые в
записи (по умолчанию в записи остаются только ссылки
на картинки)
-c, --comments если задан — сохранять также и отклики на записи (по
умолчанию отзывы игнорируются)
-n, --notask если задан — не запрашивать подтверждение пользователя
для начала работы
-e, --english если задан — сообщении и отчёты будут на английском
независимо от настроек системы
-p, --persistent если задан — продолжат работу со следующим выбранным
месяцем даже если в текущем возникли проблемы
Открытый код и больше информации 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 ...]] [-s]
[-i] [-c] [-n] [-e] [-p]
Downloads entries from LiveJournal for a period of time, if needed—with images
and comments
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 comma/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 comma/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.
-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)
-n, --notask if given — do not ask confirmation to start the
process
-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
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 тысячи в сутки… а если вы шпарите по несколько десятков записей в день, то отвлекитесь на математику, чтобы посчитать за сколько месяцев вы можете сгрузить их себе, не выглядя для сервера слишком ботоголово…