reverse tags by default if no other /retag argument given
This commit is contained in:
parent
099e3322b1
commit
e51f42a32e
1 changed files with 28 additions and 6 deletions
28
delojza.py
28
delojza.py
|
@ -26,6 +26,7 @@ import pytumblr
|
||||||
import requests
|
import requests
|
||||||
import telegram
|
import telegram
|
||||||
import youtube_dl
|
import youtube_dl
|
||||||
|
from mutagen.easyid3 import EasyID3
|
||||||
from telegram.ext import Updater, CommandHandler, MessageHandler
|
from telegram.ext import Updater, CommandHandler, MessageHandler
|
||||||
from youtube_dl import DownloadError
|
from youtube_dl import DownloadError
|
||||||
from youtube_dl.version import __version__ as YTDL_VERSION
|
from youtube_dl.version import __version__ as YTDL_VERSION
|
||||||
|
@ -165,6 +166,14 @@ class DelojzaBot:
|
||||||
filepath = unicodedata.normalize('NFKD', filepath).encode('ascii', 'ignore').decode('ascii')
|
filepath = unicodedata.normalize('NFKD', filepath).encode('ascii', 'ignore').decode('ascii')
|
||||||
return re.sub(r'[^\w.()\[\]{}#-]', '_', filepath)
|
return re.sub(r'[^\w.()\[\]{}#-]', '_', filepath)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _get_tags(filepath):
|
||||||
|
try:
|
||||||
|
audio = EasyID3(filepath)
|
||||||
|
return audio["artist"][0] if audio["artist"] else None, audio["title"][0] if audio["title"] else None
|
||||||
|
except mutagen.id3.ID3NoHeaderError:
|
||||||
|
return None, None
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _tag_file(filepath, artist, title):
|
def _tag_file(filepath, artist, title):
|
||||||
try:
|
try:
|
||||||
|
@ -599,18 +608,31 @@ class DelojzaBot:
|
||||||
|
|
||||||
def tg_retag(self, _, update):
|
def tg_retag(self, _, update):
|
||||||
self._log_msg(update)
|
self._log_msg(update)
|
||||||
if self.last_downloaded.get(update.message.chat.id) is not None and " - " in update.message.text:
|
if self.last_downloaded.get(update.message.chat.id) is not None:
|
||||||
files, hashtags, tumblr_ids = self.last_downloaded[update.message.chat.id]
|
files, hashtags, tumblr_ids = self.last_downloaded[update.message.chat.id]
|
||||||
mp3s = [filename for filename in files if filename.endswith("mp3")]
|
mp3s = [filename for filename in files if filename.endswith("mp3")]
|
||||||
if len(mp3s) > 0:
|
if len(mp3s) > 0:
|
||||||
tagline = re.sub(r'^/[\w]+', '', update.message.text).split(" - ")
|
arg_raw = re.sub(r'^/[\w]+ ', '', update.message.text).strip()
|
||||||
|
artist, title = None, None
|
||||||
|
|
||||||
|
reverse = len(arg_raw) == 0
|
||||||
|
if not reverse:
|
||||||
|
tagline = arg_raw.split(" - ")
|
||||||
|
if len(tagline) == 1:
|
||||||
|
title = tagline[0].strip()
|
||||||
|
else:
|
||||||
artist = tagline[0].strip()
|
artist = tagline[0].strip()
|
||||||
title = tagline[1].strip()
|
title = tagline[1].strip()
|
||||||
|
|
||||||
for mp3 in mp3s:
|
for mp3 in mp3s:
|
||||||
|
if reverse:
|
||||||
|
orig_artist, orig_title = self._get_tags(mp3)
|
||||||
|
title, artist = orig_artist, orig_title
|
||||||
|
|
||||||
self._tag_file(mp3, artist, title)
|
self._tag_file(mp3, artist, title)
|
||||||
update.message.reply_text("Tagging \"{}\" as \"{}\" by \"{}\"!"
|
update.message.reply_text("Tagging \"{}\" as \"{}\" by \"{}\"!"
|
||||||
.format(mp3[len(self.out_dir) + 1:], title, artist))
|
.format(mp3[len(self.out_dir) + 1:], title, artist))
|
||||||
return
|
else:
|
||||||
update.message.reply_text((self.markov.make_sentence() if self.markov and random() > .7 else "") + "???")
|
update.message.reply_text((self.markov.make_sentence() if self.markov and random() > .7 else "") + "???")
|
||||||
|
|
||||||
def tg_delete(self, _, update):
|
def tg_delete(self, _, update):
|
||||||
|
|
Loading…
Reference in a new issue