diff options
author | Jackson Taylor <jackson@jacksontaylor.xyz> | 2021-11-09 21:17:54 -0500 |
---|---|---|
committer | Jackson Taylor <jackson@jacksontaylor.xyz> | 2022-04-05 16:51:54 -0400 |
commit | 2a0d5283b1de4e4a2a77e672bb0121923db9568f (patch) | |
tree | 16538725161e54ff5ddd39707939cf016c9d479d | |
parent | 14828c7dc6ac429364467534abc70e1cfa6c1281 (diff) |
Download and tag music files
-rwxr-xr-x | jamos | 57 |
1 files changed, 41 insertions, 16 deletions
@@ -1,45 +1,70 @@ #!/usr/bin/env python3 +import datetime +import glob +import json +import music_tag import os from os.path import isfile, join +from pathlib import Path import readline import youtube_dl -# MUSIC_DIRECTORY = "~/Music" -MUSIC_DIRECTORY = "./music" + +# MUSIC_DIRECTORY = "~/Music/" +MUSIC_DIRECTORY = "./music/" COMMANDS = ['extra', 'extension', 'stuff', 'errors', 'email', 'foobar', 'foo'] FILES = [] DIRECTORIES = [] +AUDIO_OPTIONS = { + 'format': 'bestaudio/best', + 'cookiefile': 'cookies.txt', + 'outtmpl': MUSIC_DIRECTORY + '%(title)s.%(ext)s', + 'postprocessors': [ + {'key': 'FFmpegExtractAudio','preferredcodec': 'mp3', + 'preferredquality': '192', + }, + {'key': 'FFmpegMetadata'}, + ], + 'writeinfojson': True + } + +ytdl = youtube_dl.YoutubeDL(AUDIO_OPTIONS) + + # TODO: Pull via command line args def get_playlist_url(): # return "https://music.youtube.com/watch?v=Enm0XL7xx_E&feature=share" # Deer Tick # return "https://music.youtube.com/watch?v=hJLb0zPBzkE&feature=share" # You Worry Me - return "https://music.youtube.com/playlist?list=OLAK5uy_lHnMUbm8pKsyMTRQNCrjM2v4CPvIJUWq0&feature=share" # Button the busker + # return "https://music.youtube.com/playlist?list=OLAK5uy_lHnMUbm8pKsyMTRQNCrjM2v4CPvIJUWq0&feature=share" # Button the busker + # return "https://music.youtube.com/playlist?list=PLC-Ro2Hd9eWm1ZPIAsxFcfg2JoOlTO0Oj&feature=share" # broken hearts and dirty windows volume 2 + # return "https://music.youtube.com/playlist?list=PLC-Ro2Hd9eWkX4hDamDvyB5G-vxLTEBKl&feature=share" # dev playlist + return "https://music.youtube.com/playlist?list=PLC-Ro2Hd9eWkoElrTZIcCVCcdxBQzojsZ&feature=share" # missing playlist def download_song(song_url): """ Download a song using youtube url and song title """ + return ytdl.extract_info(song_url, download=True) - ydl_opts = { - 'format': 'bestaudio/best', - 'postprocessors': [ - {'key': 'FFmpegExtractAudio','preferredcodec': 'mp3', - 'preferredquality': '192', - }, - {'key': 'FFmpegMetadata'}, - ], - 'write-info-json': True - } - with youtube_dl.YoutubeDL(ydl_opts) as ydl: - info_dict = ydl.extract_info(song_url, download=True) +def write_metadata_to_song_file(file, metadata): + f = music_tag.load_file(file) + + f['name'] = metadata['title'] + f['artist'] = metadata['artist'] + f['album'] = metadata['album'] + f['year'] = format_youtube_date(metadata['release_date']) - print(info_dict['artist']) + f.save() +def format_youtube_date(date): + fmt = "%Y%m%d" + d = datetime.datetime.strptime(date, fmt) + return d.year def sort_stuff(): # read in all the files and directories to move |