如何在python中播放原始mp3数据

时间:2012-10-15 04:23:54

标签: python mp3

我正在编写一个可以使用gmusicapi(https://github.com/simon-weber/Unofficial-Google-Music-API)播放音乐,操作播放列表等的界面。我有我的应用程序,以便它可以下载原始的mp3数据,但我很难找到一个可以播放它的库。 GST可以播放网址,但不允许使用Cookie验证。 pygame可以播放mp3,但是来自文件,而不是数据。有谁知道如何在python中播放原始mp3数据?

def gm_PlaySong(self, url):
    req = urllib2.Request(url)
    for cookie in self.api.session.cookies:
        req.add_header(cookie.name, cookie.value)
    resp = urllib2.urlopen(req)
    song = resp.read()
歌曲是原始的mp3。

1 个答案:

答案 0 :(得分:0)

写入文件

首先,您可以做的简单事情是将您的mp3数据写入文件以供pygame播放。你可以这样做:

import pygame
def gm_PlaySong(self, url):
    req = urllib2.Request(url)
    for cookie in self.api.session.cookies:
        req.add_header(cookie.name, cookie.value)
    resp = urllib2.urlopen(req)
    song = resp.read()
    with open('path/to/file.mp3', 'wb') as outfile:
        outfile.write(song)

    pygame.mixer.music.load('path/to/file.mp3')

使用StringIO

或者,你可以干的东西 - 这是一个猜测,因为我没有在这里测试它的工具 - 你可以尝试使用StringIO.StringIO类来喂你的原始mp3数据与pygame类似于Python文件对象的方式。

这看起来像这样:

import pygame, StringIO
def gm_PlaySong(self, url):
    req = urllib2.Request(url)
    for cookie in self.api.session.cookies:
        req.add_header(cookie.name, cookie.value)
    resp = urllib2.urlopen(req)
    song = StringIO.StringIO(resp.read()) # Gives you a file-like object

    # load song
    pygame.mixer.music.load(song)