【问题标题】:Rhythmbox - Get current track pathRhythmbox - 获取当前曲目路径
【发布时间】:2020-10-26 08:36:27
【问题描述】:

有没有办法以编程方式获取节奏盒(甚至是 Linux 上的任何音乐播放器)中当前播放曲目的完整路径? 它可以是 linux 命令或 python。

我需要它来使用快捷方式对我的新音乐专辑进行排序(即,删除或存档当前播放的文件,直到新音乐文件夹为空)。我是用 amarok 做的,但在新版本中,我的插件不再工作,而且还没有文档。

【问题讨论】:

  • VLC 支持 HTTP 接口。然后可以使用 curl 调用 status.xml 页面来获取当前播放的曲目。

标签: python bash rhythmbox


【解决方案1】:

安装mp3info 并使用此脚本:

#!/bin/sh

apps="vlc totem rhythmbox banshee mplayer gnome-mplayer"

for app in $apps
do
  pat="([^\w-]$app)"
  if ps ux | grep -P $pat | grep -vq grep; then
    echo
    echo "$app detected"
    echo -------------------------
    file=`lsof -F n -c "$app" | grep -i "^.*\.mp3$" | sed 's/^n//g'`
    if [ ! -z "$file" ]; then
      echo -n "Now playing: "
      if mp3info "$file" 2>&1 | grep -q "does not have an ID3"; then
        echo $file
        echo MP3 info missing \(ID3v2 not supported\)    
      else
        echo
        mp3info "$file"
      fi
    else
      echo Playing no MP3 files
    fi
  fi
done

感谢 Vaphell (https://ubuntuforums.org/showthread.php?t=1562395&s=4ea6cfb6ce5e37681f20a82af578825f&p=9785684#post9785684)。

【讨论】:

    【解决方案2】:

    可以用mplayer来完成:

    path=`lsof -c mplayer | grep -E '\.m4a|\.mp3|\.flac|\.mp4|\.wav|\.wma|\.aac' | sed "s+.*\(/home/$USER.*\)+\1+g"`
    

    详情:

    • lsof -c mplayer:列出mplayer当前使用的所有文件;
    • grep -E '\.m4a|\.mp3|\.flac|\.mp4|\.wav|\.wma|\.aac':只保留音频文件的行(可能有更优雅的方式来做到这一点......);
    • sed "s+.*\(/home/$USER.*\)+\1+g":删除行前缀(以适应您的音乐文件不在 /home/$USER 中)。

    【讨论】:

      猜你喜欢
      • 2022-08-06
      • 2012-08-10
      • 2019-02-18
      • 1970-01-01
      • 1970-01-01
      • 2012-05-29
      • 2016-09-01
      • 2012-04-12
      • 2015-03-20
      相关资源
      最近更新 更多