#!/usr/bin/env python3 ''' Author: LuisGuLo Release: v1.6 ChangeLog: v1.6: Peticion simple y extraccion v1.5: browsers de consola y dumps v1.4: Uso de requests-html v1.3: Modulos y venv v1.2: Peticion con user-agent v1.1: Peticion web mediante query v1.0: PoC inicial bash. Cambio a python. ''' import sys import requests from bs4 import BeautifulSoup def mostrar_ayuda(): print("══════════════════════════════════════════════════════════════") print("Uso: pip_busca ") print("\nBusca paquetes en PyPI cuyo nombre contenga la cadena indicada") print("Ejemplo: pip_busca ansi") print("══════════════════════════════════════════════════════════════") if len(sys.argv) < 2 or sys.argv[1] in ["--help", "-h"]: mostrar_ayuda() sys.exit(0) busqueda = sys.argv[1].lower() url = "https://pypi.org/simple/" try: response = requests.get(url) response.raise_for_status() except requests.RequestException as e: print(f"❌ Error al conectar con PyPI: {e}") sys.exit(1) soup = BeautifulSoup(response.text, "html.parser") paquetes = [a.text for a in soup.find_all("a")] coincidentes = [p for p in paquetes if busqueda in p.lower()] print(f"\n🔍 Paquetes que contienen '{busqueda}':\n") if not coincidentes: print("❌ No se encontraron coincidencias.") else: for nombre in coincidentes: print(f"📦 {nombre}")