#!/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 <cadena_busqueda>")
    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}")

