2011-03-17 13 views
5

का उपयोग करके ट्रैक परिवर्तन के लिए तालबद्धता की निगरानी कैसे करें, मैं here वर्णित वही काम करना चाहता हूं, लेकिन पाइथन के बजाय शेल स्क्रिप्टिंग (अधिमानतः बैश में) का उपयोग करना चाहता हूं। ऐसा लगता है कि dbus-monitor का उपयोग करके ऐसी चीज संभव होनी चाहिए, लेकिन मैं डीबीस से बहुत परिचित नहीं हूं, और यह मुझे स्पष्ट नहीं है कि पाइथन प्रश्न के समाधान में वर्णित अवधारणाओं को कैसे लें और उन्हें डीबीस-मॉनीटर टूल पर लागू करें ।बैश

#!/bin/bash 

interface=org.gnome.Rhythmbox.Player 
member=playingUriChanged 

# listen for playingUriChanged DBus events, 
# each time we enter the loop, we just got an event 
# so handle the event, e.g. by printing the artist and title 
# see rhythmbox-client --print-playing-format for more output options 

dbus-monitor --profile "interface='$interface',member='$member'" | 
while read -r line; do 
    printf "Now playing: " 
    rhythmbox-client --print-playing 
done 

यह इस तरह उत्पादन का उत्पादन:

Now playing: Daft Punk - Overture 
Now playing: Daft Punk - The Grid 

जब शुरू किया यह भी वर्तमान में चल रहे गीत प्रिंट

उत्तर

12

यहाँ सबसे आसान तरीका मैं मिल सकता है। यदि वह नहीं है जो आप चाहते हैं, तो $line की सामग्री देखें और देखें कि इसमें NameAcquired या playingUriChanged है। यदि इसमें NameAcquired है, तो इसे छोड़ दें।

पायथन संस्करण और इस बैश संस्करण के बीच मुख्य अंतर यह है कि पायथन संस्करण प्लेबैक गीत जानकारी प्राप्त करने के लिए डीबीस का उपयोग करता है। मुझे बैश का उपयोग करने के लिए ऐसा करने का अच्छा तरीका नहीं मिला, लेकिन rhythmbox-client --print-playing अच्छी तरह से काम करता प्रतीत होता है।

+0

अच्छा समाधान, धन्यवाद! – jbeard4

+1

यह अब और काम नहीं करता है, rythmbox-client गिरा दिया गया है ... –

+0

यदि मैं लगातार निगरानी नहीं करना चाहता; अगर मैं Rhythmbox को बंद करने के बाद स्क्रिप्ट से बाहर निकलना/मारना चाहता हूं, तो मैं इसे कैसे कर सकता हूं? क्या यह स्क्रिप्ट के भीतर संभव है या क्या मुझे इसके लिए एक अलग लिपि चाहिए? –