Eu quero obter uma saída contendo informações sobre título, estado (reprodução / pausa), posição atual, tempo total, etc., da mídia atualmente sendo reproduzida em mpv
.
Em mocp
player, por exemplo, é fácil: mocp -i
fornece uma saída assim:
State: PLAY
File: /home/piotr/muz/09 Svantetic.mp3
Title: 1 Możdżer - Svantetic (Komeda)
Artist: Możdżer
SongTitle: Svantetic
Album: Komeda
TotalTime: 03:35
TimeLeft: 03:22
TotalSec: 215
CurrentTime: 00:13
CurrentSec: 13
Bitrate: 235kbps
AvgBitrate: 236kbps
Rate: 44kHz
É possível obter essas informações em mpv
?
ATUALIZAÇÃO:
Parece que requer alguns scripts de lua. Desde que eu não estou familiarizado com esta linguagem, eu gostaria de receber qualquer dica. Estou interessado em um script que fornecerá informações mencionadas acima quando convocado a partir da linha de comando.
UPDATE 2
Aparentemente, para obter uma informação tão fácil no mpv, é necessário iniciar o soquete mpv e, em seguida, extrair os dados por meio de JSON. Por agora eu terminei com uma solução rápida e suja (ainda não posso acreditar que não há nenhuma funcionalidade embutida para isso ...):
mpv <file> --input-ipc-server=/tmp/mpvsocket
e um script bash:
POSITION=$(echo '{ "command": ["get_property_string", "time-pos"] }' | socat - /tmp/mpvsocket | jq .data | tr '"' ' ' | cut -d'.' -f 1)
REMAINING=$(echo '{ "command": ["get_property_string", "time-remaining"] }' | socat - /tmp/mpvsocket | jq .data | tr '"' ' ' | cut -d'.'
-f 1)
METADATA=$(echo '{ "command": ["get_property", "filtered-metadata"] }' | socat - /tmp/mpvsocket | jq ".data.Artist, .data.Album, .data.Title")
echo $METADATA
printf '%d:%02d:%02d' $(($POSITION/3600)) $(($POSITION%3600/60)) $(($POSITION%60))
printf ' %d:%02d:%02d\n' $(($REMAINING/3600)) $(($REMAINING%3600/60)) $(($REMAINING%60))
Qual é a saída:
"Nils Frahm" "Felt" "Keep"
0:01:33 0:01:53
(nota: METADATA funciona apenas para arquivos com tags, para obter informações de streaming on-line é preciso aplicar outros comandos; eu uso jq
para analisar dados JSON de / tmp / mpvsocket)
Tags mpv