Files
Chef_mu/chef_mou.py
2022-09-07 10:46:58 +02:00

80 lines
3.2 KiB
Python

from mautrix.util.config import BaseProxyConfig, ConfigUpdateHelper
from maubot import Plugin, MessageEvent
from maubot.handlers import command
import aiohttp
import asyncio
from bs4 import BeautifulSoup
import random
class ChefMou(Plugin):
async def start(self) -> None:
self.on_external_config_update()
async def get_site_content(self):
async with aiohttp.ClientSession() as session:
async with session.get("https://partoches.pustule.org") as resp:
text = await resp.read()
return BeautifulSoup(text.decode('iso-8859-1'), 'html.parser')
@command.new("chefmou")
@command.argument("pattern", pass_raw=True, required=False)
async def morceau(self, evt: MessageEvent, pattern: str) -> None:
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
if not pattern:
await evt.respond(
"""
!chefmou morceau -> Donne un morceau aléatoire
!chefmou partition instru titre -> Renvoi le lien vers la partition de ce morceau pour cet instrument
"""
)
else:
if pattern == "morceau":
soup = await self.get_site_content()
s = soup.findAll('th', background='/fond3.gif')
ps = random.choice(s)
await evt.respond(ps.text)
elif pattern.__contains__("partition"):
chunks = pattern.split(None, 2)
if len(chunks) != 3 :
await evt.respond(
"""
!chefmou morceau -> Donne un morceau aléatoire
!chefmou partition instru titre -> Renvoi le lien vers la partition de ce morceau pour cet instrument
"""
)
loop.close()
return
soup = await self.get_site_content()
s = soup.find('th', string=chunks[2])
if not s :
await evt.respond("Morceau non trouvé")
return
t = s.parent.findAll('a')
idx = 9
if chunks[1].lower() == "souba" or chunks[1].lower() == "soubassophone" or chunks[1].lower() == "sb":
idx = 0
elif chunks[1].lower() == "basse" or chunks[1].lower() == "bs" :
idx = 1
elif chunks[1].lower() == "trombone" or chunks[1].lower() == "tb":
idx = 2
elif chunks[1].lower() == "trompette" or chunks[1].lower() == "tp":
idx = 3
elif chunks[1].lower() == "sax" or chunks[1].lower() == "saxophone":
idx = 4
elif chunks[1].lower() == "clarinette" or chunks[1].lower() == "cl":
idx = 5
else:
await evt.respond("Pas trouvé cet instru")
loop.close()
return
await evt.respond("["+chunks[2]+ " " + chunks[1]+"]"+"(<https://partoches.pustule.org"+t[idx].get("href")+">)")
else:
await evt.respond("Nope !")
loop.close()