筆記
API 已轉移到版本 2,因此自然會引入重大變更。如果您想使用此 API 的早期版本,請參閱最新的穩定版本。
重要的
https://api-aniwatch.onrender.com 僅用於演示 API,並啟用速率限制以最大限度地減少頻寬消耗。建議根據需要自訂 api 來部署您自己的執行個體供個人使用。
此 API 只是 hianime.to 的非官方 api,與官方沒有其他關係。
這個api提供的內容不是我的,也不是我所託管的。這些屬於各自的所有者。此 api 只是示範如何建立一個抓取網站並使用其內容的 api。
安裝
當地的
碼頭工人
環境
託管您的實例
韋爾塞爾
使成為
文件
取得動漫首頁
獲取動漫訊息
取得搜尋結果
取得搜尋建議
取得製作人動漫
獲取類型動漫
取得類別動漫
取得預計時間表
取得動漫劇集
取得動漫劇集伺服器
獲取動漫劇集流媒體鏈接
發展
貢獻者
謝謝
支援
執照
明星歷史
克隆儲存庫並移至目錄中。
git 克隆 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 容器註冊表中取得。
執行以下命令來拉取並執行 docker 映像。
docker pull ghcr.io/ghoshritesh12/aniwatch docker run -p 4000:4000 ghcr.io/ghoshritesh12/aniwatch
上面的命令將在-p <port>:4000
-p
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 區塊。
在 Vercel 上部署您自己的 Aniwatch API 實例。
筆記
部署到 vercel 時,將名為ANIWATCH_VERCEL_DEPLOYMENT
的環境設為true
或任何非零值,但此環境必須存在。
在 Render 上部署您自己的 Aniwatch API 實例。
下面列出了 api 公開的端點以及使用 Fetch API 的範例,但您可以使用任何 http 函式庫。
GET
動漫首頁/api/v2/hianime/home
const resp = wait fetch("/api/v2/hianime/home");const data = wait resp.json();console.log(data);
{ 成功:真實, 數據:{流派:[“動作”,“汽車總動員”,“冒險”,...],latestEpisodeAnimes:[ {id:字符串,名稱:字符串,海報:字符串,類型:字符串,劇集:{子:數字, dub: number,} }, {...},],spotlightAnimes: [ {id: string,name: string,jname: string,poster: string,description: string,rank: number,otherInfo : string[],episodes : { sub: number, dub: number,}, }, {...},],top10Animes: { 今天: [{ Episodes: {sub: number,dub: number, }, id: string, name: string,海報:字串,排名:數字},{...},],月份:[...],週:[...]},topAiringAnimes:[ {id:字串,名稱:字串,jname:字串,海報: 字串, }, {...},],topUpcomingAnimes: [ {id: 字串,名稱: 字串,海報: 字串,持續時間: 字串,類型: 字串,評級: 字串,劇集: { 子: 數字, 配音: number,} }, {...},],trendingAnimes: [ {id: string,name: string,poster: string,rank : number, }, {...},],mostPopularAnimes: [ {id:字串,名稱: 字串,海報: 字串,類型: 字串,集數: { 子: 數字, 配音: 數字,} }, {...},],mostFavoriteAnimes: [ {id: 字串,名稱: 字串,海報:字串,類型:字串,劇集:{ 子:數字,配音:數字,} },{ ...},],latestCompletedAnimes:[ {id:字串,名稱:字串,海報:字串,類型:字串,劇集: { 子:數字,配音:數字,} },{... },], }}
?回到頂部
GET
動漫訊息/api/v2/hianime/anime/{animeId}
範圍 | 類型 | 描述 | 必需的? | 預設 |
---|---|---|---|---|
animeId | 細繩 | 唯一的動漫 ID(在烤肉串的情況下)。 | 是的 | -- |
const resp = wait fetch("/api/v2/hianime/anime/attack-on-titan-112");const data = wait resp.json();console.log(data);
{ 成功:真實, 資料:{動漫:[資訊:{id:字串,名稱:字串,海報:字串,描述:字串,統計資料:{評級:字串,品質:字串,劇集:{子:數字,配音:數字},類型:字串,持續時間:字串},促銷影片:[ {標題:字串|未定義,來源:字串 |未定義,縮圖:字串 |未定義}, {...},],characterVoiceActor: [ {character: { id: 字串, 海報: 字串, 名稱: 字串, 演員: 字串},voiceActor: { id: 字串, 海報:字串, 名稱: 字串,演員:字串} },{...},] } 更多資訊:{播出:字串,流派:[“動作”,“神秘”,...],狀態:字串,工作室:字串,持續時間:字串.. }],最熱門動畫: [ {劇集: { sub: number, dub: number,},id: string,jname: string,name : string,poster: string,type: string }, {...},],推薦動畫:[ {id:字串,名稱:字串,海報:字串,持續時間:字串,類型:字串,評級:字串,劇集:{子:數字,配音:數字,} },{...},], relatedAnimes: [ {id: string,name: string,poster: string,duration: string,type : string, rating: string,episodes: { sub: number, dub: number,} }, {...},],季節:[ {id:字串,名稱:字串,標題:字串,海報:字串,isCurrent:布林值},{...}] }}
?回到頂部
GET
搜尋結果# 基本範例/api/v2/hianime/search?q={query}&page={page}# 進階範例/api/v2/hianime/search?q={query}&page={page}&genres={genres}&type ={類型}&排序={排序}&季節={季節}&語言={sub_or_dub}&狀態={狀態}&評級={評級}&開始日期={yyyy-mm-dd}&結束_日期= {yyyy-mm-dd}&分數={分數}
範圍 | 類型 | 描述 | 必需的? | 預設 |
---|---|---|---|---|
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 = wait fetch("/api/v2/hianime/search?q=titan&page=1");const data = wait 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&lated=pg-13&start_date=2014-0-0&score=good") 等; json();console.log(數據);
{ 成功:真實, 資料:{動畫:[ {id:字串,名稱:字串,海報:字串,持續時間:字串,類型:字串,評級:字串,劇集:{子:數字,配音:數字, } },{...} ,],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] ...} }}
?回到頂部
GET
搜尋建議/api/v2/hianime/search/suggestion?q={查詢}
範圍 | 類型 | 描述 | 必需的? | 預設 |
---|---|---|---|---|
q | 細繩 | 搜尋建議查詢。 | 是的 | -- |
const resp = wait fetch("/api/v2/hianime/search/suggestion?q=monster");const data = wait resp.json();console.log(data);
{ 成功:真實, 資料:{建議:[ {id:字串,名稱:字串,海報:字串,jname:字串,moreInfo:[“2022 年1 月21 日”,“電影”,“17m”] },{ ...},] }}
?回到頂部
GET
製作人動漫/api/v2/hianime/ Producer/{name}?page={page}
範圍 | 類型 | 描述 | 必需的? | 預設 |
---|---|---|---|---|
name | 細繩 | 動畫製作人的名字(以烤肉串為例)。 | 是的 | -- |
範圍 | 類型 | 描述 | 必需的? | 預設 |
---|---|---|---|---|
page | 數位 | 結果的頁碼。 | 不 | 1 |
const resp = wait fetch("/api/v2/hianime/ Producer/toei-animation?page=2");const data = wait resp.json();console.log(data);
{ 成功:真實, 資料:{生產者名稱:“東映動畫動漫”,動畫:[ {id:字符串,名稱:字符串,海報:字符串,持續時間:字符串,類型:字符串,評級:字符串,劇集:{子:數字,配音:數字, } }, {...},],top10Animes: { 今天: [{ 劇集: {sub: 數字,dub: 數字, }, id: 字串, 名稱:字串, 海報: 字串, 排名: 數字},{. ..}, ], 月: [...], 週: [...]},topAiringAnimes: [ {episodes: { sub: number, dub : number,},id: string,jname: string,name:字串,海報:字串,類型:字串},{...},],當前頁:2,總頁數:11,hasNextPage: true }}
?回到頂部
GET
類型動漫/api/v2/hianime/genre/{name}?page={page}
範圍 | 類型 | 描述 | 必需的? | 預設 |
---|---|---|---|---|
name | 細繩 | 動漫類型的名稱(以烤肉串為例)。 | 是的 | -- |
範圍 | 類型 | 描述 | 必需的? | 預設 |
---|---|---|---|---|
page | 數位 | 結果的頁碼。 | 不 | 1 |
const resp = wait fetch("/api/v2/hianime/genre/shaunten?page=2");const data = wait resp.json();console.log(data);
{ 成功:真實, 資料:{genreName:“少年動漫”,動畫:[ {