Любителям слушать музыку в машине — flashfiller

Всем привет!


Недавно возникло желание иметь замену музыке по блютузу в машине в виде флешки. Флешка под рукой оказалась на 16гб, а музыки на жёстком диске — 90гб. Как накидать музыки так, чтобы заполнить всю флешку, но чтобы всех исполнителей было примерно равномерно? Не вручную же это делать, тем более, в папке музыки папка исполнителя, там папка с альбомом и только там — mp3.

Не буду долго томить, в тот же вечер за часок накидал программу, а сейчас немного улучшил её и решил поделиться здесь, вдруг кому-то ещё будет полезно.


Итак, flashfiller:
1. Ищет в папке все файлы с нужным суффиксом (например, .mp3) на любую глубину папок
2. Перетасовывает их
3. Наполняет флешку файлами без вложенностей на тот размер, который вы указали

Таким образом, если у вас огромная фонотека, можно скинуть с себя рутину по набору песен на флешку, записать рандомно, а когда надоест — форматировать и записать заново, но рандомно песни выберутся уже другие.


Вот так выглядит процесс записи:

Любителям слушать музыку в машине — flashfiller Программирование, Golang, Музыка, Авто, Длиннопост

Вот так выглядит фонотека на жёстком диске:

Любителям слушать музыку в машине — flashfiller Программирование, Golang, Музыка, Авто, Длиннопост

А вот так выглядит результат записи на флешку:

Любителям слушать музыку в машине — flashfiller Программирование, Golang, Музыка, Авто, Длиннопост

Дополнительные возможности:

* Искать файлы по произвольному суффиксу (или нескольким). По умолчанию ".mp3", если запустить .\flashfiller.exe -pattern=mp3,flac,ogg ... — будет искать .flac, .mp3 и .ogg
* Пропускать файлы с живыми выступлениями. Часто в дискографиях есть бонусные песни или целые альбомы с пометкой "live". Запуск с параметром -nolive заставит программу пропускать файлы, в имени или родительской папке которых есть слово "live"
* Пропускать файлы размером меньше, чем заданный. Например, -drop=1M будет пропускать файлы размером меньше одного мегабайта. Это могут быть всякие сайленс-филлеры, интро и прочее что-то, что в отрыве от альбома звучит странно
* Проверять md5-хэш после записи. После записи каждой песни сверяет md5 файла-источника и записанного на флешку. После всей записи выдаст ошибки по тем файлам, чьи md5 не совпали. Включен по умолчанию. Выключить: .\flashfiller.exe -nomd5
* Показывает прогресс, сколько времени прошло и сколько осталось (с последним конечно же врёт, как и windows)


Полный пример запуска:

.\flashfiller.exe -drop=1M -nolive -nomd5 -pattern=mp3,flac 14.5G "D:\Music" "E:\"
Найдёт все mp3 и flac файлы в D:\Music, которые больше 1МБ, не-live, случайно перетасует, наберёт на 14.5ГБ (или меньше, если в D:\Music меньше 14.5ГБ музыки) и запишет в E:\, не проверяя хэши файлов

Я не рекомендую пользоваться параметром -nomd5. Хоть ним запись идёт быстрее, но если флешка китайская или видавшая виды, то файл может записаться криво или не записаться вовсе

(на всякий случай, программа дублирует все параметры текстом после запуска и громко ругается, если параметры её не устраивают)


Инструкция:

Программа не имеет графического интерфейса, поэтому запускать нужно через командную строку. Для этого, если вы используете Windows, откройте папку, куда скачан flashfiller.exe, нажмите на пустое место правой кнопкой мыши с зажатым Shift'ом -> открыть окно комманд и впишите туда команду: .\flashfiller.exe <опции> <размер> <путь откуда брать файлы> <путь куда класть файлы>

Пример, которого хватит в 99% случаев: .\flashfiller.exe -nolive -drop=1M "D:\Music" "E:\"

Чтобы долго не вписывать пути, можно найти папку в проводнике, кликнуть правой кнопкой мыши с зажатым shift по папке и выбрать "Скопировать как путь"


Где скачать:
Скачать можно с https://github.com/deliro/flashfiller/releases/tag/0.1, выбрав нужную платформу. Для windows x64 это flashfiller.exe, для macOS — flashfiller-darwin_amd64 (или flashfiller-darwin_arm64, если у вас новый мак на M1)


Никому не интересные технические подробности:
Программа написана на Golang, поэтому компилируется под любую кофеварку. Для удобства скомпилированные бинарники под большинство платформ лежат на github. Код также открыт и лежит на github, поэтому при наличии недоверия (ещё бы доверять рандомному чуваку с Пикабу) и ручек, способных заставлять компухтер компилировать, программу можно скомпилировать самому.


Программа (мне каждый раз стрёмно называть скрипт на 500 строк программой, правда) писалась для себя и под себя, поэтому развития не обещаю.


Буду рад любым отзывам, особенно если возникли ошибки. Спасибо!