advanced.md


Пользуемся в удовольствие

**Table of Contents**

Различные формы запуска программы

После установки программы, все её возможности доступны даже после запуска простейшим способом: либо двойным щелчком по исполняемому файлу, либо без каких-либо параметров из командной строки. Такой запуск в Windows осуществляется из каталога, где развёрнута программа командой:

.\LJexport.py 

или в другой форме

py -m LJexport

А в Linux это может быть

./LJexport.py

или без привязки к первой строки #!/usr/bin/python3 и реальному нахождению среды Python3 в системе:

python3 LJexport.py

Для простоты, в последующих примерах мы будем писать вызов программы в ситуации с Windows.

Проверка работы скрипта из командной строки

  1. Спросите у скрипта как его использовать, запустите в терминале:

    LJexport -h
    

    На экран должен быть выведен текст приведенный ниже в этом документе.

  2. Запустите выгрузку статистики журнала юзернейм (например, это frank) за тeкущий год/текущий месяц:

.\LJexport.py -j vad-nes -s
Программа выведет на экран полученное задания и запросит либо
* подтверждение на его выполнение, либо 
* предложит поменять параметры.
Сейчас просто нажмём Enter, и программ должна показать статистику дневника [Вадима Нестерова](https://vad-nes.livejournal.com/).
Если ошибок не выдано, то всё отлично, можно продолжать с другими журналами.

Примеры использования скрипта

  1. Загрузка записей frank-а за текущий год и месяц без картинок (по умолчанию, без явно указанного ключа -i значения картинки не грузятся)

    .\LJexport.py -j vad-nes
    
  2. То же самое с картинками (-i) и откликами (-c) за все месяцы (-m all) текущего (по умолчанию) года

    	.\LJexport.py -j vad-nes -m all -i -c
    
  3. Выгрузка записей Вадима Нестерова за три последних его месяца 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 тысячи в сутки… а если вы шпарите по несколько десятков записей в день, то отвлекитесь на математику, чтобы посчитать за сколько месяцев вы можете сгрузить их себе, не выглядя для сервера слишком ботоголово…