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

https://github.com/iwizard7/mp3_to_audiobook


https://github.com/iwizard7/mp3_to_audiobook

Last synced: 9 months ago
JSON representation

Awesome Lists containing this project

README

          

[![Build and Release MP3ToAudiobook](https://github.com/iwizard7/mp3_to_audiobook/actions/workflows/build-and-release.yml/badge.svg)](https://github.com/iwizard7/mp3_to_audiobook/actions/workflows/build-and-release.yml)
# MP3 в M4B Конвертер

Приложение для конвертации MP3 файлов в формат M4B аудиокниг Apple с метаданными.

**Текущая версия:** v2025.08.28.1.080629

## Функции

### Основные возможности
- ✅ Конвертация нескольких аудиофайлов в один M4B файл
- ✅ Поддержка форматов: MP3, AAC, M4A, WAV, AIFF
- ✅ Расширенные метаданные (автор, название, жанр, описание, серия, номер в серии)
- ✅ Автоматическое заполнение метаданных из названия папки
- ✅ Drag & Drop поддержка файлов и папок
- ✅ Превью обложек с полноразмерным просмотром

### Консольная версия
- ✅ Гибкие аргументы командной строки
- ✅ Batch-обработка папок с рекурсивным поиском
- ✅ Настройки качества экспорта (high, medium, low)
- ✅ Полноценное разделение на главы с настраиваемой длительностью
- ✅ Подробная справка и валидация параметров

### Графический интерфейс
- ✅ Современный интерфейс SwiftUI
- ✅ Опциональные логи с возможностью копирования
- ✅ Прогресс-бар и статусные сообщения
- ✅ Drag & Drop зона для удобного добавления файлов
- ✅ Расширенные настройки качества экспорта (high/medium/low)
- ✅ Настройка разделения на главы с ползунком
- ✅ Полные метаданные: жанр, описание, серия, номер в серии

### Качество и производительность
- ✅ Выбор качества экспорта
- ✅ Оптимизировано для macOS и процессоров M2
- ✅ Улучшенная обработка ошибок и валидация
- ✅ Базовая система тестирования
- ✅ Динамическая система версий с автоматическим обновлением

### Автоматизация
- ✅ Автоматическая сборка и выпуск релизов через GitHub Actions
- ✅ Переключение между GUI и консольной версиями
- ✅ Скрипты для сборки и запуска

## 📋 Последние изменения (Changelog)

### v2025.08.28.1.080629
- 🔧 **Исправления ошибок сборки:**
- Удалены недостижимые блоки catch в AudioConverter.swift
- Исправлен deprecated метод exportPresets API
- Добавлены отсутствующие параметры в AudioConverterTests.swift
- Исправлена ошибка области видимости в ConsoleApp.swift
- 📦 **Улучшения системы версий:**
- Добавлена динамическая система версий с timestamp
- Версия теперь автоматически обновляется в интерфейсе
- Улучшена структура управления версиями

### Ранние версии
- ✨ Полноценная поддержка глав с настраиваемой длительностью
- 🎨 Современный SwiftUI интерфейс с Drag & Drop
- 📊 Прогресс-бар и расширенные логи
- 🔄 Консольная версия с гибкими аргументами
- 📱 Поддержка расширенных метаданных (автор, жанр, серия, обложка)

## Сборка и запуск

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

**Консольная версия (с аргументами командной строки):**
```bash
swift run *.mp3 --author "Автор" --title "Название книги" --genre "Жанр"
```

**GUI версия (для использования):**
```bash
./switch_to_gui.sh
./build_and_run.sh
```

### 🔄 Переключение между версиями:

**Переключиться на GUI версию:**
```bash
./switch_to_gui.sh
```

**Переключиться на консольную версию:**
```bash
./switch_to_console.sh
```

### 📋 Все варианты запуска:

1. **Сборка и запуск GUI версии:**
```bash
./build_and_run.sh
```

2. **Быстрый запуск GUI версии (если уже собрано):**
```bash
./run_only.sh
```

3. **Запуск консольной версии с файлами:**
```bash
swift run *.mp3 --author "Лев Толстой" --title "Война и мир" --genre "Классика"
```

4. **Запуск консольной версии с папкой:**
```bash
swift run /path/to/audio/folder --auto-detect --cover cover.jpg
```

5. **Ручная сборка:**
```bash
swift build
swift run
```

### 🛑 Остановка приложения:
```bash
pkill -f MP3ToAudiobook
```

## 🚀 Автоматическая сборка и релиз

Проект использует GitHub Actions для автоматической сборки и создания релизов:

- **Автоматический запуск:** При пуше в ветки `main` или `master`
- **Сборка:** На macOS с последней стабильной версией Xcode
- **Артефакты:** Создается `.dmg` файл для установки
- **Релиз:** Автоматически создается GitHub release с собранным приложением
- **Статус:** ✅ Настроено и готово к работе

### Скачать готовое приложение:
1. Перейдите в раздел [Releases](https://github.com/iwizard7/mp3_to_audiobook/releases)
2. Скачайте файл `MP3ToAudiobook.dmg`
3. Откройте DMG и перетащите приложение в папку Applications

## Использование

### GUI версия

1. Запустите приложение
2. **Выберите файлы одним из способов:**
- Нажмите "Выбрать аудиофайлы" и выберите файлы
- Перетащите файлы или папки в специальную зону Drag & Drop
3. **Заполните метаданные:**
- Автор и название книги (обязательно)
- Жанр, описание, серия, номер в серии (опционально)
4. **Настройте параметры экспорта:**
- Выберите качество: Высокое/Среднее/Низкое
- Установите разделение на главы (0 = без разделения)
5. Выберите обложку книги (опционально) - кликните для превью
6. Нажмите "Конвертировать в M4B"
7. Выберите место сохранения файла

**Новые возможности интерфейса:**
- **Drag & Drop:** Перетаскивайте файлы и папки прямо в приложение
- **Превью обложек:** Кликайте на миниатюру обложки для полноразмерного просмотра
- **Расширенные метаданные:** Поддержка жанра, описания, серии и номера в серии
- **Настройки качества:** Выбор между высоким, средним и низким качеством экспорта
- **Разделение на главы:** Настраиваемый интервал разделения с визуальным ползунком
- **Улучшенная обработка ошибок:** Более понятные сообщения об ошибках

### Консольная версия

Консольная версия поддерживает гибкую работу с файлами и метаданными:

```bash
# Базовое использование
swift run chapter1.mp3 chapter2.mp3 chapter3.mp3 --author "Автор" --title "Название"

# С папкой (автоматическое нахождение аудиофайлов)
swift run /path/to/book/folder --auto-detect

# С дополнительными метаданными
swift run *.mp3 --author "Лев Толстой" --title "Война и мир" --genre "Классика" --description "Эпическая история" --series "Русская литература" --series-number "1" --cover cover.jpg --output "Война и мир.m4b"

# С настройками качества и глав
swift run *.mp3 --author "Автор" --title "Книга" --quality high --chapters 30

# Рекурсивный поиск в папках
swift run /path/to/library --recursive --auto-detect --quality medium

# Получить справку
swift run --help
```

**Поддерживаемые форматы:** MP3, AAC, M4A, WAV, AIFF
**Автоопределение метаданных:** анализирует название папки в формате "Автор - Название"

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

```
MP3ToAudiobook/
├── Package.swift
├── Sources/MP3ToAudiobook/
│ ├── App.swift # Точка входа GUI приложения
│ ├── ContentView.swift # Основной интерфейс SwiftUI
│ ├── AudioConverter.swift # Основная логика конвертации
│ ├── ConsoleApp.swift # Консольная версия приложения
│ ├── AudioConverterTests.swift # Базовые тесты
│ └── Version.swift # Управление версиями приложения
├── build_and_run.sh
├── run_only.sh
├── switch_to_gui.sh
├── switch_to_console.sh
├── .gitignore
└── README.md
```

## Системные требования

- macOS 13.0+
- Swift 5.9+
- Xcode 14+ (для разработки)

## Технические детали

- Использует AVFoundation для обработки аудио
- SwiftUI для пользовательского интерфейса
- Swift Package Manager для управления зависимостями
- Поддержка метаданных в формате iTunes