Локальная библиотека книг на основе tululu

Пример сайта можно посмотреть здесь.

Описание функционала для разработчиков

1) Решение для автоматического скачивания книг с сайта tululu

Никаких ограничений нет. Скачать можете ровно столько книг, сколько позволяет сайт.
В проекте присутствуют 2 скрипта:

  • book_parser.py - Скачивает книги по идентификатору(id). По умолчанию, скачивает книги с id=1-10. Это можно изменить, указав диапазон start_id и end_id.
  • book_category_parser.py - Скачивает подборку книг. По умолчанию скачивает подборку с id=55. Скрипт имеет множество параметров, что обеспечивает обширную опциональность:
    • book_category_id - Идентификатор подборки. По умолчанию 55
    • start_page - С какой страницы подборки скачивать книги. По умолчанию 1
    • end_page - До какой страницы скачивать книги. По умолчанию 10
    • dest_folder - Директория куда будут скачиваться книги и обложки. По умолчанию - текущая директория проекта
    • skip_imgs - Не скачивать картинки. По умолчанию - False
    • skip_txt - Не скачивать книги. По умолчанию - False
    • json_path - Путь к *.json файлу со скачанными книгами. По умолчанию - books.json

Загруженные книги по умолчанию скачиваются в директорию books проекта. Обложки для книг - в директорию - images.

2) Генерация локальной библиотеки книг(рендеринг html-страниц библиотеки)

render_website.py - читает и разбирает файл со скачанными книгами - books.json и с помощью шаблонизатора рендерит html-страницы библиотеки. Страницы генерируются в папке pages проекта.

Также предусмотрена возможность запускать скрипт в режиме разработчика - is_dev_mode. Для удобства разработки шаблона, в проекте используется библиотека livereload, которая запускает процесс рендеринга всякий раз, когда меняется код шаблона.

Как установить и настроить

Выполните команды:

git clone https://github.com/nicko858/books-library.git
cd books-library
python3 -m venv ./venv
. venv/bin/activate
pip install -r requirements.txt

Как запускать

Пример запуска скрипта book_parser.py по умолчанию(без параметров)

   python book_parser.py

В этом случае скачаются книги с с id=1-10.

Пример запуска скрипта book_parser.py с параметрами

   python book_parser.py 10 35

В этом случае скачаются книги с с id=10-35.

Пример запуска скрипта book_category_parser.py по умолчанию(без параметров)

   python book_category_parser.py

Пример запуска скрипта book_category_parser.py с параметрами

   python book_category_parser.py -book_category_id=54 -end_page=2 -skip_imgs=True -json_path=/tmp/books.json

В данном случае будет скачена подборка книг с id=54, диапазон страниц ограничится 2-мя, обложки книг не будут скачаны, файл со скачанными книгами будет располагаться в директории /tmp.

Пример запуска скрипта render_website.py в режиме разработчика

   python render_website.py -is_dev_mode

Запустится программа-демон, которая будет следить за состоянием файла шаблона template.html.
Каждый раз, когда файл изменился, будет запускаться процесс рендеринга и в выводе пользователь будет видеть сообщение - Site reloaded.

Пример запуска скрипта render_website.py в обычном режиме

   python render_website.py

Будут сгенерированы html-страницы библиотеки согласно файлу books.json

Если просто хотите скачать себе локально подборку с научной фантастикой

Сделайте исполняемым скрипт sample_download_library.sh (chmod +x sample_download_library.sh) и запустите его:

./sample_download_library.sh