def fetch_info(self, ctx, cmd, title):
data = await self.get_xml(cmd, title)
try:
root = ET.fromstring(data)
except ET.ParseError:
return await self.bot.say("I couldn't find anything!")
else:
if len(root) == 1:
entry = root[0]
else:
msg = "**Please choose one by giving its number.**\n"
msg += "\n".join(['{} - {}'.format(n + 1, entry[1].text)
for n, entry in enumerate(root) if n < 10])
await self.bot.say(msg)
check = lambda m: m.content.isdigit() and int(m.content) in range(1, len(root) + 1)
resp = await self.bot.wait_for_message(timeout=15, author=ctx.message.author,
check=check)
if resp is None:
return
entry = root[int(resp.content)-1]
link = 'http://myanimelist.net/{}/{}'.format(cmd, entry.find('id').text)
desc = "MAL [{}]({})".format(entry.find('title').text, link)
syn_raw = entry.find('synopsis').text
title = entry.find('title').text
if syn_raw:
replace = {'"': '\"', '<br />': '', '—': ' - ', ''': '\'',
'“': '\"', '”': '\"', '[i]': '*', '[/i]': '*', '[b]': '**',
'[/b]': '**', '[url=': '', ']': ' - ', '[/url]': ''}
rep_sorted = sorted(replace, key=lambda s: len(s[0]), reverse=True)
rep_escaped = [re.escape(replacement) for replacement in rep_sorted]
pattern = re.compile("|".join(rep_escaped), re.I)
synopsis = pattern.sub(lambda match: replace[match.group(0)],
entry.find('synopsis').text)
else:
synopsis = "There is not a synopsis for {}".format(title)
# Build Embed
embed = discord.Embed(colour=0x0066FF, description=desc)
embed.title = title
embed.set_thumbnail(url=entry.find('image').text)
embed.set_footer(text=synopsis)
for k in switcher:
spec = entry.find(k)
if spec is not None and spec.text is not None:
embed.add_field(name=k.capitalize(),
value=html.unescape(spec.text.replace('<br />', '')))
await self.bot.say(embed=embed)
评论列表
文章目录