def download_song_and_get_absolute_filename(search_type, song, playlist_name=None): song_filename = "{} - {}.{}".format( song['ART_NAME'], song['SNG_TITLE'], 'flac' if config['deezer'].getboolean('flac_quality') else 'mp3') song_filename = clean_filename(song_filename) if search_type == TYPE_TRACK: absolute_filename = os.path.join(config["download_dirs"]["songs"], song_filename) elif search_type == TYPE_ALBUM: album_name = "{} - {}".format(song['ART_NAME'], song['ALB_TITLE']) album_name = clean_filename(album_name) album_dir = os.path.join(config["download_dirs"]["albums"], album_name) if not os.path.exists(album_dir): os.mkdir(album_dir) absolute_filename = os.path.join(album_dir, song_filename) elif search_type == TYPE_PLAYLIST: assert type(playlist_name) == str playlist_name = clean_filename(playlist_name) playlist_dir = os.path.join(config["download_dirs"]["playlists"], playlist_name) if not os.path.exists(playlist_dir): os.mkdir(playlist_dir) absolute_filename = os.path.join(playlist_dir, song_filename) if os.path.exists(absolute_filename): print("Skipping song '{}'. Already exists.".format(absolute_filename)) else: print("Downloading '{}'".format(song_filename)) download_song(song, absolute_filename) return absolute_filename
def test_download_song_valid(self): song_infos = deezer_search("faber tausendfrankenlang", TYPE_TRACK)[0] song = get_song_infos_from_deezer_website(TYPE_TRACK, song_infos['id']) try: os.remove(test_song) except FileNotFoundError: # if we remove a file that does not exist pass download_song(song, test_song) file_exists = os.path.exists(test_song) self.assertEqual(file_exists, True) file_type = magic.from_file(test_song) self.assertEqual(file_type, "Audio file with ID3 version 2.3.0, contains:MPEG ADTS, layer III, v1, 320 kbps, 44.1 kHz, Stereo") os.remove(test_song)
def test_download_song_valid_flac(self): config['deezer']['flac_quality'] = "True" song_infos = deezer_search("faber tausendfrankenlang", TYPE_TRACK)[0] song = get_song_infos_from_deezer_website(TYPE_TRACK, song_infos['id']) try: os.remove(test_song) except FileNotFoundError: # if we remove a file that does not exist pass download_song(song, test_song) file_exists = os.path.exists(test_song) self.assertEqual(file_exists, True) file_type = magic.from_file(test_song) self.assertEqual(file_type, 'Audio file with ID3 version 2.3.0, contains:FLAC audio bitstream data, 16 bit, stereo, 44.1 kHz, 10062444 samples') os.remove(test_song)
def test_download_song_invalid_song_type(self): with self.assertRaises(AssertionError): download_song("this sould be a dict", test_song)