Генератор Бесконечного плейлиста
Генератор бесконечно зацикленного плейлиста для коллекций сериалов и шоу. Автоматически формирует плейлист endless_playlist.m3u8 из двух каталогов с шоу (Straight и Random), учитывая структуру каталогов, части серий, и исключая временные / скрытые файлы. Подходит для медиасерверов, домашних кинотеатров и просто удобного просмотра.
🚀 Возможности
- Автоматическая генерация плейлиста из коллекции сериалов / шоу по заданным правилам.
- Поддержка двух режимов: последовательный (
Straight) и случайный (Random) выбор серий. - Умная обработка частей серий: если серия разбита на части
(Part 1),(Part 2), … — все части добавляются подряд. - Игнорирование временных и скрытых файлов / каталогов (
._*,~*,#*и прочие). - Прогресс-бар в консоли для отслеживания процесса.
- Логирование ошибок в отдельный файл
error.log(создаётся только при ошибках). - Высокая производительность: вся обработка — в памяти.
- Гибкая структура каталогов: легко добавлять новые шоу и серии.
- Работа из других каталогов: можно использовать ключ
-path, чтобы указать расположение каталога с шоу независимо от того, где лежит исполняемый файл.
🧠 Как это работает
- Сканируются два каталога:
Straight(последовательный просмотр серий шоу) иRandom(случайный просмотр серий шоу). - В каждом каталоге — подкаталоги-шоу, в которых лежат видеофайлы серий.
- Для каждой записи плейлиста:
- Случайно выбирается режим (
StraightилиRandom) с вероятностью, пропорциональной количеству оставшихся серий. - Далее случайно выбирается шоу и серия — случайно для
Randomи последовательно дляStraight. - Если серия разбита на части — добавляются все части подряд неависимо от того, в каком каталоге с шоу происходит дело —
RandomилиStraight. - Путь к файлу добавляется в плейлист (относительно каталога с шоу).
- Случайно выбирается режим (
- Процесс повторяется, пока не будут добавлены все серии.
📁 Структура каталогов
Endless playlist/
├── endlessPlaylist.m3u8
├── Straight/
│ ├── Show1/
│ │ ├── S01E01.mkv
│ │ ├── S01E02 (Part 1).mkv
│ │ ├── S01E03 (Part 2).mkv
│ │ └── ...
│ └── ...
├── Random/
│ ├── ShowA/
│ │ ├── S01E01.avi
│ │ └── ...
│ └── ...
└── ...
📦 Требования
- Go 1.20+ (рекомендуется последняя версия, проект тестировался на 1.24)
- ОС: Windows, Linux, macOS
- Зависимости (автоматически подтянутся):
- github.com/schollz/progressbar/v3
- github.com/jmcvetta/randutil
- github.com/mitchellh/colorstring
- github.com/rivo/uniseg
- golang.org/x/sys
- golang.org/x/term
🛠️ Установка и сборка
- Клонируйте репозиторий или скачайте исходники
-
Установите зависимости:
go mod tidy -
Соберите проект:
go build -o main.exe main.goПосле этого появится исполняемый файл
main.exe(илиmainна Linux/macOS).
▶️ Запуск
-
В корневом каталоге (с каталогами с шоу
StraightиRandom):./main.exe -
Или с указанием пути к коллекции:
./main.exe -path "/Путь/к/корневому/каталогу" - Плейлист будет создан/перезаписан:
- В текущем каталоге или по указанному пути
- Имя файла:
endless_playlist.m3u8
📝 Пример содержимого плейлиста
#EXTM3U
Straight/Show1/S01E01.mkv
Random/ShowA/S01E01.avi
Straight/Show1/S01E02 (Part 1).mkv
Straight/Show1/S01E03 (Part 2).mkv
...
❓ FAQ
Q: Можно ли использовать другие форматы видео?
A: Да, любые файлы, кроме скрытых и временных, попадут в плейлист.
Q: Как добавить новое шоу?
A: Просто создайте новый каталог в Straight или Random и положите туда каталоги с шоу.
Q: Что делать, если серия разбита на части?
A: Назовите файлы по шаблону: S01E02 (Part 1).mkv, S01E03 (Part 2).mkv — все части будут добавлены подряд.
Q: Как узнать, что пошло не так?
A: Если возникнут ошибки, они будут записаны в error.log в корне каталога.
Q: Можно ли запускать на Linux/macOS?
A: Да, проект кроссплатформенный. Просто соберите под свою ОС.
📚 История создания
Тут.
🧑💻 Автор
- Савранский Дмитрий
- Email: ttyx89@yandex.ru
- Telegram: @capt_rusty_bottom
Если проект был полезен — поставьте ⭐ или расскажите друзьям!
Описание
Генератор бесконечно зацикленного плейлиста для коллекций сериалов и шоу. Автоматически формирует плейлист `endless_playlist.m3u8` из двух каталогов с шоу (`Straight` и `Random`), учитывая структуру каталогов, части серий, и исключая временные / скрытые файлы. Подходит для медиасерверов, домашних кинотеатров и просто удобного просмотра.