Я пытаюсь воспроизвести файл .mp3 после его загрузки через cherrypy. Я могу загрузить его во временный файл, но я могу воспроизводить только небольшие файлы .mp3, большие файлы дают исключение с плавающей запятой на pyglet.
Вот мой код сервера:
import cherrypy
import os
from cherrypy.lib.static import serve_file
class Download:
@cherrypy.expose
def index(self, file_):
tgt = os.path.abspath(os.path.join('./music', file_))
return serve_file(tgt, "application/x-download", "attachment")
if __name__ == '__main__':
cherrypy.quickstart(Download())
Вот мой клиентский код:
import requests
import pyglet
def download_file(file_):
print(file_)
data = {'file_': file_}
r = requests.get("http://localhost:8080/index",
params=data,
stream=True
)
local_filename = './tmp.mp3'
with open(local_filename, 'wb') as f:
for chunk in r.iter_content(chunk_size=1024):
if chunk: # filter out keep-alive new chunks
f.write(chunk)
f.flush()
print(local_filename)
return local_filename
src = pyglet.media.StaticSource(pyglet.media.load(download_file('b.mp3')))
player = pyglet.media.Player()
player.queue(src)
player.play()
pyglet.app.run()
Моя конечная цель состоит в том, чтобы клиент передал файл .mp3 с сервера, но я пытаюсь сначала загрузить музыкальный файл на клиент, так как это кажется более простым для новичков. Любая помощь очень ценится.