48 lines
1.2 KiB
Python
48 lines
1.2 KiB
Python
#!/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("Uso: ./pip_busca <cadena_busqueda>")
|
|
print("\nBusca paquetes en PyPI cuyo nombre contenga la cadena indicada.")
|
|
print("Ejemplo: ./pip_busca ansi")
|
|
|
|
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}")
|
|
|