diff --git a/spotify_dl/youtube.py b/spotify_dl/youtube.py index 481bb44..f54c383 100644 --- a/spotify_dl/youtube.py +++ b/spotify_dl/youtube.py @@ -46,9 +46,16 @@ def dump_json(songs): ytJson = {} with ytmusicapi.YTMusic() as ym: # Reduce results to array of titles and video IDs + search_results = ym.search(query, filter="songs") + if len(search_results) == 0: + log.warning("No song results found for %s, retrying.", query) + search_results = ym.search(query, filter="videos") + if len(search_results) == 0: + log.error("No search results found for %s, skipping.", query) + continue result_titles, result_ids = zip(*map( lambda d: (f"{d['artists'][0]['name']} - {d['title']}".replace(":", "").replace('"', ""), d["videoId"]), - ym.search(query, filter="songs") + search_results )) # Get ID of closest matching result by finding index in titles list videoId = result_ids[result_titles.index(get_closest_match(result_titles, query))] @@ -214,9 +221,16 @@ def find_and_download_songs(kwargs): with ytmusicapi.YTMusic() as ym: # Reduce search results to array of titles and video IDs + search_results = ym.search(query, filter="songs") + if len(search_results) == 0: + log.warning("No song results found for %s, retrying.", query) + search_results = ym.search(query, filter="videos") + if len(search_results) == 0: + log.error("No search results found for %s, skipping.", query) + continue result_titles, result_ids = zip(*map( lambda d: (f"{d['artists'][0]['name']} - {d['title']}".replace(":", "").replace('"', ""), d["videoId"]), - ym.search(query, filter="songs") + search_results )) # Get ID of closest matching result by finding index in titles list video_id = result_ids[result_titles.index(get_closest_match(result_titles, query))] @@ -335,8 +349,9 @@ def download_songs(**kwargs): log.debug("Downloading to %s", url["save_path"]) reference_file = DOWNLOAD_LIST track_db = write_tracks(reference_file, kwargs["songs"]) - shutil.copy(reference_file, kwargs["output_dir"] + "/" + reference_file) - os.remove(reference_file) + if not shutil._samefile(reference_file, kwargs["output_dir"] + "/" + reference_file): + shutil.copy(reference_file, kwargs["output_dir"] + "/" + reference_file) + os.remove(reference_file) reference_file = str(kwargs["output_dir"]) + "/" + reference_file kwargs["reference_file"] = reference_file kwargs["track_db"] = track_db