From 5772b1eb53a2c84028dc48b723f59771930d5521 Mon Sep 17 00:00:00 2001 From: Marcel van der Veldt Date: Thu, 19 May 2022 22:32:29 +0200 Subject: [PATCH] Fix crash when trying to open a corrupted playlist file --- .../controllers/music/providers/filesystem.py | 21 ++++++++++++------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/music_assistant/controllers/music/providers/filesystem.py b/music_assistant/controllers/music/providers/filesystem.py index 60e797fe..b9779554 100644 --- a/music_assistant/controllers/music/providers/filesystem.py +++ b/music_assistant/controllers/music/providers/filesystem.py @@ -281,14 +281,19 @@ class FileSystemProvider(MusicProvider): if cache := await self.mass.cache.get(cache_key, checksum): return [Track.from_dict(x) for x in cache] index = 0 - async with self.open_file(playlist_path, "r") as _file: - for line in await _file.readlines(): - line = urllib.parse.unquote(line.strip()) - if line and not line.startswith("#"): - if track := await self._parse_track_from_uri(line): - track.position = index - result.append(track) - index += 1 + try: + async with self.open_file(playlist_path, "r") as _file: + for line in await _file.readlines(): + line = urllib.parse.unquote(line.strip()) + if line and not line.startswith("#"): + if track := await self._parse_track_from_uri(line): + track.position = index + result.append(track) + index += 1 + except Exception as err: # pylint: disable=broad-except + self.logger.warning( + "Error while parsing playlist %s", playlist_path, exc_info=err + ) await self.mass.cache.set(cache_key, [x.to_dict() for x in result], checksum) return result -- 2.34.1