El proveedor javlibrary es el fallback de catálogo profundo: genial cuando un código falta en todas partes, mal si lo fijas en cada request y te preguntas por qué todo se siente lento. Así se llama sin adivinar.
Cuándo echarle mano
Usa javlibrary cuando:
- Un código da 404 en FANZA/DMM, missav, javdb y javdatabase
- Quieres la URL de página de JavLibrary + imágenes de muestra para un DVD ID conocido
- Haces una búsqueda bare por keyword y los proveedores más rápidos no devuelven nada útil
No lo fijas como tu fuente por defecto de “siempre pruébala primero”. Scrapeo con navegador = más latencia. Déjalo al final del fan-out salvo que tengas un motivo.
Contexto de por qué existe: API de JavLibrary.
1. Consigue una key
Regístrate en app.javinfo.dev. Pon la key en x-javinfo-key. La misma key funciona en RapidAPI con sus headers si prefieres ese camino.
2. Registro completo: POST /movie
Código exacto, fila normalizada completa:
curl -X POST "https://api.javinfo.dev/movie" \ -H "x-javinfo-key: YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{ "q": "SSIS-001", "providers": "javlibrary" }'Obtienes título, reparto, géneros (categories), duración, fecha de lanzamiento, estudio (makers / label), carátula (jacketFullUrl), más extra.pageUrl y extra.sampleImages. source será "javlibrary".
Sin magnets. Sin streams .m3u8. Si necesitas eso, fija javdb o missav — misma forma de metadatos, extras distintos.
3. Búsqueda en lista: POST /query
Búsqueda por keyword sobre códigos y labels. Déjala bare:
curl -X POST "https://api.javinfo.dev/query" \ -H "x-javinfo-key: YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{ "q": "SSIS", "providers": "javlibrary", "num": 10, "page": 1 }'Qué funciona:
q— fragmento de código o keyword tipo labelnum— tamaño de página (por defecto 10, máx. 50). Las filas se cortan anumantes del enriquecimiento de carátulapage— base 1; javlibrary sirve páginas de lista grandes y nosotros cortamos anum
Qué saca a javlibrary en silencio (o a gritos):
- Cualquier
filter(género, actriz, rango de duración, censored, …) - Cualquier
sortque no searelevance(o el default)
En modo fan-out esos params saltan javlibrary y prueban el siguiente proveedor capaz. Si fijas "providers": "javlibrary" con un filtro que no puede cumplir, recibes un 422 con motivo — no una adivinanza parcial.
Los hits de query se ven así:
{ "q": "SSIS", "source": "javlibrary", "count": 10, "results": [ { "id": "javmezzbqu", "dvdId": "SSIS-001", "title": "Newcomer NO.1 STYLE ...", "cover": "https://...", "releaseDate": "2020-07-07", "extra": { "url": "https://www.javlibrary.com/en/..." } } ]}Las carátulas y fechas de lanzamiento se rellenan desde el índice DMM/FANZA cuando podemos matchear el código. Los thumbnails de lista son el fallback.
Fan-out vs pin
Orden por defecto (el primer hit completo gana):
FANZA → DMM → missav → javdb → javdatabase → javlibraryOmite providers y javlibrary solo responde cuando todos los de delante fallan o no pueden satisfacer el request. Fíjalo cuando quieras esa fuente aunque una más rápida también funcionaría.
Errores que queman una llamada
Esperar enlaces de descarga. Proveedor equivocado. Usa javdb.
Mandar filter.genre con javlibrary fijado. 422. Quita el filtro o fija una fuente que lo soporte (fanza/dmm, missav, javdatabase).
Usarlo por velocidad. Está al final por una razón. El cache ayuda en códigos repetidos (cacheTtl es una hora del lado del servidor), pero el primer scrape sigue siendo trabajo de navegador.
Tratar /query como un explorador de archivo completo. Es relevancia por keyword, no archivos género ∩ estudio. Para navegar estilo archivo, javdatabase se acerca más.
Precio + siguiente paso
/movie exitoso = $0.0005. /query exitoso = $0.0002. Misses y errores no se cobran. Registros nuevos: 1.000+ consultas gratis.
Agarra una key, corre el curl de arriba y cablea el mismo body en tu app. Una integración agnóstica de proveedor — JavLibrary es solo otro id en providers.