cmus-remote
Я заметил, что часто слушаю одну и ту же музыку кругами, а что-то забыл и вообще слушать перестал, хотя стоило бы. Просто забыл, что в каком каталоге хранится, и в каком альбоме какая есть годнота. Решил я эту несправедливость исправить. И поскольку музыку слушаю исключительно из локального хранилища в консольном плеере cmus (
cmus - консольный аудиоплеер), то и скрипты будут ориентированы на него. Вы можете также сделать вариант для любого плеера, поддерживающего добавление через CLI, например графический Clementine.
Идея сделать внутри самого плеера плейлист всего и выбрать режим случайного воспроизведения отпадает - мне это неудобно и долго. Поэтому выбрал однострочник для выполнения в консоли.
Приступим!
Для начала, небольшая справка по удалённому управлению cmus
cmus-remote -v 50% # уполовинить громкость cmus-remote -p # воспроизвести cmus-remote -s # стоп cmus-remote -u # пауза/воспр. cmus-remote -n # следующий cmus-remote -r # предыдущий
Узнать, что сейчас играет: cmus-remote -Q | grep "title\|album\|artist"
Сперва зададим общую переменную для пути, чтобы команды попав в history, были универсальны:
MUS="/mnt/Yuggoth/Data/Music/A-Z-А-Я"
Сначала после find я использовал массив:( i=0; while read line; do lines[i++]="$line"; done; echo "$line"; \ for n in {1..25}; do cmus-remote -C add\ "${lines[$RANDOM % $i]}" ; done )
Но мне посоветовали сменить его на более скоростную конструкцию.
shuf -z | head -z -n25 | xargs -0 -t -i cmus-remote -C add\ {}
Найти и добавить в плейлист все файлы, где в названиях файлов есть определённое слово в любом регистре:
find "$MUS" -type f -iname "*lisa*" -print0 | shuf -z | xargs -0 -i cmus-remote -C add\ {}
Очистить плейлист, добавить и воспроизвести случайный альбом исполнителя. Применять нужно именно на пути к исполнителю.
MUS="/mnt/Yuggoth/Data/Music/A-Z-А-Я/Atrium Carceri/"; \ cmus-remote -C clear; \ find "$MUS" -type d -print0 | shuf -z | head -z -n1 | \
xargs -0 -t -i cmus-remote -C add\ {} ;cmus-remote -n; Очистить плейлист, добавить и воспроизвести случайный альбом случайного исполнителя: (возможны осечки, если в выпавшем каталоге например сканы jpg)
cmus-remote -C clear; \ find "$MUS" -mindepth 2 -type d -print0 | shuf -z | head -z -n1 | \ xargs -0 -t -i cmus-remote -C add\ {} ;cmus-remote -n;
Сразу воспроизвести случайный файл у исполнителя:
find "$MUS" -type f -regex ".*\.\(mp3\|wma\|Mp3\|flac\|ape\|m4a\)$" -print0 | \ shuf -z | head -z -n1 | xargs -0 -t -i cmus-remote -f "{}"
Поиск и добавление из дискографии исполнителя 5 случайных композиций в cmus:
* regexp с его слешами крашит многострочную запись, лучше записывать в одну строку без \ MUS="/mnt/Yuggoth/Data/Music/A-Z-А-Я/Atrium Carceri/"; find "$MUS" -type f -regex ".*\.\(mp3\|wma\|Mp3\|flac\|ape\|m4a\)$" -print0 | shuf -z | head -z -n5 | xargs -0 -t -i cmus-remote -C add\ "{}" Поиск в библитеке музыкальных файлов, и добавление 25 случайных композиций в cmus:
find "$MUS" -type f -regex ".*\.\(mp3\|wma\|Mp3\|flac\|ape\|m4a\)$" -print0 |\ shuf -z | head -z -n25 | xargs -0 -t -i cmus-remote -C add\ {}
Ну вот, теперь неплохо получилось!
|