diff --git a/delojza.py b/delojza.py index b7cf256..7c534c9 100755 --- a/delojza.py +++ b/delojza.py @@ -79,6 +79,24 @@ class DelojzaBot: return True return False + @staticmethod + def extract_tags(info): + title = None + artist = None + if 'track' in info: + title = info['track'] + if 'artist' in info: + artist = info['artist'] + if title is None and artist is None and '-' in info['title']: + split = info['title'].split("-") + artist = split[0] + title = split[1] + if title is None: + title = info['title'] + if 'soundcloud' in info['extractor']: + artist = info['uploader'] + return artist.strip() if artist is not None else None, title.strip() if title is not None else None + def download_ytdl(self, urls, subdir, date, message, extract=False, filename=None): ydl_opts = { 'noplaylist': True, @@ -100,17 +118,12 @@ class DelojzaBot: globbeds = glob(os.path.splitext(filename)[0] + '.*') for globbed in globbeds: if globbed.endswith("mp3"): - title = info['track'] or (info['title'].split("-")[1] - if "-" in info['title'] else info['title']) - title = title.strip() - artist = info['artist'] or (info['title'].split("-")[0] - if "-" in info['title'] else info['title']) - artist = artist.strip() + artist, title = self.extract_tags(info) message.reply_text("Tagging as \"{}\" by \"{}\"".format(title, artist)) self.logger.info("Tagging %s w/ $s - $s...".format(globbed, title, artist)) id3 = mutagen.id3.ID3(globbed) id3.add(mutagen.id3.TIT2(encoding=3, text=title)) - if artist and (not info['artist'] and artist != title): + if artist: id3.add(mutagen.id3.TOPE(encoding=3, text=artist)) id3.add(mutagen.id3.TPE1(encoding=3, text=artist)) id3.save()