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, см. ниже полный список ключей командной строки.

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

  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 ...]]
                   [-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 тысячи в сутки… а если вы шпарите по несколько десятков записей в день, то отвлекитесь на математику, чтобы посчитать за сколько месяцев вы можете сгрузить их себе, не выглядя для сервера слишком ботоголово…