Какой лучший способ захватить mp3-поток, исходящий из http, и сохранить его на диск с помощью python?
До сих пор я пробовал
target = open(target_path, "w")
conn = urllib.urlopen(stream_url)
while True:
target.write(conn.read(buf_size))
Это дает мне данные, но они искажены или не воспроизводятся в mp3-плеерах.
это в конечном итоге сработало, но никогда не выходило из предложения while. Мне нужно добавить дополнительный код, чтобы он правильно завершил работу?






Если вы работаете в Windows, вы можете случайно выполнить преобразование CRLF, повредив двоичные данные. Попробуйте открыть target в двоичном режиме:
target = open(target_path, "wb")
Лучше всего для этого:
urllib.urlretrieve(stream_url, target_path);
Возможно, синтаксис изменился по сравнению с предыдущим ответом urllib (который привел меня к правильному ответу, кстати), но этот синтаксис работает для python3:
import urllib.request
urllib.request.urlretrieve(stream_url, target_path)
Можете указать дополнительную информацию? Что это за стриминг? Обычный mp3 (не могли бы вы также сохранить его с помощью «Сохранить как ...»)? В противном случае протокол может содержать больше информации, чем просто аудиоинформация.