注記
API はバージョン 2 に移行したため、当然ながら重大な変更が導入されました。この API の以前のバージョンを使用したい場合は、最新の安定バージョンを参照してください。
重要
https://api-aniwatch.onrender.com は API のデモのみを目的としており、帯域幅の消費を最小限に抑えるためにレート制限が有効になっています。必要に応じて API をカスタマイズし、個人使用の独自のインスタンスをデプロイすることをお勧めします。
この API は、hianime.to の非公式 API にすぎず、これとは正式に関連するものではありません。
この API が提供するコンテンツは私のものではなく、私がホストするものでもありません。これらはそれぞれの所有者に属します。この API は、Web サイトをスクレイピングしてそのコンテンツを使用する API を構築する方法を示しているだけです。
インストール
地元
ドッカー
環境
インスタンスをホストする
ヴェルセル
与える
ドキュメント
アニメホームページを取得
アニメに関する情報を入手
検索結果を取得する
検索候補を取得する
プロデューサーアニメをGET
ジャンルアニメを取得
カテゴリアニメをGET
推定スケジュールを取得する
アニメエピソードを入手
アニメエピソードサーバーを取得
アニメエピソードのストリーミングリンクを入手
発達
貢献者
ありがとう
サポート
ライセンス
スターの歴史
リポジトリのクローンを作成し、ディレクトリに移動します。
git clone https://github.com/ghoshRitesh12/aniwatch-api.gitcd aniwatch-api
すべての依存関係をインストールします。
npm i #またはyarn installまたはpnpm i
サーバーを起動してください!
npm start #またはyarn startまたはpnpm start
これで、サーバーは http://localhost:4000 で実行されるはずです。
Docker イメージは GitHub Container Registry で入手できます。
次のコマンドを実行して、Docker イメージをプルして実行します。
ドッカープル ghcr.io/ghoshritesh12/aniwatch docker run -p 4000:4000 ghcr.io/ghoshritesh12/aniwatch
上記のコマンドは、ポート 4000 でサーバーを起動します。 http://localhost:4000 でサーバーにアクセスできます。また、 -p
オプションを-p <port>:4000
に変更してポートを変更することもできます。
-d
フラグを追加して、コンテナーをデタッチ モードで実行することもできます。
詳細については、 .env.example
ファイルを参照してください。
ANIWATCH_API_PORT
: aniwatch APIのポート番号
ANIWATCH_API_WINDOW_MS
: レート制限のリクエストを追跡する期間 (ミリ秒単位)
ANIWATCH_API_MAX_REQS
: ANIWATCH_API_WINDOW_MS
期間内のリクエストの最大数
ANIWATCH_API_CORS_ALLOWED_ORIGINS
: 許可されるオリジン。カンマで区切られ、間にスペースは含まれません。
ANIWATCH_VERCEL_DEPLOYMENT
: vercel デプロイメントを他のデプロイメントと区別するために必要です。他のゼロ以外の値の場合は true に設定します。
ANIWATCH_API_HOSTNAME
: レート制限を有効にするには、これを API インスタンスのホスト名に設定します。レート制限をしたくない場合は、この値を指定しないでください。
注意
個人的な展開の場合:
アプリケーションでレート制限を行いたい場合は、 ANIWATCH_API_HOSTNAME
環境をデプロイされたインスタンスのホスト名に設定します。それ以外の場合は、この環境を設定または設定しないでください。この環境を間違った値に設定すると、他の問題が発生する可能性があります。
server.ts
ファイルの 71 行目から 83 行目までの if ブロックを削除します。
Aniwatch API の独自のインスタンスを Vercel にデプロイします。
注記
vercel にデプロイする場合、 ANIWATCH_VERCEL_DEPLOYMENT
という名前の環境をtrue
またはゼロ以外の値に設定しますが、この環境は存在する必要があります。
Aniwatch API の独自のインスタンスを Render にデプロイします。
API によって公開されるエンドポイントは、Fetch API を使用する例とともに以下にリストされていますが、任意の http ライブラリを使用できます。
GET
/api/v2/hianime/home
const resp = await fetch("/api/v2/hianime/home");const data = await resp.json();console.log(data);
{ 成功: true、 データ: {ジャンル: ["アクション"、"カーズ"、"アドベンチャー"、...]、最新エピソードアニメ: [ {id: string,name: string,poster: string,type: string,episodes: { sub:number, dub: 番号,} }, {...},],spotlightAnimes: [ {id: string,name: string,jname: string,poster: string,description: string,rank: number,otherInfo: string[],episodes: { サブ: 番号, 吹き替え: 番号,}, }, {...},],top10アニメ: { 今日: [{ エピソード: {サブ: 番号,吹き替え: 番号, }, id: string 、名前: string、投稿者: string、ランク:number}、{...}、]、月: [...]、週: [...]}、topAiringAnimes: [ {id: string,name: string 、jname: 文字列、ポスター: 文字列、 }, {...},],topUpcomingAnimes: [ {id: string,name: string,poster: string,duration: string,type: string, ratings: string,episodes: { sub:number, dub:number,} }, {...},],トレンドアニメ: [ {id: string,name: string,poster: string,rank:number, }, {...},],most PopularAnimes: [ {id: string,name:文字列、ポスター: string,type: string,episodes: { sub:number, dub:number,} }, {...},],mostFavoriteAnimes: [ {id: string,name: string,poster: string,type: string,episodes: { サブ: 番号, 吹き替え: 番号,} }, {...},],latestCompletedAnimes: [ {id: 文字列,名前: 文字列,ポスター: 文字列,タイプ: 文字列,エピソード: { サブ: 番号, 吹き替え: 番号、} }、 {...}、]、 }}
?トップに戻る
GET
/api/v2/hianime/anime/{animeId}
パラメータ | タイプ | 説明 | 必須? | デフォルト |
---|---|---|---|---|
animeId | 弦 | 一意のアニメ ID (ケバブの場合)。 | はい | -- |
const resp = await fetch("/api/v2/hianime/anime/ Attack-on-titan-112");const data = await resp.json();console.log(data);
{ 成功: true、 データ: {アニメ: [ 情報: {id: 文字列,名前: 文字列,ポスター: 文字列,説明: 文字列,統計: { 評価: 文字列, 品質: 文字列, エピソード: {サブ: 番号, 吹き替え: 番号 }, タイプ: string、期間: string}、プロモーションビデオ: [ {タイトル: string |未定義、ソース: 文字列 |未定義、サムネイル: 文字列 |未定義 }, {...},],characterVoiceActor: [ {character: { id: string,poster: string, name: string, Cast: string},voiceActor: { id: string,poster: string, name: string,キャスト: string} }, {...},] } moreInfo: {放送: string,ジャンル: ["アクション", "ミステリー", ...],ステータス: string,スタジオ: string,期間: string... }],most PopularAnimes: [ {episodes: { sub: 番号, dub: 番号,},id: string,jname: string,name: string,poster: string,type: string }, {...} ,],おすすめアニメ: [ {id: string,name: string,poster: string,duration: string,type: string,rated: string,episodes: { sub:number, dub:number,} }, {...},],関連アニメ: [ {id: string,name: string,poster: string,duration: string,type: string, ratings: string,episodes: { sub:number, dub:number,} }, {...},],seasons: [ {id: string,name: string,title: string,poster: string,isCurrent: boolean }, {...}] }}
?トップに戻る
GET
# 基本的な例/api/v2/hianime/search?q={query}&page={page}# 高度なexample/api/v2/hianime/search?q={query}&page={page}&genres={genres}&type={type}&sort={sort}&season={season}& language={sub_or_dub}&status={status} &rated={評価}&start_date={yyyy-mm-dd}&end_date={yyyy-mm-dd}&score={スコア}
パラメータ | タイプ | 説明 | 必須? | デフォルト |
---|---|---|---|---|
q | 弦 | 検索クエリ、つまり、探しているアイテムのタイトル。 | はい | -- |
page | 番号 | 結果のページ番号。 | いいえ | 1 |
type | 弦 | アニメの種類。例: movie | いいえ | -- |
status | 弦 | アニメのステータス。例: finished-airing | いいえ | -- |
rated | 弦 | アニメの評価。例: r+ またはpg-13 | いいえ | -- |
score | 弦 | アニメのスコア。例: good 、またはvery-good | いいえ | -- |
season | 弦 | 放送中のアニメのシーズン。例: spring | いいえ | -- |
language | 弦 | アニメの言語カテゴリ。例: sub またはsub-&-dub | いいえ | -- |
start_date | 弦 | アニメの開始日(yyyy-mm-dd)。例: 2014-10-2 | いいえ | -- |
end_date | 弦 | アニメの終了日(yyyy-mm-dd)。例: 2010-12-4 | いいえ | -- |
sort | 弦 | アニメ結果の並び順。例: recently-added | いいえ | -- |
genres | 弦 | アニメのジャンルをカンマで区切って指定します。例: isekai,shounen | いいえ | -- |
[!TIP]
start_date
とend_date
の両方で、年を指定する必要があります。日付または月を省略したい場合は、代わりに0
指定します。例:日付省略 -> 2014-10-0、月省略 -> 2014-0-12、両方省略 -> 2014-0-0
// 基本的な例const resp = await fetch("/api/v2/hianime/search?q=titan&page=1");const data = await resp.json();console.log(data);// 高度な例const resp =フェッチを待ちます( "/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");const data = await resp. json();console.log(データ);
{ 成功: true、 データ: {アニメ: [ {id: string,name: string,poster: string,duration: string,type: string, ratings: string,episodes: { sub:number, dub:number,} }, {...} ,],most PopularAnimes: [ {episodes: { sub: 番号, dub: 番号,},id: string,jname: string,name: string,poster: string,type: string }, {...},],currentPage : 1,totalPages: 1,hasNextPage: false,searchQuery: string,searchFilters: { [フィルター名]: [フィルター値] ...} }}
?トップに戻る
GET
/api/v2/hianime/search/suggestion?q={クエリ}
パラメータ | タイプ | 説明 | 必須? | デフォルト |
---|---|---|---|---|
q | 弦 | 検索候補クエリ。 | はい | -- |
const resp = await fetch("/api/v2/hianime/search/suggestion?q=monster");const data = await resp.json();console.log(data);
{ 成功: true、 データ: {suggestions: [ {id: string,name: string,poster: string,jname: string,moreInfo: ["2022 年 1 月 21 日", "映画", "17 分"] }, {...},] }}
?トップに戻る
GET
/api/v2/hianime/Producer/{名前}?page={ページ}
パラメータ | タイプ | 説明 | 必須? | デフォルト |
---|---|---|---|---|
name | 弦 | アニメプロデューサーの名前(ケバブの場合)。 | はい | -- |
パラメータ | タイプ | 説明 | 必須? | デフォルト |
---|---|---|---|---|
page | 番号 | 結果のページ番号。 | いいえ | 1 |
const resp = await fetch("/api/v2/hianime/Producer/toei-animation?page=2");const data = await resp.json();console.log(data);
{ 成功: true、 data: {プロデューサー名: "東映アニメーション アニメ",animes: [ {id: string,name: string,poster: string,duration: string,type: string, ratings: string,episodes: { sub:number, dub:number, } }, {...},],top10アニメ: { 今日: [{ エピソード: {サブ: 番号,ダブ: 番号, }, ID: 文字列, 名前: 文字列, ポスター: 文字列, ランク: 番号},{. ..}、 ]、月: [...]、週: [...]}、topAiringAnimes: [ {エピソード: { サブ: 番号、吹き替え: 番号、}、id: 文字列、jname: 文字列、名前: 文字列、ポスター: string,type: string }, {...},],currentPage: 2,totalPages: 11,hasNextPage: true }}
?トップに戻る
GET
/api/v2/hianime/genre/{名前}?page={ページ}
パラメータ | タイプ | 説明 | 必須? | デフォルト |
---|---|---|---|---|
name | 弦 | アニメのジャンル名(ケバブの場合)。 | はい | -- |
パラメータ | タイプ | 説明 | 必須? | デフォルト |
---|---|---|---|---|
page | 番号 | 結果のページ番号。 | いいえ | 1 |
const resp = await fetch("/api/v2/hianime/genre/shounen?page=2");const data = await resp.json();console.log(data);
{ 成功: true、 データ: {ジャンル名: "少年アニメ"、アニメ: [ {