Сервис https://www.livelib.ru не предоставляет удобного способа для экспорта прочитанного (как встроенной так и через API), поэтому был сделан отдельный скрипт для этого. Его использование поможет вам отвязаться от этого сервиса и иметь возможность мигрировать куда-нибудь еще.
- Войти на сайт
- Открыть ссылку вида 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), по-умолчанию указывать этот ключ не нужно, он требуется только при включенных в настройках 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'ы будут рассматриваться