2014-01-07 66 views
0

我嘗試在我的互聯網收音機上進行自定義輸出。 (MPD/MPC)Linux:MPC當前歌曲輸出

getInfo.py:

#!/bin/bash 
[email protected] 
mpc $opt &> /dev/null 

station="`mpc --format \"[%name%]\" | head -n 1`" 
title="`mpc --format \"[%title%]\" | head -n 1`" 
vol="`mpc | head -n 2 | tail -n 1 | awk {'print $4'}`" 

echo $station 
echo $title 
echo "Volume: "${vol//[()_]/} 

和保存輸出女巫WACH -n getInfo.py> radio.log

輸出格式是在這裏:

Amazing Smooth and Jazz 
Koop - Koop Island Blues 
Volume: 100% 

所以我需要每次輸出更改在shell上顯示輸出。 如何做到這一點?

+0

到你的問題沒有直接關係,但爲什麼你對你的bash腳本.py擴展名了? – kazemakase

+0

與你的問題相關:你可以使用手錶來定期在shell中顯示輸出... – kazemakase

+0

但是我只需要在輸出發生變化時輸出 –

回答

1

爲了讓你開始:

#!/usr/bin/python3 
from subprocess import Popen, PIPE 

last_output = "" 
while(1): 
    proc = Popen(["mpc"], stdout=PIPE) 
    output, retval = proc.communicate() 
    if not output == last_output: 
     print(output.decode('ascii')) 
    last_output = output 

我將離開輸出微調給你。

+0

如何格式化它?我不能使用像mpc |這樣的命令頭-2在popen。有可能的? –

+0

我相信這是可能的,但不幸的是,我不知道如何鏈接從python管道。你已經有了一個bash腳本來創建你需要的輸出 - 試着從popen中調用它來代替mpc。 – kazemakase

1

如果你只找歌輸出變化時進行更新,mpc具有帶有--wait選項告訴MPC顯示結果之前阻塞,直到下一首歌曲的命令current,這使您可以在其上環。從那裏你可以更新你想要的任何軟件。

例如:

while :; do notify-send --urgency=low -i "audio-headphones" "$(mpc current --wait)"; done &

相關問題