mirror of
				https://github.com/KevinMidboe/spotify-downloader.git
				synced 2025-10-29 18:00:15 +00:00 
			
		
		
		
	Slugify filenames when metadata found on Spotify too (#265)
This commit is contained in:
		| @@ -66,7 +66,7 @@ def is_youtube(raw_song): | |||||||
|     return status |     return status | ||||||
|  |  | ||||||
|  |  | ||||||
| def format_string(string_format, tags): | def format_string(string_format, tags, slugification=False): | ||||||
|     """ Generate a string of the format '[artist] - [song]' for the given spotify song. """ |     """ Generate a string of the format '[artist] - [song]' for the given spotify song. """ | ||||||
|     format_tags = dict(formats) |     format_tags = dict(formats) | ||||||
|     format_tags[0]  = tags['name'] |     format_tags[0]  = tags['name'] | ||||||
| @@ -82,9 +82,17 @@ def format_string(string_format, tags): | |||||||
|     format_tags[10] = tags['total_tracks'] |     format_tags[10] = tags['total_tracks'] | ||||||
|     format_tags[11] = tags['external_ids']['isrc'] |     format_tags[11] = tags['external_ids']['isrc'] | ||||||
|  |  | ||||||
|  |     for tag in format_tags: | ||||||
|  |         if slugification: | ||||||
|  |             format_tags[tag] = sanitize_title(format_tags[tag], | ||||||
|  |                                               ok='-_()[]{}') | ||||||
|  |         else: | ||||||
|  |             format_tags[tag] = str(format_tags[tag]) | ||||||
|  |  | ||||||
|     for x in formats: |     for x in formats: | ||||||
|         string_format = string_format.replace('{' + formats[x] + '}', |         format_tag = '{' + formats[x] + '}' | ||||||
|                                           str(format_tags[x])) |         string_format = string_format.replace(format_tag, | ||||||
|  |                                               format_tags[x]) | ||||||
|  |  | ||||||
|     if const.args.no_spaces: |     if const.args.no_spaces: | ||||||
|         string_format = string_format.replace(' ', '_') |         string_format = string_format.replace(' ', '_') | ||||||
| @@ -92,14 +100,14 @@ def format_string(string_format, tags): | |||||||
|     return string_format |     return string_format | ||||||
|  |  | ||||||
|  |  | ||||||
| def sanitize_title(title): | def sanitize_title(title, ok='-_()[]{}\/'): | ||||||
|     """ Generate filename of the song to be downloaded. """ |     """ Generate filename of the song to be downloaded. """ | ||||||
|  |  | ||||||
|     if const.args.no_spaces: |     if const.args.no_spaces: | ||||||
|         title = title.replace(' ', '_') |         title = title.replace(' ', '_') | ||||||
|  |  | ||||||
|     # slugify removes any special characters |     # slugify removes any special characters | ||||||
|     title = slugify(title, ok='-_()[]{}\/', lower=False, spaces=True) |     title = slugify(title, ok=ok, lower=False, spaces=True) | ||||||
|     return title |     return title | ||||||
|  |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -67,9 +67,10 @@ def generate_metadata(raw_song): | |||||||
|     except lyricwikia.LyricsNotFound: |     except lyricwikia.LyricsNotFound: | ||||||
|         meta_tags['lyrics'] = None |         meta_tags['lyrics'] = None | ||||||
|  |  | ||||||
|     # fix clutter |     # Some sugar | ||||||
|     meta_tags['year'], *_ = meta_tags['release_date'].split('-') |     meta_tags['year'], *_ = meta_tags['release_date'].split('-') | ||||||
|     meta_tags['duration'] = meta_tags['duration_ms'] / 1000.0 |     meta_tags['duration'] = meta_tags['duration_ms'] / 1000.0 | ||||||
|  |     # Remove unwanted parameters | ||||||
|     del meta_tags['duration_ms'] |     del meta_tags['duration_ms'] | ||||||
|     del meta_tags['available_markets'] |     del meta_tags['available_markets'] | ||||||
|     del meta_tags['album']['available_markets'] |     del meta_tags['album']['available_markets'] | ||||||
|   | |||||||
| @@ -134,7 +134,9 @@ def download_single(raw_song, number=None): | |||||||
|     songname = content.title |     songname = content.title | ||||||
|  |  | ||||||
|     if meta_tags is not None: |     if meta_tags is not None: | ||||||
|         refined_songname = internals.format_string(const.args.file_format, meta_tags) |         refined_songname = internals.format_string(const.args.file_format, | ||||||
|  |                                                    meta_tags, | ||||||
|  |                                                    slugification=True) | ||||||
|         log.debug('Refining songname from "{0}" to "{1}"'.format(songname, refined_songname)) |         log.debug('Refining songname from "{0}" to "{1}"'.format(songname, refined_songname)) | ||||||
|         if not refined_songname == ' - ': |         if not refined_songname == ' - ': | ||||||
|             songname = refined_songname |             songname = refined_songname | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user