mpd mpc查询语言

ark*_*hon 6 mpd

我无法弄清楚如何从mpc正确查询mpd.

例如:我知道如何列出所有专辑

mpc list album
Run Code Online (Sandbox Code Playgroud)

但是我希望得到更多的名字.

如何查询mpd的专辑名称,专辑路径,艺术家,曲目编号,长度等.优选地,在一个查询中,但是多个查询也是可以的.

我试着阅读mpc手册页和mpd的官方文档但是无法弄明白.

小智 5

 import audioscrobbler
import mpd
import random
import time


lastsong = {}

def timer_control():
    get_similar()
    time.sleep(10)
    timer_control()

def get_similar():
    audioscrobbler
    client = mpd.MPDClient()
    client.connect("localhost", 6600)
    mpdstatus = client.status()
    prevsonginfo = client.currentsong()
    global lastsong
    if mpdstatus['state'] == "stop": return
    if prevsonginfo == lastsong: return 

    lastsong = prevsonginfo
    similarartists = ""
    song = prevsonginfo
    #if not song: break #No song, do nothing
    prevartist = song['artist']

    # Is the info already cached?
    similar_cache = {}
    if similar_cache.has_key(prevartist):
        similarartists = similar_cache[prevartist]
    else:
        #Not cached so fetch from Audioscrobbler
        try:
            similarartists = [artist.name for artist in audioscrobbler.AudioScrobblerQuery(artist=prevartist).similar()]
            # Cache search results and save some time next search
            similar_cache[prevartist] = similarartists
        except audioscrobbler.AudioScrobblerError:
            similar_cache[prevartist] = None # Empty cache
            return # Do nothing!

    if not similarartists: return # Empty list

    # Split list in half and sort upper half
    # this means good matches will have priority
    # but makes sure artist A does not always result in artist B
    half_idx = len(similarartists)/2
    upperhalf = similarartists[:half_idx]
    lowerhalf = similarartists[half_idx:]
    random.shuffle(upperhalf)
    artistlist = upperhalf
    artistlist.extend(lowerhalf)
    # Try each artist in order
    for artist in artistlist:
        try:
            print "Trying:",artist
            songs = client.search("artist", artist)
            if not songs: continue
            selected_song = random.sample(songs, 1)[0]
            client.add(selected_song['file'])
            print "Added", selected_song['title'],"by",selected_song['artist']
            # Delete old song from playlist?
            break
        except mpd.MPDError, e:
            print "MPDError", e.message
            continue
        except ValueError, e:
            print "ValueError:",e.message
            continue


timer_control()
Run Code Online (Sandbox Code Playgroud)

按照这篇文章了解更多信息 https://bbs.archlinux.org/viewtopic.php?id=49765 http://manpages.ubuntu.com/manpages/intrepid/man1/mpc.1.html


Phr*_*ogz 2

mpc没有(截至撰写本文时,v0.27-1)有任何命令可以为您提供由 uri 标识的歌曲的所有元数据。令人惊讶的是它没有,但事实并非如此。

\n\n

然而,MPD通信协议确实返回每首歌曲的完整信息。

\n\n

如果我发出,mpc current我只会得到这样的回复:

\n\n
Afro Celt Sound System - Release\n
Run Code Online (Sandbox Code Playgroud)\n\n

但是,如果我发送 MPD(不是 MPC)命令currentsong,那么我会从 MPD 收到以下响应:

\n\n
file: gavin/Compilations/Volume 2 _ Release/01 Release.m4a\nLast-Modified: 2005-03-02T14:16:51Z\nArtist: Afro Celt Sound System\nAlbum: Volume 2 : Release\nTitle: Release\nTrack: 1/11\nGenre:World\nDate: 1999\nComposer: Simon Emerson, James McNally, Iarla O Lionaird, Martin Russell & Sinead O\'Connor/Sin\xc3\xa9ad O\'Connor\nDisc: 1/1\nTime: 456\nPos: 0\nId: 53616\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果我发送 MPD 命令,playlistid 49312我会得到以下响应:

