80 lines
3.2 KiB
Python
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()
|
|
|