Современный инструмент для извлечения статей с веб-сайтов и создания EPUB книг. Идеально подходит для создания коллекций статей в удобном формате для чтения и последующей генерации аудиокниг.
- 🔄 Умное кеширование - сохранение обработанных страниц для быстрого повторного использования
- 📖 Многочастные EPUB - автоматическое разбиение больших коллекций на удобные части
- 🖼️ Обработка изображений - корректная работа с медиаконтентом
- 🎯 Режим разработки - быстрое тестирование на ограниченном количестве страниц
- 🔐 Поддержка авторизации - работа с cookies для доступа к закрытому контенту
- 🎧 Подготовка к аудио - EPUB формат идеально подходит для генерации аудиокниг
git clone https://github.com/yourusername/web2epub.git
cd web2epub
npm install
-
Добавьте cookies (если требуется авторизация):
# Скопируйте cookies в файл cp your-site-cookies.txt ./website.cookies.txt
-
Создайте список URL:
https://example.com/article1 https://example.com/article2 https://example.com/article3
-
Настройте конфигурацию в
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 генератор - создание книг с правильной структурой
- Утилиты - вспомогательные функции и логирование
- Создайте новый парсер в
src/parsers/
- Настройте селекторы для извлечения контента
- Добавьте конфигурацию для cookies и заголовков
- Протестируйте в режиме разработки
Приветствуются вклады в развитие проекта:
- Fork репозитория
- Создайте feature branch (
git checkout -b feature/amazing-feature
) - Commit изменения (
git commit -m 'Add amazing feature'
) - Push в branch (
git push origin feature/amazing-feature
) - Создайте Pull Request
Этот проект распространяется под лицензией MIT. См. файл LICENSE
для подробностей.
- Postlight Parser - для извлечения контента
- epub-gen - для генерации EPUB файлов
- Vitest - для тестирования
Сделано с ❤️ для любителей чтения и аудиокниг