LINUX.ORG.RU

музыкальный плеер

 


0

1

В каком музыкальном плеере можно реализовать возможность запускать не все треки из плейлиста, а только некоторые, причем по нажатию горячей клавиши. Например, плеер висит в фоне с нужным плейлистом, хочу включить трек №4, нажимаю цифру «4» - пошла музыка. Понадобился трек №2 - нажимаю «2». Плеер как был в фоне, так и остался бы, я его даже не видел

Ну это тебе скорее не про плеер вопрос надо задавать, а про как повесить скрипт на сочетания клавиш. Можно прям в конфиг wm, а можно утилиту какую. И там уже искать какое-то ipc у плеера, например, cmus слушает сокет через который им можно управлять.

pavlick ★★ ()
Ответ на: комментарий от Billy_Bones

В Deadbeef есть создание собственных шелл-команд, может так? но я команд не знаю, как проверить.

Пишешь скрипт на любом языке, обязательно делаешь его исполняемым, добавляешь его в шелл-команды с параметрами:

%f - файл
%F - файл с полным путем
%d - директория
%D - директория с полным путем

В контекстном меню плейлиста появляется пункт, при нажатии на который выполняется скрипт относительно выделенных треков.

anonymous ()

sxhkd + play:

cat ~/.config/sxhkd/sxhkdrc
super + {1-9,0}
    pkill -x play;\
    play "$(sed -n '{1-9,10}p' ~/playlist)" trim 0

super + {minus, equal}
    track=$(awk -F'\0' '\{print $2;\}' /proc/$(pidof play)/cmdline);\
    skip=$(awk -F'\0' '\{print $4;\}' /proc/$(pidof play)/cmdline);\
    pkill -x play;\
    play "$track" trim $((skip {-10,+10}))

super + p
    st=$(awk '\{print $3;\}' /proc/$(pidof play)/stat);\
    if [ $st = 'T' ]; then pkill -CONT -x play; else pkill -STOP -x play; fi

super + k
    pkill -x play

win+цифра начнёт играть файл, имя которого записано в строке с соответствующим номером в файле ~/playlist

win+минус и win+равно запустят проигрывание файла, который играет в данный момент, по новой, но с некоторым пропуском от начала трека; каждое новое нажатие уменьшает или увеличивает смещение на 10 секунд, но не относительно того места, которое звучит в данный момент, а относительно того места, с которого начинался предыдущий запуск трека.

win+p — пауза; win+k — остановить проигрывание (kill).

плейлист можно составить вручную, а можно и сохранить из плеера. каждая строка в плейлисте — полное имя файла.

find ~/music -iname '*.mp3' -exec realpath '{}' \; | head > ~/playlist

:)

anonymous ()
Ответ на: комментарий от anonymous

Ох, ничеси, круто) только ничего не понятно, запускать то что? и в каком файле этот текст писать? и вот эта строчка с плейлистом, ее куда вписывать? плейлист должен так и называться «playlist» и лежать рядом с новым файлом? я потому и надеялся средствами плеера такую штуку сделать, но уже понятно, что так просто не получится

Billy_Bones ()
Ответ на: комментарий от Billy_Bones

тебе надо установить sxhkd и отредактировать его конфиг (~/.config/sxhkd/sxhkdrc, если файла и директории нет, то их надо создать): вставить текст super + ... и сохранить.

потом тебе как-то надо запустить программу. можно просто из консоли: nohup sxhkd > /dev/null&, терминал потом можно закрыть. (но так придётся делать каждый раз. чтобы запускать sxhkd автоматом при загрузке можно либо написать юнит systemd, либо вставить команду sxhkd& в ~/.xinitrc или куда-то ещё — зависит от конфигурации твоей системы.)

для воспроизведения аудиофайлов я взял программу play из пакета sox, который тебе тоже надо будет установить, если ты планируешь сделать именно как в моём варианте. (в принципе, для проигрывания файлов можно взять любую программу. товарищ, вон, mpd советует, что, возможно будет даже лучше, чем play, но я с mpd не знаком, потому и не предлагаю. в конфиг sxhkd можно писать любые команды, как в баше, только фигурные скобки экранировать надо.)

в третьей строчке конфига sxhkd есть указание на файл плейлиста: ~/playlist, то есть в данный момент это файл с именем playlist, который располагается в твоей домашней директории. ты можешь вписать туда путь к любому другому файлу вместо ~/playlist.

сам формат плейлиста — список полных путей к аудиофайлам, по одному файлу на каждой строке. например файл плейлиста может выглядеть так:

/home/user/Documents/Music/Favourite Artist - Track01.mp3
/mnt/MyMusic/Pavlov's Dog/Pavlov's Dog - Julia.opus
/media/Fleetwood Mac - As Long As You Follow.flac
/media/Echoes of Misanthropy - Dark Karma.flac
...

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

play "$(sed -n '{1-9,10}p' ~/playlist)" trim 0

на

play "$(grep -v '^#' ~/playlist.m3u8 | sed -n '{1-9,10}p')" trim 0

и тогда с некоторой вероятностью можно будет проигрывать файлы напрямую из m3u8-плейлиста.

после того, как ты что-то поменяешь в конфиге sxhkd, тебе надо будет его либо перезапустить, либо выполнить в консои команду kill -USR1 $(pidof sxhkd) (так sxhkd заново перечитает свой конфиг). чтобы просто завершить sxhkd, выполни команду pkill -x sxhkd или заверши процесс через диспетчер задач.

может быть можно и через плеер это как-то сделать, через тот же mpd, скорее всего можно, но я не знаю как :)

anonymous ()