Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/konh/livelibexport

Скрипт для экспорта прочитанного на Livelib в CSV-файл
https://github.com/konh/livelibexport

books csv csv-export export exporter goodreads livelib python python-3 python3

Last synced: about 2 months ago
JSON representation

Скрипт для экспорта прочитанного на Livelib в CSV-файл

Awesome Lists containing this project

README

        

# LivelibExport

## Краткое описание

Сервис https://www.livelib.ru не предоставляет удобного способа для экспорта прочитанного (как встроенной так и через API), поэтому был сделан отдельный скрипт для этого. Его использование поможет вам отвязаться от этого сервиса и иметь возможность мигрировать куда-нибудь еще.

## Экспорт книг из LiveLib в CSV

- Войти на сайт
- Открыть ссылку вида https://www.livelib.ru/reader/userName/read/print, где userName - ваше имя пользователя
- Скачать текущее содержимое страницы в файл любым методом в файл read.html в папке со скриптом (возможная проблема - книги из файла не обнаруживаются скриптом, в таком случае следует создать html файл вручную и скопировать в него содержимое страницы из DevTools браузера)
- Установить python3 (https://www.python.org/downloads/) и pip3 (https://pip.pypa.io/en/stable/installing/)
- Установить зависимость: `pip3 install lxml`
- Запустить скрипт: `python3 export.py`
- Дополнительная опция `--convert-10-star-rating=True` может использоваться для указания того будут ли конвертироваться 10-звездные и дробные рейтинги в 5-звездные рейтинги (см. [issue](https://github.com/KonH/LivelibExport/issues/10)), по-умолчанию указывать этот ключ не нужно, он требуется только при включенных в настройках 10-звездных рейтингах
- Дополнительная опция `--rating-convert-ceiling=True` используется в случае конвертации рейтингов и определяет, в какую сторону будет округлятся рейтинг (4,5: в случае True он станет 5, в случае False - 4)
- Дополнительная опция `--parse-books-without-rating=False` используется, если необходимо конвертировать книги без указанного рейтинга (по умолчанию они игнорируются)
- В случае возникновения проблем при получении содержимого страниц можно воспользоваться дополнительным режимом использования прокси-сервера FlareSolverr:
- Использовать docker-образ, готовые исполняемые файлы или собрать из исходников - https://github.com/FlareSolverr/FlareSolverr
- Запустить сервер и дождаться его инициализации (Test successful в логе FlareSolverr)
- Указать дополнительную опцию `--proxy-host=localhost:8191` (значение по-умолчанию, может быть иным, указывается в логе FlareSolverr, 0.0.0.0 нужно заменить на localhost)
- После этого вместо прямых запросов для получения содержимого страниц будет использоваться FlareSolverr
- Это может решить основные проблемы, но не является гарантией (конкретно в случае Livelib определение блокировки работает некорректно)
- Также в случае проблем может быть полезно: перезапустить сервер, зайти на сайт с помощью браузера и пройти проверку вручную, подождать некоторое время или сменить используемую сеть
- Также возможно изменить задержки по-умолчанию с помощью параметров `--min-delay=90` и `--max-delay=120` (значения указываются в секундах)
- Некоторые книги загружаются только для авторизованных пользователей и отдают ошибку 503 если авторизации нет, чтобы передать данные о логине используется файл headers.txt (это опционально):
- С помощью DevTools своего браузера получите заголовки любой страницы сайта
- Скопируйте их и укажите в файле headers.txt в том же формате
- Заголовок Accept-Encoding будет проигнорирован
- Будет загружен список книг из read.html и начата загрузка информации по ним
- Подождать завершения процесса
- Может потребоваться много времени, т.к. запросы отправляются с интервалом в 90-120 сек чтобы не было проблемы с блокировкой на стороне сервиса (это значение может быть изменено в скрипте, на свой страх и риск)
- Итоговый файл out.csv будет содержать имя автора/авторов, название, ISBN и рейтинг, поставленный книге
- Если для каких-то книг не было найдено ISBN, это будет отображено в логе и можно будет их добавить вручную
- Отсутствующий ISBN означает следующее:
- Он не указан на странице, тогда можно попробовать его найти в других источниках
- Его нет в принципе, тогда этот метод экспорта не поможет
- Есть необработанная ситуация в парсере, тогда можно завести issue здесь с указанием ссылки на страницу
- Итоговый файл пригоден для импорта на https://goodreads.com, но потенциально может быть использован и в других случаях
- Исходный код проекта открыт, issue по изменениям и багам можно присылать, pull request'ы будут рассматриваться