Notiz
Die API wurde auf Version 2 umgestellt, wodurch natürlich wichtige Änderungen eingeführt wurden. Wenn Sie die vorherige Version dieser API verwenden möchten, beziehen Sie sich auf die letzte stabile Version.
Wichtig
https://api-aniwatch.onrender.com dient lediglich der Demonstration der API und verfügt über eine aktivierte Ratenbegrenzung, um den Bandbreitenverbrauch zu minimieren. Es wird empfohlen, Ihre eigene Instanz für den persönlichen Gebrauch bereitzustellen, indem Sie die API entsprechend Ihren Anforderungen anpassen.
Diese API ist lediglich eine inoffizielle API für hianime.to und steht in keiner anderen offiziellen Beziehung dazu.
Der Inhalt, den diese API bereitstellt, gehört nicht mir und wird auch nicht von mir gehostet. Diese gehören ihren jeweiligen Eigentümern. Diese API zeigt lediglich, wie man eine API erstellt, die Websites durchsucht und deren Inhalte verwendet.
Installation
Lokal
Docker
Umschläge
Hosten Sie Ihre Instanz
Vercel
Machen
Dokumentation
Holen Sie sich die Anime-Homepage
Holen Sie sich Informationen zu Anime-Informationen
Suchergebnisse abrufen
Suchvorschläge ERHALTEN
GET Producer Animes
Holen Sie sich Genre-Animes
GET Kategorie Animes
ERHALTEN Sie geschätzte Zeitpläne
Holen Sie sich Anime-Episoden
Holen Sie sich Anime-Episodenserver
Holen Sie sich Links zum Streamen von Anime-Episoden
Entwicklung
Mitwirkende
Danke
Unterstützung
Lizenz
Sternengeschichte
Klonen Sie das Repository und verschieben Sie es in das Verzeichnis.
Git-Klon https://github.com/ghoshRitesh12/aniwatch-api.gitcd aniwatch-api
Installieren Sie alle Abhängigkeiten.
npm i #oder Yarn Install oder pnpm i
Starten Sie den Server!
npm start #oder Yarn Start oder pnpm Start
Jetzt sollte der Server auf http://localhost:4000 laufen
Das Docker-Image ist bei GitHub Container Registry verfügbar.
Führen Sie die folgenden Befehle aus, um das Docker-Image abzurufen und auszuführen.
Docker Pull ghcr.io/ghoshritesh12/aniwatch docker run -p 4000:4000 ghcr.io/ghoshritesh12/aniwatch
Der obige Befehl startet den Server auf Port 4000. Sie können über http://localhost:4000 auf den Server zugreifen und den Port auch ändern, indem Sie die Option -p
in -p <port>:4000
ändern.
Sie können auch das Flag -d
hinzufügen, um den Container im getrennten Modus auszuführen.
Weitere Informationen finden Sie in der Datei .env.example
ANIWATCH_API_PORT
: Portnummer der Aniwatch-API
ANIWATCH_API_WINDOW_MS
: Dauer zum Verfolgen von Anfragen zur Ratenbegrenzung (in Millisekunden)
ANIWATCH_API_MAX_REQS
: maximale Anzahl von Anfragen im ANIWATCH_API_WINDOW_MS
-Zeitraum
ANIWATCH_API_CORS_ALLOWED_ORIGINS
: zulässige Ursprünge, durch Kommas getrennt und ohne Leerzeichen dazwischen
ANIWATCH_VERCEL_DEPLOYMENT
: Erforderlich, um die Vercel-Bereitstellung von anderen zu unterscheiden. Setzen Sie sie bei allen anderen Werten ungleich Null auf „true“.
ANIWATCH_API_HOSTNAME
: Legen Sie hier den Hostnamen Ihrer API-Instanz fest, um die Ratenbegrenzung zu aktivieren. Geben Sie diesen Wert nicht an, wenn Sie keine Ratenbegrenzung wünschen
Vorsicht
Für persönliche Einsätze:
Wenn Sie eine Ratenbegrenzung in Ihrer Anwendung wünschen, legen Sie die Umgebung ANIWATCH_API_HOSTNAME
auf den Hostnamen Ihrer bereitgestellten Instanz fest. Andernfalls legen Sie diese Umgebung nicht fest oder verwenden Sie sie überhaupt nicht. Wenn Sie diese Umgebung auf einen falschen Wert festlegen, können andere Probleme auftreten.
Entfernen Sie den if-Block aus der Datei server.ts
, der sich von den Zeilen 71 bis 83 erstreckt.
Stellen Sie Ihre eigene Instanz der Aniwatch-API auf Vercel bereit.
Notiz
Setzen Sie bei der Bereitstellung auf Vercel eine Umgebung namens ANIWATCH_VERCEL_DEPLOYMENT
auf true
“ oder einen beliebigen Wert ungleich Null, diese Umgebung muss jedoch vorhanden sein.
Stellen Sie Ihre eigene Instanz der Aniwatch-API auf Render bereit.
Die von der API bereitgestellten Endpunkte sind unten mit Beispielen aufgeführt, die die Fetch-API verwenden. Sie können jedoch jede beliebige http-Bibliothek verwenden.
GET
die Anime-Homepage/api/v2/hianime/home
const resp = waiting fetch("/api/v2/hianime/home");const data = waiting resp.json();console.log(data);
{ Erfolg: wahr, data: {genres: ["Action", "Cars", "Adventure", ...],latestEpisodeAnimes: [ {id: string,name: string,poster: string,type: string,episodes: { sub: number, dub: number,} }, {...},],spotlightAnimes: [ {id: string,name: string,jname: string,poster: string,description: string,rank: number,otherInfo: string[],episodes: { sub: number, dub: number,}, }, {...},],top10Animes: { today: [{ Episoden: {sub: number,dub: number, }, id: string , Name: String, Poster: String, Rang: Nummer},{...}, ], Monat: [...], Woche: [...]},topAiringAnimes: [ {id: string,name: string ,jname: string,poster: string, }, {...},],topUpcomingAnimes: [ {id: string,name: string,poster: string,duration: string,type: string,rating: string,episodes: { sub: number, dub: number,} }, {...},],trendingAnimes: [ {id: string,name: string,poster: string,rank: number, }, {...},],mostPopularAnimes: [ {id: string,name: string,poster: string,type: string,episodes: { sub: number, dub: number,} }, {...},],mostFavoriteAnimes: [ {id: string,name: string,poster: string,type: string,episodes: { sub: number, dub: number,} }, {...},],latestCompletedAnimes: [ {id: string,name: string,poster: string,type: string,episodes: { sub: Nummer, Dub: Nummer,} }, {...},], }}
? Zurück nach oben
GET
Informationen zu Anime-Informationen/api/v2/hianime/anime/{animeId}
Parameter | Typ | Beschreibung | Erforderlich? | Standard |
---|---|---|---|---|
animeId | Zeichenfolge | Die eindeutige Anime-ID (im Kebab-Fall). | Ja | -- |
const resp = waiting fetch("/api/v2/hianime/anime/attack-on-titan-112");const data = waiting resp.json();console.log(data);
{ Erfolg: wahr, Daten: {Anime: [Info: {ID: String,Name: String,Poster: String,Beschreibung: String,Statistik: {Bewertung: String, Qualität: String, Episoden: {Sub: Nummer,Dub: Nummer}, Typ: string, Dauer: string},promotionalVideos: [ {title: string | undefiniert,Quelle: string | undefiniert, Miniaturansicht: Zeichenfolge | undefiniert }, {...},],characterVoiceActor: [ {character: { id: string, poster: string, name: string, cast: string},voiceActor: { id: string, poster: string, name: string, Besetzung: string} }, {...},] } moreInfo: {aired: string,genres: ["Action", "Mystery", ...],status: string,studios: string,duration: string... }],mostPopularAnimes: [ {episodes: { sub: number, dub: number,},id: string,jname: string,name: string,poster: string,type: string }, {...} ,],recommendedAnimes: [ {id: string,name: string,poster: string,duration: string,type: string,rating: string,episodes: { sub: number, dub: number,} }, {...},],latedAnimes: [ {id: string,name: string,poster: string,duration: string,type: string,rating: string,episodes: { sub: number, dub: number,} }, {...},],seasons: [ {id: string,name: string,title: string,poster: string,isCurrent: boolean }, {...}] }}
? Zurück nach oben
GET
# einfaches Beispiel/api/v2/hianime/search?q={query}&page={page}# fortgeschritten example/api/v2/hianime/search?q={query}&page={page}&genres={genres}&type={type}&sort={sort}&season={season}&sprache={sub_or_dub}&status={status} &rated={rating}&start_date={yyyy-mm-dd}&end_date={yyyy-mm-dd}&score={score}
Parameter | Typ | Beschreibung | Erforderlich? | Standard |
---|---|---|---|---|
q | Zeichenfolge | Die Suchanfrage, also der Titel des gesuchten Artikels. | Ja | -- |
page | Nummer | Die Seitenzahl des Ergebnisses. | NEIN | 1 |
type | Zeichenfolge | Art des Animes. zB: movie | NEIN | -- |
status | Zeichenfolge | Status des Animes. zB: finished-airing | NEIN | -- |
rated | Zeichenfolge | Bewertung des Animes. zB: r+ oder pg-13 | NEIN | -- |
score | Zeichenfolge | Partitur des Anime. zB: good oder very-good | NEIN | -- |
season | Zeichenfolge | Staffel des ausgestrahlten Anime. zB: spring | NEIN | -- |
language | Zeichenfolge | Sprachkategorie des Animes. zB: sub oder sub-&-dub | NEIN | -- |
start_date | Zeichenfolge | Startdatum des Animes (JJJJ-MM-TT). zB: 2014-10-2 | NEIN | -- |
end_date | Zeichenfolge | Enddatum des Animes (JJJJ-MM-TT). zB: 2010-12-4 | NEIN | -- |
sort | Zeichenfolge | Sortierreihenfolge des Anime-Ergebnisses. zB: recently-added | NEIN | -- |
genres | Zeichenfolge | Genre des Animes, durch Kommas getrennt. zB: isekai,shounen | NEIN | -- |
[!TIP] Sowohl für
start_date
als auch fürend_date
muss das Jahr angegeben werden. Wenn Sie Datum oder Monat weglassen möchten, geben Sie stattdessen0
ein. Beispiel: Datum weglassen -> 0.10.2014, Monat weglassen -> 12.00.2014, beides weglassen -> 0.02.2014
// einfaches Beispielconst resp =wait fetch("/api/v2/hianime/search?q=titan&page=1");const data = waiting resp.json();console.log(data);// erweitertes Beispielconst resp = warte auf den Abruf( "/api/v2/hianime/search?q=girls&genres=action,adventure&type=movie&sort=score&season=spring&sprache=dub&status=finished-airing&rated=pg-13&start_date=2014-0-0&score=good");const data = waiting bzw. json();console.log(data);
{ Erfolg: wahr, Daten: {animes: [ {id: string,name: string,poster: string,duration: string,type: string,rating: string,episodes: { sub: number, dub: number,} }, {...} ,],mostPopularAnimes: [ {episodes: { sub: number, dub: number,},id: string,jname: string,name: string,poster: string,type: string }, {...},],currentPage: 1,totalPages: 1,hasNextPage: false,searchQuery: string,searchFilters: { [filter_name]: [filter_value] ...} }}
? Zurück nach oben
GET
/api/v2/hianime/search/suggestion?q={query}
Parameter | Typ | Beschreibung | Erforderlich? | Standard |
---|---|---|---|---|
q | Zeichenfolge | Die Suchvorschlagsabfrage. | Ja | -- |
const resp =wait fetch("/api/v2/hianime/search/suggestion?q=monster");const data =await resp.json();console.log(data);
{ Erfolg: wahr, Daten: {Vorschläge: [ {id: string,name: string,poster: string,jname: string,moreInfo: ["Jan 21, 2022", "Movie", "17m"] }, {...},] }}
? Zurück nach oben
GET
Producer Animes/api/v2/hianime/producer/{name}?page={page}
Parameter | Typ | Beschreibung | Erforderlich? | Standard |
---|---|---|---|---|
name | Zeichenfolge | Der Name des Anime-Produzenten (im Kebab-Fall). | Ja | -- |
Parameter | Typ | Beschreibung | Erforderlich? | Standard |
---|---|---|---|---|
page | Nummer | Die Seitenzahl des Ergebnisses. | NEIN | 1 |
const resp =wait fetch("/api/v2/hianime/producer/toei-animation?page=2");const data =await resp.json();console.log(data);
{ Erfolg: wahr, Daten: {producerName: „Toei Animation Anime“,animes: [ {id: string,name: string,poster: string,duration: string,type: string,rating: string,episodes: { sub: number, dub: number, } }, {...},],top10Animes: { today: [{ Episoden: {sub: number,dub: number, }, id: string, name: string, poster: string, rank: Nummer},{...}, ], Monat: [...], Woche: [...]},topAiringAnimes: [ {episodes: { sub: number, dub: number,},id: string,jname : string,name: string,poster: string,type: string }, {...},],currentPage: 2,totalPages: 11,hasNextPage: true }}
? Zurück nach oben
GET
Genre-Animes/api/v2/hianime/genre/{name}?page={page}
Parameter | Typ | Beschreibung | Erforderlich? | Standard |
---|---|---|---|---|
name | Zeichenfolge | Der Name des Anime-Genres (im Kebab-Fall). | Ja | -- |
Parameter | Typ | Beschreibung | Erforderlich? | Standard |
---|---|---|---|---|
page | Nummer | Die Seitenzahl des Ergebnisses. | NEIN | 1 |
const resp = waiting fetch("/api/v2/hianime/genre/shounen?page=2");const data = waiting resp.json();console.log(data);
{ Erfolg: wahr, Daten: {GenreName: „Shounen Anime“,Anime: [ {