Skip to content

Alexandrsv/web2epub

Repository files navigation

📚 Web2EPUB

ЕЩЕ НЕ ДОПИСАН!!!

Современный инструмент для извлечения статей с веб-сайтов и создания EPUB книг. Идеально подходит для создания коллекций статей в удобном формате для чтения и последующей генерации аудиокниг.

✨ Особенности

  • 🔄 Умное кеширование - сохранение обработанных страниц для быстрого повторного использования
  • 📖 Многочастные EPUB - автоматическое разбиение больших коллекций на удобные части
  • 🖼️ Обработка изображений - корректная работа с медиаконтентом
  • 🎯 Режим разработки - быстрое тестирование на ограниченном количестве страниц
  • 🔐 Поддержка авторизации - работа с cookies для доступа к закрытому контенту
  • 🎧 Подготовка к аудио - EPUB формат идеально подходит для генерации аудиокниг

🚀 Быстрый старт

Установка

git clone https://github.com/yourusername/web2epub.git
cd web2epub
npm install

Настройка

  1. Добавьте cookies (если требуется авторизация):

    # Скопируйте cookies в файл
    cp your-site-cookies.txt ./website.cookies.txt
  2. Создайте список URL:

    https://example.com/article1
    https://example.com/article2
    https://example.com/article3
    
  3. Настройте конфигурацию в src/config/index.ts или через переменные окружения

Запуск

# Полный парсинг с настройками по умолчанию
npm run start

# Режим разработки (3 страницы)
npm run start -- --dev

# Создание 4 частей EPUB
EPUB_PARTS=4 npm run start

# Один файл без разбивки
EPUB_PARTS=1 npm run start

📁 Структура проекта

web2epub/
├── src/
│   ├── app.ts              # Основное приложение
│   ├── config/             # Конфигурация
│   ├── parsers/            # Парсеры страниц
│   ├── epub/               # Генерация EPUB
│   ├── utils/              # Утилиты (кеш, cookies, CSV)
│   └── types/              # TypeScript типы
├── cache/                  # Кеш обработанных страниц
├── *.epub                  # Готовые EPUB файлы
└── your-list.csv           # Список URL для обработки

⚙️ Конфигурация

Переменные окружения

# Количество частей EPUB (по умолчанию: 17)
export EPUB_PARTS=6

# Лимит страниц в режиме разработки
export PAGES_LIMIT=5

# Задержка между запросами (мс)
export REQUEST_DELAY=1000

# Количество попыток при ошибках
export RETRY_ATTEMPTS=3

Основные настройки

// src/config/index.ts
export const CONFIG = {
  epub: {
    parts: 17,  // Количество частей для разбивки
  },
  delays: {
    betweenRequests: 1000,  // Задержка между запросами
  },
  // ... другие настройки
};

📖 Разбивка на части

Web2EPUB автоматически разбивает большие коллекции статей на удобные части:

  • 1 часть - создается один файл
  • 6 частей - равномерное распределение статей по 6 файлам
  • 17 частей (по умолчанию) - оптимально для больших коллекций

Пример вывода:

✅ Создано 6 частей EPUB:
  📖 Часть 1: ./collection-часть-1.epub (25 статей)
  📖 Часть 2: ./collection-часть-2.epub (25 статей)
  📖 Часть 3: ./collection-часть-3.epub (24 статей)
  ...

🔧 Кеширование

Система автоматически сохраняет обработанные страницы:

# Очистка кеша
npm run start -- --clear-cache

Преимущества кеширования:

  • ⚡ Мгновенная загрузка уже обработанных страниц
  • 🛡️ Защита от потери данных при ошибках
  • 💾 Автоматическое сохранение каждые 5 страниц

🎧 Генерация аудиокниг

EPUB формат идеально подходит для создания аудиокниг с помощью современных TTS систем:

  • Структурированный контент с четким разделением на главы
  • Метаданные для корректной навигации
  • Оптимизированный текст без лишней разметки
  • Поддержка разбивки для удобной обработки больших коллекций

🧪 Тестирование

# Запуск тестов
npm test

# Проверка типов
npm run ts:check

# Линтинг кода
npm run lint

🔮 Планы развития

  • Универсальные парсеры для различных сайтов
  • GUI интерфейс для настройки без редактирования кода
  • Прямая интеграция с TTS для генерации аудио
  • Поддержка других форматов (PDF, MOBI)
  • Плагины для популярных CMS
  • API режим для интеграции в другие проекты

🛠️ Разработка

Архитектура

Проект использует модульную архитектуру с четким разделением ответственности:

  • Парсеры - извлечение контента с веб-страниц
  • Кеширование - сохранение и загрузка обработанных данных
  • EPUB генератор - создание книг с правильной структурой
  • Утилиты - вспомогательные функции и логирование

Добавление поддержки нового сайта

  1. Создайте новый парсер в src/parsers/
  2. Настройте селекторы для извлечения контента
  3. Добавьте конфигурацию для cookies и заголовков
  4. Протестируйте в режиме разработки

🤝 Вклад в проект

Приветствуются вклады в развитие проекта:

  1. Fork репозитория
  2. Создайте feature branch (git checkout -b feature/amazing-feature)
  3. Commit изменения (git commit -m 'Add amazing feature')
  4. Push в branch (git push origin feature/amazing-feature)
  5. Создайте Pull Request

📄 Лицензия

Этот проект распространяется под лицензией MIT. См. файл LICENSE для подробностей.

🙏 Благодарности

  • Postlight Parser - для извлечения контента
  • epub-gen - для генерации EPUB файлов
  • Vitest - для тестирования

Сделано с ❤️ для любителей чтения и аудиокниг

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published