mirror of
https://github.com/TeamPGM/PagerMaid_Plugins_Pyro.git
synced 2024-11-16 07:39:26 +00:00
pypi Search PyPI packages
This commit is contained in:
parent
b06a9a724c
commit
2a14e3ec97
49
pypi/main.py
Normal file
49
pypi/main.py
Normal file
@ -0,0 +1,49 @@
|
||||
import html
|
||||
import re
|
||||
|
||||
from pyrogram.enums import ParseMode
|
||||
|
||||
from pagermaid.enums import Message, AsyncClient
|
||||
from pagermaid.listener import listener
|
||||
|
||||
|
||||
def clean_html(raw_html):
|
||||
return re.sub(re.compile(r"<.*?>"), "", raw_html)
|
||||
|
||||
|
||||
def escape_definition(definition):
|
||||
for key, value in definition.items():
|
||||
if isinstance(value, str):
|
||||
definition[key] = html.escape(clean_html(value))
|
||||
return definition
|
||||
|
||||
|
||||
@listener(command="pypi",
|
||||
description="Search PyPI packages",
|
||||
parameters="The query string")
|
||||
async def pypi(message: Message, httpx: AsyncClient):
|
||||
if not message.arguments:
|
||||
return await message.edit("Please provide a query string")
|
||||
r = await httpx.get(f"https://pypi.org/pypi/{message.arguments}/json", follow_redirects=True)
|
||||
if r.status_code != 200:
|
||||
return await message.edit("Could not find the package")
|
||||
json = r.json()
|
||||
pypi_info = escape_definition(json["info"])
|
||||
text = """
|
||||
<b><a href="{package_link}">{package_name}</a></b> by <i>{author_name} {author_email}</i>
|
||||
平台:<b>{platform}</b>
|
||||
版本:<b>{version}</b>
|
||||
许可协议:<b>{license}</b>
|
||||
摘要:<b>{summary}</b>""".format(
|
||||
package_link=f"https://pypi.org/pypi/{message.arguments}",
|
||||
package_name=pypi_info["name"],
|
||||
author_name=pypi_info["author"],
|
||||
author_email=f"<{pypi_info['author_email']}>"
|
||||
if pypi_info["author_email"]
|
||||
else "",
|
||||
platform=pypi_info["platform"] or "未指定",
|
||||
version=pypi_info["version"],
|
||||
license=pypi_info["license"] or "未指定",
|
||||
summary=pypi_info["summary"],
|
||||
)
|
||||
await message.edit(text, parse_mode=ParseMode.HTML, disable_web_page_preview=True)
|
Loading…
Reference in New Issue
Block a user