README.md

Генератор Бесконечного плейлиста

Генератор бесконечно зацикленного плейлиста для коллекций сериалов и шоу. Автоматически формирует плейлист endless_playlist.m3u8 из двух каталогов с шоу (Straight и Random), учитывая структуру каталогов, части серий, и исключая временные / скрытые файлы. Подходит для медиасерверов, домашних кинотеатров и просто удобного просмотра.


🚀 Возможности

  • Автоматическая генерация плейлиста из коллекции сериалов / шоу по заданным правилам.
  • Поддержка двух режимов: последовательный (Straight) и случайный (Random) выбор серий.
  • Умная обработка частей серий: если серия разбита на части (Part 1), (Part 2), … — все части добавляются подряд.
  • Игнорирование временных и скрытых файлов / каталогов (._*, ~*, #* и прочие).
  • Прогресс-бар в консоли для отслеживания процесса.
  • Логирование ошибок в отдельный файл error.log (создаётся только при ошибках).
  • Высокая производительность: вся обработка — в памяти.
  • Гибкая структура каталогов: легко добавлять новые шоу и серии.
  • Работа из других каталогов: можно использовать ключ -path, чтобы указать расположение каталога с шоу независимо от того, где лежит исполняемый файл.

🧠 Как это работает

  1. Сканируются два каталога: Straight (последовательный просмотр серий шоу) и Random (случайный просмотр серий шоу).
  2. В каждом каталоге — подкаталоги-шоу, в которых лежат видеофайлы серий.
  3. Для каждой записи плейлиста:
    • Случайно выбирается режим (Straight или Random) с вероятностью, пропорциональной количеству оставшихся серий.
    • Далее случайно выбирается шоу и серия — случайно для Random и последовательно для Straight.
    • Если серия разбита на части — добавляются все части подряд неависимо от того, в каком каталоге с шоу происходит дело — Random или Straight.
    • Путь к файлу добавляется в плейлист (относительно каталога с шоу).
  4. Процесс повторяется, пока не будут добавлены все серии.

📁 Структура каталогов

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

🛠️ Установка и сборка

  1. Клонируйте репозиторий или скачайте исходники
  2. Установите зависимости:

    go mod tidy
    
  3. Соберите проект:

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

Конвейеры
0 успешных
0 с ошибкой