\n\n
file: gavin/ATB/Future Memories/16 Missing 1.m4a\nLast-Modified: 2013-11-17T21:14:43Z\nArtist: ATB\nAlbum: Future Memories\nTitle: Missing\nTrack: 16/29\nGenre: Dance\nDate: 2009-05-01T07:00:00Z\nComposer: Tracey Thorn & Ben Watt\nDisc: 1/1\nAlbumArtist: ATB\nTime: 256\nPos: 10\nId: 49312\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果我发送命令,search file surfing我会得到以下响应(不同的歌曲由新的分隔file:):

\n\n
file: doza/Air/06 Surfing On a Rocket.m4a\nLast-Modified: 2015-11-20T15:56:00Z\nTime: 223\nArtist: Air\nAlbum: Talkie Walkie\nTitle: Surfing On a Rocket\nTrack: 6/10\nGenre: Electronic\nDate: 2004-01-26T08:00:00Z\nDisc: 1/1\nAlbumArtist: Air\nfile: gavin/Air/Surfing On a Rocket EP/06 Surfing on a rocket (remixed by Joakim).m4a\nLast-Modified: 2015-01-13T15:31:39Z\nTime: 393\nArtist: Air\nAlbum: Surfing On a Rocket EP\nTitle: Surfing on a rocket (remixed by Joakim)\nTrack: 6/7\nGenre: Dance\nDate: 2004-09-10T07:00:00Z\nComposer: Jean-Benoit Dunckel & Nicolas Godin\nDisc: 1/1\nAlbumArtist: Air\nfile: gavin/The Beach Boys/Greatest Surfing Songs!/02 Little Deuce Coupe.mp3\nLast-Modified: 2009-09-10T04:32:49Z\nTime: 111\nArtist: The Beach Boys\nTitle: Little Deuce Coupe\nAlbum: Greatest Surfing Songs!\nTrack: 2\nGenre: Sunshine Pop\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果我发送 MPD 命令listplaylistinfo Thump,我会得到以下响应:

\n\n
file: gavin/Muse/The 2nd Law (Deluxe Version)/02 Madness.m4a\nLast-Modified: 2013-11-17T22:30:54Z\nArtist: Muse\nAlbum: The 2nd Law (Deluxe Version)\nTitle: Madness\nTrack: 2/13\nGenre: Alternative\nDate: 2012-10-01T07:00:00Z\nDisc: 1/1\nAlbumArtist: Muse\nTime: 280\nfile: gavin/U2/The Best Of 1990-2000/15 Numb (New Mix).mp3\nLast-Modified: 2003-09-24T14:31:05Z\nArtist: U2\nTitle: Numb (New Mix)\nAlbum: The Best Of 1990-2000\nTrack: 15/16\nDate: 2002\nGenre: Rock\nComposer: U2\nTime: 264\nfile: gavin/Massive Attack/Mezzanine/03 Teardrop.m4a\nLast-Modified: 2012-09-05T19:38:14Z\nArtist: Massive Attack\nAlbum: Mezzanine\nTitle: Teardrop\nTrack: 3/11\nGenre: Electronic\nDate: 1998-04-20T07:00:00Z\nDisc: 1/1\nAlbumArtist: Massive Attack\nTime: 331\nfile: gavin/Massive Attack/Mezzanine/01 Angel.m4a\nLast-Modified: 2012-09-05T19:38:17Z\nArtist: Massive Attack\nAlbum: Mezzanine\nTitle: Angel\nTrack: 1/11\nGenre: Electronic\nDate: 1998-04-20T07:00:00Z\nDisc: 1/1\nAlbumArtist: Massive Attack\nTime: 380\nfile: gavin/Eels/Shrek 2/07 I Need Some Sleep.mp3\nLast-Modified: 2005-01-14T21:24:25Z\nArtist: Eels\nTitle: I Need Some Sleep\nAlbum: Shrek 2\nTrack: 7/14\nDate: 2004\nGenre: Soundtrack\nTime: 147\n
Run Code Online (Sandbox Code Playgroud)\n\n

我个人使用该ruby-mpd库提供了一个方便的接口,以丰富、功能齐全的方式与 MPD 进行通信。

\n