Switch to MP3, add interactive library editor

WOO
This commit is contained in:
Salt 2020-03-04 03:00:31 -06:00
parent c2534393b1
commit 19a01589e7

View File

@ -79,7 +79,7 @@ class Library:
'format': 'bestaudio',
'postprocessors': [{
'key': 'FFmpegExtractAudio',
'preferredcodec': 'opus',
'preferredcodec': 'mp3',
'preferredquality': '192'
}],
'quiet': True,
@ -88,7 +88,7 @@ class Library:
}
with youtube_dl.YoutubeDL(ytdl_opts) as ydl:
ydl.download([songcontent['source']])
logging.info('Downloaded song: ' + song)
print('Downloaded song: ' + song)
class BadWitch:
# Our program
@ -103,7 +103,7 @@ class BadWitch:
self.argparser.add_argument('-d', '--debug', action='store_true',
help='Show even more status messages')
self.argparser.add_argument('action', metavar='action', nargs='?',
choices=['download', 'list'],
choices=['download', 'edit', 'list'],
help='Action to perform on the library')
# Set up appdirs
self.dirs = AppDirs('badwitch', 'rehashedsalt')
@ -125,6 +125,47 @@ class BadWitch:
if self.args.action == 'download':
lib.download()
return
elif self.args.action == 'edit':
print('Bad Witch interactive $ibrary editor')
print('^C to abort, ^D to finish changes')
print('Loaded library ' + lib.file)
try:
while True:
in_album = input('\tAlbum: ')
in_artist = input('\tArtist: ')
if in_album not in lib.albums:
lib.albums[in_album] = {}
album = lib.albums[in_album]
try:
while True:
in_song = input('\t\tSong title: ')
in_track = input('\t\tTrack number: ')
in_source = input('\t\tSource URL: ')
# Only assign values if we gave them
if in_song not in album:
album[in_song] = {}
song = album[in_song]
if in_track is not '': song['track'] = int(in_track)
if in_artist is not '': song['artist'] = in_artist
if in_source is not '': song['source'] = in_source
# Bail if song is bad
for field in ['track', 'artist', 'source']:
if field not in song:
print('Critical field is empty: ' + field)
continue
except KeyboardInterrupt:
print('\n\t\tAborting, changes were not saved')
except EOFError:
album[in_song] = song
print('\n\t\tSaving changes')
lib.albums[in_album] = album
lib.save()
except KeyboardInterrupt:
print('\n\tAborting, changes were not saved')
except EOFError:
lib.save()
print('\n\tSaving changes')
print('Closing library')
elif self.args.action == 'list':
for album, albumcontent in lib.albums.items():
print(album)