diff --git a/spotdl/command_line/arguments.py b/spotdl/command_line/arguments.py index fa34f64..c7c7d28 100644 --- a/spotdl/command_line/arguments.py +++ b/spotdl/command_line/arguments.py @@ -27,7 +27,7 @@ if os.path.isfile(spotdl.config.DEFAULT_CONFIG_FILE): else: saved_config = {"spotify-downloader": {}} -_CONFIG_BASE = spotdl.util.merge( +_CONFIG_BASE = spotdl.util.merge_copy( spotdl.config.DEFAULT_CONFIGURATION, saved_config, ) @@ -278,7 +278,7 @@ class ArgumentHandler: configured_args = parser.parse_args().__dict__ defaults = config_base["spotify-downloader"] - args = spotdl.util.merge(defaults, args) + args = spotdl.util.merge_copy(defaults, args) self.parser = parser self.args = args diff --git a/spotdl/metadata_search.py b/spotdl/metadata_search.py index a1964b4..b01ea1f 100644 --- a/spotdl/metadata_search.py +++ b/spotdl/metadata_search.py @@ -184,7 +184,7 @@ class MetadataSearch: search_query = spotdl.metadata.format_string(self.yt_search_format, spotify_metadata) youtube_video = self._best_on_youtube_search_for_type_spotify(search_query) youtube_metadata = self.providers["youtube"].from_url(youtube_video["url"]) - metadata = spotdl.util.merge( + metadata = spotdl.util.merge_copy( youtube_metadata, spotify_metadata ) @@ -195,7 +195,7 @@ class MetadataSearch: youtube_metadata = self._on_youtube_for_type_youtube(self.track) search_query = spotdl.metadata.format_string("{track-name}", youtube_metadata) spotify_metadata = self._on_spotify_for_type_query(search_query) - metadata = spotdl.util.merge( + metadata = spotdl.util.merge_copy( youtube_metadata, spotify_metadata ) @@ -212,7 +212,7 @@ class MetadataSearch: ) spotify_metadata.start() youtube_metadata = self._on_youtube_for_type_query(search_query) - metadata = spotdl.util.merge( + metadata = spotdl.util.merge_copy( youtube_metadata, spotify_metadata.join() ) diff --git a/spotdl/util.py b/spotdl/util.py index fb1b01d..081a734 100644 --- a/spotdl/util.py +++ b/spotdl/util.py @@ -43,6 +43,9 @@ class ThreadWithReturnValue(threading.Thread): return self._return +def merge_copy(base, overrider): + return merge(base.copy(), overrider) + def merge(base, overrider): """ Override base dict with an overrider dict, recursively. """ for key, value in overrider.items():