web-dev-qa-db-ja.com

コマンドラインから、rhythmboxが再生されているかどうかを確認する方法は?

rhythmbox-client --print-playingは、実際に再生されているかどうかに関係なく、曲の名前を教えてくれます。私は単に、現在rhythmboxによってサウンドが生成されているかどうかを知る必要があります(そのため、一時停止して後で一時停止を解除するかどうかを知ることができます)。

更新:

Oneい候補者の答え:

Rhythmboxには、この基本的なインターフェイスが実際にはないのではないかと思います。

しかし、pacmd list-sink-inputs私が収集したものは、ミキサーにフィードの内容を問い合わせます。still再生中かどうかに関係なくrhythmboxをリストします。ただし、出力には「状態」行があり、音楽が一時停止されているかどうかに応じて「実行中」または「破損」になります。

3
CPBL

pacmd list-sink-inputsは実行中のすべてのプレーヤーのリストを提供するので、事前に探しているプレーヤーを知る必要はなく、どのプレーヤーがプレイ/一時停止しているかなども教えてくれます。 awkまたはbashでより良い仕事をする、私は確信しています:

import commands,re
def linux_musicplayer_check_whether_playing():
    """
    Report which applications are currently sending 
    sound to the mixer, based on the output of the command:
       pacmd list-sink-inputs
    Also list those which are running/connected,
    but not currently sending sound.
    Returns a dict listing applications and a boolean playing state.

    This is very GNU/Linux specific! At least, it works on Ubuntu.  
    On other platforms, there may be direct ways for each application.

    For instance, under Ubuntu, you can ask banshee:

    'playing' in commands.getstatusoutput("banshee --query-current-state")[1])

    but there's nothing like this for rhythmbox.

    """

    found={}

    for cl in commands.getstatusoutput("pacmd list-sink-inputs |grep -e index: -e state: -e client:")[1].split('index:')[1:]:
        found[ re.findall('<(.*?)>', cl.split(':')[2])[0].lower() ]  =
                     'RUNNING' in cl.split(':')[1]
    return(found)
2
CPBL

Media Playerリモートインターフェース仕様(MPRIS)

MPRIS2 DBus interface を使用できます。これは確立された標準であり、ほぼすべてのプレーヤーによって実装されています。

プレーヤーを検出、表示、制御するためにUbuntu Unityサウンドインジケーターで使用されるものと同じ標準。したがって、スクリプトは汎用的であり、好きなプレーヤーで動作します。

ヒント:D-Feetを使用して探索します。d-feetはDBusモニターであり、DBusインターフェイスと直接対話できます。

  • 一時停止

    gdbus call \
      --session \
      --dest org.mpris.MediaPlayer2.rhythmbox \
      --object-path /org/mpris/MediaPlayer2 \
      --method org.mpris.MediaPlayer2.Player.Pause
    
  • 一時停止/再開

    gdbus call \
      --session \
      --dest org.mpris.MediaPlayer2.rhythmbox \
      --object-path /org/mpris/MediaPlayer2 \
      --method org.mpris.MediaPlayer2.Player.PlayPause
    
  • ステータスを確認

    ~$ gdbus call \
         --session \ 
         --dest org.mpris.MediaPlayer2.rhythmbox \
         --object-path /org/mpris/MediaPlayer2 \
         --method org.freedesktop.DBus.Properties.Get \
             org.mpris.MediaPlayer2.Player PlaybackStatus
    (<'Playing'>,)
    
    ~$ gdbus call \
         --session \
         --dest org.mpris.MediaPlayer2.rhythmbox \
         --object-path /org/mpris/MediaPlayer2 \
         --method org.freedesktop.DBus.Properties.Get \
             org.mpris.MediaPlayer2.Player PlaybackStatus
    (<'Stopped'>,)
    
2
user.dz