Nota
La API ha pasado a la versión 2, por lo que, naturalmente, introduce cambios importantes. Si desea utilizar la versión anterior de esta API, consulte la última versión estable.
Importante
https://api-aniwatch.onrender.com solo está destinado a una demostración de la API y tiene habilitada la limitación de velocidad para minimizar el consumo de ancho de banda. Se recomienda implementar su propia instancia para uso personal personalizando la API según sea necesario.
Esta API es solo una API no oficial para hianime.to y de ninguna otra manera está relacionada oficialmente con la misma.
El contenido que proporciona esta API no es mío ni está alojado por mí. Estos pertenecen a sus respectivos dueños. Esta API simplemente demuestra cómo crear una API que raspe sitios web y utilice su contenido.
Instalación
Local
Estibador
sobres
Aloja tu instancia
Vercel
Prestar
Documentación
OBTENER la página de inicio de Anime
OBTENER Anime Acerca de Información
OBTENER resultados de búsqueda
OBTENER sugerencias de búsqueda
OBTENER animes de productores
OBTENER Género Animes
OBTENER Categoría Animes
OBTENER horarios estimados
OBTENER episodios de anime
OBTENER servidores de episodios de anime
OBTENER enlaces de transmisión de episodios de anime
Desarrollo
Colaboradores
Gracias
Apoyo
Licencia
Historia de las estrellas
Clona el repositorio y accede al directorio.
clon de git https://github.com/ghoshRitesh12/aniwatch-api.gitcd aniwatch-api
Instale todas las dependencias.
npm i #o instalación de hilo o pnpm i
¡Inicia el servidor!
npm start #o hilo de inicio o pnpm start
Ahora el servidor debería estar ejecutándose en http://localhost:4000
La imagen de Docker está disponible en GitHub Container Registry.
Ejecute los siguientes comandos para extraer y ejecutar la imagen de la ventana acoplable.
extracción de la ventana acoplable ghcr.io/ghoshritesh12/aniwatch ejecución de la ventana acoplable -p 4000:4000 ghcr.io/ghoshritesh12/aniwatch
El comando anterior iniciará el servidor en el puerto 4000. Puede acceder al servidor en http://localhost:4000 y también puede cambiar el puerto cambiando la opción -p
a -p <port>:4000
.
También puede agregar el indicador -d
para ejecutar el contenedor en modo independiente.
Puede encontrar más información en el archivo .env.example
ANIWATCH_API_PORT
: número de puerto de la API de aniwatch
ANIWATCH_API_WINDOW_MS
: duración para rastrear solicitudes de limitación de velocidad (en milisegundos)
ANIWATCH_API_MAX_REQS
: número máximo de solicitudes en el período de tiempo ANIWATCH_API_WINDOW_MS
ANIWATCH_API_CORS_ALLOWED_ORIGINS
: orígenes permitidos, separados por comas y sin espacios entre ellos
ANIWATCH_VERCEL_DEPLOYMENT
: necesario para distinguir la implementación de Vercel de otras, configúrelo en verdadero para cualquier otro valor distinto de cero
ANIWATCH_API_HOSTNAME
: configure esto en el nombre de host de su instancia de API para habilitar la limitación de velocidad, no tenga este valor si no desea limitar la velocidad
Precaución
Para implementaciones personales:
Si desea tener una limitación de velocidad en su aplicación, configure el entorno ANIWATCH_API_HOSTNAME
en el nombre de host de su instancia implementada; de lo contrario, no configure ni tenga este entorno en absoluto. Si configura este entorno con un valor incorrecto, puede enfrentar otros problemas.
Elimine el bloque if del archivo server.ts
, que abarca desde las líneas 71 a 83.
Implemente su propia instancia de Aniwatch API en Vercel.
Nota
Al implementar en vercel, establezca un entorno llamado ANIWATCH_VERCEL_DEPLOYMENT
en true
o cualquier valor distinto de cero, pero este entorno debe estar presente.
Implemente su propia instancia de Aniwatch API en Render.
Los puntos finales expuestos por la API se enumeran a continuación con ejemplos que utilizan la API Fetch, pero puede utilizar cualquier biblioteca http.
GET
la página de inicio de Anime/api/v2/hianime/home
const resp = await fetch("/api/v2/hianime/home");const data = await resp.json();console.log(data);
{ éxito: cierto, datos: {géneros: ["Acción", "Coches", "Aventura", ...],últimoEpisodioAnimes: [ {id: cadena,nombre: cadena,póster: cadena,tipo: cadena,episodios: { sub: número, doblaje: número,} }, {...},], spotlightAnimes: [ {id: cadena, nombre: cadena, jname: cadena, cartel: cadena, descripción: cadena, rango: número, otra información: cadena [], episodios: { sub: número, doblaje: número,}, }, {...},], top10Animes: { hoy: [{ episodios: {sub: número, doblaje: número, }, id: cadena , nombre: cadena, cartel: cadena, rango: número},{...}, ], mes: [...], semana: [...]},topAiringAnimes: [ {id: cadena,nombre: cadena ,jname: cadena,póster: cadena, }, {...},],topUpcomingAnimes: [ {id: cadena,nombre: cadena,póster: cadena,duración: cadena,tipo: cadena,clasificación: cadena,episodios: { sub: número, doblaje: número,} }, {...},], animes de tendencia: [ {id: cadena, nombre: cadena, cartel: cadena, rango: número, }, {...},], animes más populares: [ {id: cadena, nombre: cadena, cartel: cadena, tipo: cadena, episodios: { sub: número, doblaje: número,} }, {...},], animes más favoritos: [ {id: cadena, nombre: cadena, cartel: cadena, tipo: cadena, episodios: { sub: número, doblaje: número,} }, {...},], últimos animes completados: [ {id: cadena, nombre: cadena, cartel: cadena, tipo: cadena, episodios: { sub: número, doblaje: número,} }, {...},], }}
? Volver al principio
GET
Anime Acerca de Información/api/v2/hianime/anime/{animeId}
Parámetro | Tipo | Descripción | ¿Requerido? | Por defecto |
---|---|---|---|---|
animeId | cadena | La identificación única del anime (en el caso del kebab). | Sí | -- |
const resp = await fetch("/api/v2/hianime/anime/attack-on-titan-112");const data = await resp.json();console.log(data);
{ éxito: cierto, datos: {anime: [información: {id: cadena, nombre: cadena, cartel: cadena, descripción: cadena, estadísticas: { calificación: cadena, calidad: cadena, episodios: {sub: número, doblaje: número}, tipo: cadena, duración: cadena},Videos promocionales: [ {título: cadena | indefinido, fuente: cadena | indefinido, miniatura: cadena | indefinido }, {...},],characterVoiceActor: [ {character: { id: string, poster: string, name: string, cast: string},voiceActor: { id: string, poster: string, name: string, cast: string} }, {...},] } másInformación: {emitido: string,géneros: ["Acción", "Misterio", ...],estado: string,estudios: string,duración: cadena... }],mostPopularAnimes: [ {episodios: { sub: número, doblaje: número,},id: cadena,jname: cadena,nombre: cadena,póster: cadena,tipo: cadena }, {...} ,],Animes recomendados: [ {id: cadena,nombre: cadena,póster: cadena,duración: cadena,tipo: cadena,clasificación: cadena,episodios: { sub: número, doblaje: número,} }, {...},],animes relacionados: [ {id: cadena,nombre: cadena,póster: cadena,duración: cadena,tipo: cadena,clasificación: cadena,episodios: { sub: número, doblaje: número,} }, {...},],temporadas: [ {id: cadena,nombre: cadena,título: cadena,póster: cadena,isCurrent: boolean }, {...}] }}
? Volver al principio
GET
resultados de búsqueda# ejemplo básico/api/v2/hianime/search?q={query}&page={page}# avanzado ejemplo/api/v2/hianime/search?q={query}&page={page}&genres={genres}&type={type}&sort={sort}&season={temporada}&la nguage={sub_or_dub}&status={status}&rating={calificación}&start_date={aaaa-mm-dd}&end_date={aaaa-mm-dd}&score={score}
Parámetro | Tipo | Descripción | ¿Requerido? | Por defecto |
---|---|---|---|---|
q | cadena | La consulta de búsqueda, es decir, el título del artículo que estás buscando. | Sí | -- |
page | número | El número de página del resultado. | No | 1 |
type | cadena | Tipo de anime. por ejemplo: movie | No | -- |
status | cadena | Estado del anime. por ejemplo: finished-airing | No | -- |
rated | cadena | Calificación del anime. por ejemplo: r+ o pg-13 | No | -- |
score | cadena | Puntuación del anime. por ejemplo: good o very-good | No | -- |
season | cadena | Temporada del anime emitido. por ejemplo: spring | No | -- |
language | cadena | Categoría de idioma del anime. por ejemplo: sub o sub-&-dub | No | -- |
start_date | cadena | Fecha de inicio del anime (aaaa-mm-dd). por ejemplo: 2014-10-2 | No | -- |
end_date | cadena | Fecha de finalización del anime (aaaa-mm-dd). por ejemplo: 2010-12-4 | No | -- |
sort | cadena | Orden de clasificación del resultado del anime. por ejemplo: recently-added | No | -- |
genres | cadena | Género del anime, separados por comas. por ejemplo: isekai,shounen | No | -- |
[!TIP] Tanto para
start_date
como paraend_date
, se debe mencionar el año. Si desea omitir la fecha o el mes, especifique0
en su lugar. Por ejemplo: omitiendo fecha -> 2014-10-0, omitiendo mes -> 2014-0-12, omitiendo ambos -> 2014-0-0
// ejemplo básicoconst resp = await fetch("/api/v2/hianime/search?q=titan&page=1");const data = await resp.json();console.log(data);// ejemplo avanzadoconst resp = esperar a buscar ( "/api/v2/hianime/search?q=girls&genres=action,adventure&type=movie&sort=score&season=spring&language=dub&status=finished-airing&rated=pg-13&start_date=2014-0-0&score=good"); datos constantes = en espera de resp. json();console.log(datos);
{ éxito: cierto, datos: {animes: [ {id: cadena, nombre: cadena, cartel: cadena, duración: cadena, tipo: cadena, calificación: cadena, episodios: { sub: número, doblaje: número,} }, {...} ,],mostPopularAnimes: [ {episodios: { sub: número, doblaje: número,},id: cadena,jname: cadena,nombre: cadena,póster: cadena,tipo: cadena }, {...},], página actual: 1, páginas totales: 1, tiene página siguiente: falso, consulta de búsqueda: cadena, filtros de búsqueda: { [nombre_filtro]: [valor_filtro] ...} }}
? Volver al principio
GET
sugerencias de búsqueda/api/v2/hianime/search/suggestion?q={consulta}
Parámetro | Tipo | Descripción | ¿Requerido? | Por defecto |
---|---|---|---|---|
q | cadena | La consulta de sugerencia de búsqueda. | Sí | -- |
const resp = await fetch("/api/v2/hianime/search/suggestion?q=monster");const data = await resp.json();console.log(data);
{ éxito: cierto, datos: {sugerencias: [ {id: string,name: string,poster: string,jname: string,moreInfo: ["21 de enero de 2022", "Película", "17m"] }, {...},] }}
? Volver al principio
GET
animes de productores/api/v2/hianime/producer/{nombre}?page={página}
Parámetro | Tipo | Descripción | ¿Requerido? | Por defecto |
---|---|---|---|---|
name | cadena | El nombre del productor de anime (en el caso de kebab). | Sí | -- |
Parámetro | Tipo | Descripción | ¿Requerido? | Por defecto |
---|---|---|---|---|
page | número | El número de página del resultado. | No | 1 |
const resp = await fetch("/api/v2/hianime/producer/toei-animation?page=2");const data = await resp.json();console.log(data);
{ éxito: cierto, datos: {nombre del productor: "Toei Animation Anime", animes: [ {id: cadena, nombre: cadena, póster: cadena, duración: cadena, tipo: cadena, calificación: cadena, episodios: { sub: número, doblaje: número, } }, {...},],top10Animes: { hoy: [{ episodios: {sub: número, doblaje: número, }, id: cadena, nombre: cadena, cartel: cadena, rango: número},{...}, ], mes: [...], semana: [...]},topAiringAnimes: [ {episodios: { sub: número, doblaje: número,},id: cadena,jname : cadena, nombre: cadena, cartel: cadena, tipo: cadena }, {...},], página actual: 2, páginas totales: 11, tiene página siguiente: verdadero }}
? Volver al principio
GET
Género Animes/api/v2/hianime/genre/{nombre}?page={página}
Parámetro | Tipo | Descripción | ¿Requerido? | Por defecto |
---|---|---|---|---|
name | cadena | El nombre del género anime (en el caso del kebab). | Sí | -- |
Parámetro | Tipo | Descripción | ¿Requerido? | Por defecto |
---|---|---|---|---|
page | número | El número de página del resultado. | No | 1 |
const resp = await fetch("/api/v2/hianime/genre/shounen?page=2");const data = await resp.json();console.log(data);
{ éxito: cierto, datos: {nombre del género: "Shounen Anime", animes: [ {