summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xjamos169
1 files changed, 82 insertions, 87 deletions
diff --git a/jamos b/jamos
index e947e3d..81d47ff 100755
--- a/jamos
+++ b/jamos
@@ -19,6 +19,26 @@ def cleanup_metadata_files(music_directory):
os.remove(file)
+def create_downloader(music_directory, cookies):
+ audio_options = {
+ 'format': 'mp3/bestaudio/best',
+ 'cookiefile': cookies,
+ 'outtmpl': music_directory + '%(title)s.%(ext)s',
+ 'postprocessors': [
+ {
+ 'key': 'FFmpegExtractAudio',
+ 'preferredcodec': 'mp3',
+ 'preferredquality': '192',
+ },
+ {'key': 'FFmpegMetadata'},
+ ],
+ 'writeinfojson': True,
+ 'quiet': not DEBUG
+ }
+
+ return youtube_dl.YoutubeDL(audio_options)
+
+
def format_youtube_date(date):
default = "Unknown Year"
try:
@@ -88,76 +108,6 @@ def get_command_line_options():
return args
-# TODO: switch command line args to argparse
-def get_playlist_url():
- return sys.argv[1]
-
-
-def get_video_urls_in_playlist(playlist_url, ytdl):
- videos = ytdl.extract_info(playlist_url, download=False)
-
- urls = []
- for vid in videos['entries']:
- if 'webpage_url' in vid.keys() and vid['webpage_url'] is not None:
- urls.append(vid['webpage_url'])
-
- return urls
-
-
-def remove_special_characters_for_filename(filename):
- special_chars = [
- ['-', ' '],
- ['(', ''],
- [')', ''],
- ['/', ' '],
- ['/', ' '],
- [' ', '_'],
- ["'", ''],
- ["&", 'and'],
- [chr(8217), ''],
- ['$', 's'],
- ['.', '']
- ]
- new_name = filename
-
- for char_set in special_chars:
- new_name = new_name.replace(char_set[0], char_set[1])
-
- return new_name.lower()
-
-
-def move_file(file, metadata, output_directory):
- artist = remove_special_characters_for_filename(metadata['artist'])
- album = remove_special_characters_for_filename(metadata['album'])
- title = remove_special_characters_for_filename(metadata['title'])
-
- final_directory = os.path.join(
- output_directory,
- artist,
- album)
-
- Path(final_directory).mkdir(parents=True, exist_ok=True)
-
- # TODO: Research converting to mp3 instead of just naming it such.
- # TODO: Research better file formats over mp3?
- os.rename(
- file,
- os.path.join(final_directory, '{}_{}_{}.mp3'.format(artist,
- album,
- title)))
-
-
-def write_metadata_to_song_file(filename, metadata):
- file = music_tag.load_file(filename)
-
- file['name'] = metadata['title']
- file['artist'] = metadata['artist']
- file['album'] = metadata['album']
- file['year'] = metadata['year']
-
- file.save()
-
-
def get_song_metadata_from_json(json, counter):
metadata = {
'title': 'unknownsong',
@@ -196,24 +146,36 @@ def get_song_metadata_from_json(json, counter):
return metadata
-def create_downloader(music_directory, cookies):
- audio_options = {
- 'format': 'mp3/bestaudio/best',
- 'cookiefile': cookies,
- 'outtmpl': music_directory + '%(title)s.%(ext)s',
- 'postprocessors': [
- {
- 'key': 'FFmpegExtractAudio',
- 'preferredcodec': 'mp3',
- 'preferredquality': '192',
- },
- {'key': 'FFmpegMetadata'},
- ],
- 'writeinfojson': True,
- 'quiet': not DEBUG
- }
+def get_video_urls_in_playlist(playlist_url, ytdl):
+ videos = ytdl.extract_info(playlist_url, download=False)
- return youtube_dl.YoutubeDL(audio_options)
+ urls = []
+ for vid in videos['entries']:
+ if 'webpage_url' in vid.keys() and vid['webpage_url'] is not None:
+ urls.append(vid['webpage_url'])
+
+ return urls
+
+
+def move_file(file, metadata, output_directory):
+ artist = remove_special_characters_for_filename(metadata['artist'])
+ album = remove_special_characters_for_filename(metadata['album'])
+ title = remove_special_characters_for_filename(metadata['title'])
+
+ final_directory = os.path.join(
+ output_directory,
+ artist,
+ album)
+
+ Path(final_directory).mkdir(parents=True, exist_ok=True)
+
+ # TODO: Research converting to mp3 instead of just naming it such.
+ # TODO: Research better file formats over mp3?
+ os.rename(
+ file,
+ os.path.join(final_directory, '{}_{}_{}.mp3'.format(artist,
+ album,
+ title)))
def save_urls_from_playlist_to_file(filename, urls):
@@ -227,6 +189,39 @@ def save_urls_from_playlist_to_file(filename, urls):
raise e
+def remove_special_characters_for_filename(filename):
+ special_chars = [
+ ['-', ' '],
+ ['(', ''],
+ [')', ''],
+ ['/', ' '],
+ ['/', ' '],
+ [' ', '_'],
+ ["'", ''],
+ ["&", 'and'],
+ [chr(8217), ''],
+ ['$', 's'],
+ ['.', '']
+ ]
+ new_name = filename
+
+ for char_set in special_chars:
+ new_name = new_name.replace(char_set[0], char_set[1])
+
+ return new_name.lower()
+
+
+def write_metadata_to_song_file(filename, metadata):
+ file = music_tag.load_file(filename)
+
+ file['name'] = metadata['title']
+ file['artist'] = metadata['artist']
+ file['album'] = metadata['album']
+ file['year'] = metadata['year']
+
+ file.save()
+
+
if __name__ == "__main__":
try:
args = get_command_line_options()