From c4601ed3c3ac04cbd2db321e1b4268badb0ae7d8 Mon Sep 17 00:00:00 2001 From: Dev Mehta Date: Mon, 27 Oct 2025 17:16:09 -0700 Subject: [PATCH] fixed m3u.py --- beets/util/m3u.py | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/beets/util/m3u.py b/beets/util/m3u.py index b6e355e06..60202b404 100644 --- a/beets/util/m3u.py +++ b/beets/util/m3u.py @@ -79,19 +79,22 @@ class M3UFile: Handles the creation of potential parent directories. """ + # Use bytes for header if extm3u is True, otherwise use str header = [b"#EXTM3U"] if self.extm3u else [] + if not self.media_list: raise EmptyPlaylistError - contents = header + self.media_list + + # Ensure all media_list items are bytes + media_bytes = [ + line.encode('utf-8') if isinstance(line, str) else line + for line in self.media_list + ] + + contents = header + media_bytes pl_normpath = normpath(self.path) mkdirall(pl_normpath) - try: - with open(syspath(pl_normpath), "wb") as pl_file: - for line in contents: - pl_file.write(line + b"\n") - pl_file.write(b"\n") # Final linefeed to prevent noeol file. - except OSError as exc: - raise FilesystemError( - exc, "create", (pl_normpath,), traceback.format_exc() - ) + with open(syspath(pl_normpath), "wb") as pl_file: + for line in contents: + pl_file.write(line + b"\n")