Пример #1
0
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
Пример #2
0
 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)
Пример #3
0
 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)
Пример #4
0
 def test_download_song_invalid_song_type(self):
     with self.assertRaises(AssertionError):
         download_song("this sould be a dict", test_song)