# `7MMM. ,MMF'`7MMM. ,MMF' `7MMM. ,MMF' `7MM # MMMb dPMM MMMb dPMM MMMb dPMM MM # M YM ,M MM M YM ,M MM M YM ,M MM ,pW"Wq. ,M""bMM ,pP"Ybd # M Mb M' MM M Mb M' MM M Mb M' MM 6W' `Wb ,AP MM 8I `" # M YM.P' MM M YM.P' MM mmmmm M YM.P' MM 8M M8 8MI MM `YMMMa. # M `YM' MM M `YM' MM M `YM' MM YA. ,A9 `Mb MM L. I8 # .JML. `' .JMML..JML. `' .JMML. .JML. `' .JMML.`Ybmd9' `Wbmd"MML.M9mmmP' # # (c) 2023 — licensed under Apache 2.0 — https://www.apache.org/licenses/LICENSE-2.0 # meta developer: @mm_mods # meta pic: https://img.icons8.com/emoji/256/musical-notes-emoji.png import logging from telethon.tl.types import Message, DocumentAttributeAudio from .. import loader, utils, translations import requests logger = logging.getLogger(__name__) @loader.tds class GLyricsMod(loader.Module): """Get lyrics from Genius""" strings = { "name": "GLyrics", "lyrics": "📝 Lyrics for {}:\n\n{}", "no_lyrics": "😔 No lyrics for {} or something else happened.", "args?": "😶 What song do you want lyrics for?", "wait": "🧐 Searching for lyrics...", "full_text": "👀 View full lyrics", } strings_ru = { "name": "GLyrics", "lyrics": "📝 Текст песни {}:\n\n{}", "no_lyrics": "😔 Текста песни для {} нет или что-то пошло не так.", "args?": "😶 Какую песню вы хотите найти?", "wait": "🧐 Ищу текст песни...", "full_text": "👀 Посмотреть полный текст", "_cls_doc": "Ищет тексты песен в Genius", "_cmd_doc_lyrics": "Найти текст песни" } strings_de = { "name": "GLyrics", "lyrics": "📝 Lyrics für {}:\n\n{}", "no_lyrics": "😔 Kein Lyrics für {} oder etwas anderes ist passiert.", "args?": "😶 Welchen Song willst du Lyrics für haben?", "wait": "🧐 Suche nach Lyrics...", "full_text": "👀 Vollständigen Text anzeigen", "_cls_doc": "Sucht nach Lyrics auf Genius", "_cmd_doc_lyrics": "Suche nach Lyrics" } async def lyricscmd(self, m: Message): """Search for lyrics""" r = await m.get_reply_message() if not utils.get_args_raw(m) and not r: return await utils.answer(m, self.strings("args?")) if r and not utils.get_args_raw(m): if not r.media: return await utils.answer(m, self.strings("args?")) attr = r.media.document.attributes[0] if not isinstance(attr, DocumentAttributeAudio): return await utils.answer(m, self.strings("args?")) song = f'{attr.performer} - {attr.title}' else: song = utils.get_args_raw(m) await utils.answer(m, self.strings("wait")) try: data = {'name': song} r = requests.post(f"https://somekindofapp-1-j3340894.deta.app/mirror/genius/lyrics", json=data) r = r.json() lyrics = r["res"]["lyrics"] title = r["res"]["name"] full_link = r["res"]["url"] await self.inline.form( self.strings("lyrics").format(title, lyrics), reply_markup=[[{"text": self.strings["full_text"], "url": full_link}]], message=m, force_me=False ) except Exception as e: logger.error(e) await utils.answer(m, self.strings("no_lyrics").format(song))