Switch to MP3, add interactive library editor
WOO
This commit is contained in:
		
							
								
								
									
										47
									
								
								badwitch.py
									
									
									
									
									
								
							
							
						
						
									
										47
									
								
								badwitch.py
									
									
									
									
									
								
							@@ -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)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user