Я новичок в использовании Django. В качестве первого проекта я написал небольшой инструмент для создания M3U8-плейлистов. Моя проблема в том, что длинные плейлисты не передаются полностью.
Это сокращенный код:
def create(request):
# just a dummy filelist
playlist = ["#EXTM3U"] + 5 * ["/home/pi/music/" + 5 * "äöü0123456789á/" + "xyz.mp3"]
file_to_send = ContentFile("")
for item in playlist:
file_to_send.write("{}\n".format(item.replace("/home/pi/Music", r"\\raspberry\music").replace("/", "\\")))
response = HttpResponse(file_to_send, "audio/x-mpegurl")
response["Content-Length"] = file_to_send.size
response["Content-Disposition"] = f"attachment; filename=\"playlist.m3u8\""
# print some debug info
print("lines:", len(playlist), "chars (no linebreaks)", sum([len(entry) for entry in playlist]),
"filesize:", file_to_send.size)
return response
Кажется, проблема l ie в не-ascii символах в записи плейлиста (äöüá). Если таких символов нет, файл передается без изменений. Я предполагаю, что это символы, которые используют два байта в UTF-8, но запись строк в ContentFile, как я, вероятно, не является правильной.