Генератор Бесконечного плейлиста
Генератор бесконечно зацикленного плейлиста для коллекций сериалов и шоу. Автоматически формирует плейлист 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`), учитывая структуру каталогов, части серий, и исключая временные / скрытые файлы. Подходит для медиасерверов, домашних кинотеатров и просто удобного просмотра.