diff --git a/misskaty/plugins/pypi_search.py b/misskaty/plugins/pypi_search.py index 9cf776f9..650f13b2 100644 --- a/misskaty/plugins/pypi_search.py +++ b/misskaty/plugins/pypi_search.py @@ -50,20 +50,41 @@ async def pypi_s(_, ctx: Message): "Please add query after command. Ex: /pypi pyrogram", del_in=6 ) pesan = await ctx.reply_msg("⏳ Please wait, getting data from pypi..", quote=True) - CurrentPage = 1 - pypires, PageLen, btn = await getDataPypi( - pesan, kueri, CurrentPage, ctx.from_user.id + html = await fetch.get(f"https://pypi.org/pypi/{pkgname}/json") + if html.status_code != 200: + return await pesan.edit_msg("Failed connect fo pypi server") + res = html.json() + requirement = ( + "".join(f"{i}, " for i in res["info"].get("requires_dist")) + if res["info"].get("requires_dist") + else "Unknown" ) - if not pypires: - return + msg = "" + msg += f"Package Name: {res['info'].get('name', 'Unknown')}\n" + msg += f"Version: {res['info'].get('version', 'Unknown')}\n" + msg += f"License: {res['info'].get('license', 'Unknown')}\n" + msg += f"Author: {res['info'].get('author', 'Unknown')}\n" + msg += f"Author Email: {res['info'].get('author_email', 'Unknown')}\n" + msg += f"Requirements: {requirement}\n" + msg += ( + f"Requires Python: {res['info'].get('requires_python', 'Unknown')}\n" + ) + msg += f"HomePage: {res['info'].get('home_page', 'Unknown')}\n" + msg += f"Bug Track: {res['info'].get('vulnerabilities', 'Unknown')}\n" + if res["info"].get("project_urls"): + msg += f"Docs Url: {res['info']['project_urls'].get('Documentation', 'Unknown')}\n" + msg += f"Description: {res['info'].get('summary', 'Unknown')}\n" + msg += ( + f"Pip Command: pip3 install {res['info'].get('name', 'Unknown')}\n" + ) + msg += f"Keywords: {res['info'].get('keywords', 'Unknown')}\n" keyboard = InlineKeyboard() - keyboard.paginate( - PageLen, CurrentPage, "page_pypi#{number}" + f"#{pesan.id}#{ctx.from_user.id}" - ) - keyboard.row(InlineButton("👇 Get Info ", "Hmmm")) - keyboard.row(*btn) keyboard.row(InlineButton("❌ Close", f"close#{ctx.from_user.id}")) - await pesan.edit_msg(pypires, reply_markup=keyboard) + try: + await pesan.edit_msg(pypires, reply_markup=keyboard) + except MessageTooLong: + url = await post_to_telegraph(False, f"{pkgname}-detail", msg) + await pesan.edit_msg(f"Result is too long:\n{url}", reply_markup=keyboard) @app.on_callback_query(filters.create(lambda _, __, query: "page_pypi#" in query.data))