animelist.py 文件源码

python
阅读 23 收藏 0 点赞 0 评论 0

项目:Jumper-Cogs 作者: Redjumpman 项目源码 文件源码
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 = {'&quot;': '\"', '<br />': '', '&mdash;': ' - ', '&#039;': '\'',
                           '&ldquo;': '\"', '&rdquo;': '\"', '[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)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号