บันทึก
API ได้เปลี่ยนไปเป็นเวอร์ชัน 2 ดังนั้นจึงทำให้เกิดการเปลี่ยนแปลงที่ไม่สมบูรณ์ หากคุณต้องการใช้ API เวอร์ชันก่อนหน้า โปรดดูเวอร์ชันเสถียรล่าสุด
สำคัญ
https://api-aniwatch.onrender.com มีไว้เพื่อสาธิต API เท่านั้น และเปิดใช้งานการจำกัดอัตราเพื่อลดการใช้แบนด์วิดท์ให้เหลือน้อยที่สุด ขอแนะนำให้ปรับใช้อินสแตนซ์ของคุณเองเพื่อการใช้งานส่วนตัวโดยปรับแต่ง API ตามที่คุณต้องการ
API นี้เป็นเพียง API อย่างไม่เป็นทางการสำหรับ hianime.to และไม่มีความเกี่ยวข้องอย่างเป็นทางการกับสิ่งเดียวกันนี้ในทางอื่น
เนื้อหาที่ API มอบให้ไม่ใช่เนื้อหาของฉัน และไม่ได้โฮสต์โดยฉันด้วย สิ่งเหล่านี้เป็นของเจ้าของที่เกี่ยวข้อง API นี้เพียงสาธิตวิธีสร้าง API ที่คัดลอกเว็บไซต์และใช้เนื้อหา
การติดตั้ง
ท้องถิ่น
นักเทียบท่า
สิ่งแวดล้อม
โฮสต์อินสแตนซ์ของคุณ
เวอร์เซล
เรนเดอร์
เอกสารประกอบ
รับหน้าแรกของอะนิเมะ
รับอะนิเมะเกี่ยวกับข้อมูล
รับผลการค้นหา
รับคำแนะนำการค้นหา
รับผู้ผลิตอะนิเมะ
รับประเภทอะนิเมะ
รับหมวดหมู่ Animes
รับตารางเวลาโดยประมาณ
รับตอนอะนิเมะ
รับเซิร์ฟเวอร์ตอนอะนิเมะ
รับลิงค์สตรีมมิ่งตอนอะนิเมะ
การพัฒนา
ผู้ร่วมให้ข้อมูล
ขอบคุณ
สนับสนุน
ใบอนุญาต
ประวัติดารา
โคลนที่เก็บและย้ายไปยังไดเร็กทอรี
โคลนคอมไพล์ https://github.com/ghoshRitesh12/aniwatch-api.gitcd aniwatch-api
ติดตั้งการอ้างอิงทั้งหมด
npm i #หรือการติดตั้งเส้นด้ายหรือ pnpm i
เริ่มเซิร์ฟเวอร์!
เริ่ม npm #หรือ เริ่มเส้นด้าย หรือ เริ่ม pnpm
ตอนนี้เซิร์ฟเวอร์ควรจะทำงานบน http://localhost:4000
มีอิมเมจ Docker อยู่ที่ GitHub Container Registry
รันคำสั่งต่อไปนี้เพื่อดึงและรันอิมเมจนักเทียบท่า
นักเทียบท่าดึง ghcr.io/ghoshritesh12/aniwatch นักเทียบท่าวิ่ง -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 จากอันอื่นๆ ให้ตั้งค่าเป็นจริงกับค่าอื่นๆ ที่ไม่ใช่ศูนย์
ANIWATCH_API_HOSTNAME
: ตั้งค่านี้เป็นชื่อโฮสต์ของอินสแตนซ์ API ของคุณเพื่อเปิดใช้งานการจำกัดอัตรา อย่ามีค่านี้หากคุณไม่ต้องการจำกัดอัตรา
คำเตือน
สำหรับการปรับใช้ส่วนบุคคล:
หากคุณต้องการจำกัดอัตราในแอปพลิเคชันของคุณ ให้ตั้งค่า ANIWATCH_API_HOSTNAME
env เป็นชื่อโฮสต์ของอินสแตนซ์ที่คุณปรับใช้ ไม่เช่นนั้นอย่าตั้งค่าหรือมี env นี้เลย หากคุณตั้งค่าสภาพแวดล้อมนี้เป็นค่าที่ไม่ถูกต้อง คุณอาจประสบปัญหาอื่นๆ
ลบบล็อก if ออกจากไฟล์ server.ts
ซึ่งครอบคลุมตั้งแต่บรรทัดที่ 71 ถึง 83
ปรับใช้อินสแตนซ์ Aniwatch API ของคุณเองบน Vercel
บันทึก
เมื่อปรับใช้กับ vercel ให้ตั้งค่า env ชื่อ ANIWATCH_VERCEL_DEPLOYMENT
เป็น true
หรือค่าใดๆ ที่ไม่ใช่ศูนย์ แต่ต้องมี env นี้
ปรับใช้อินสแตนซ์ Aniwatch API ของคุณเองบน Render
ตำแหน่งข้อมูลที่แสดงโดย API จะแสดงรายการด้านล่างพร้อมตัวอย่างที่ใช้ Fetch API แต่คุณสามารถใช้ไลบรารี http ใดก็ได้
GET
หน้าแรกของอะนิเมะ/api/v2/hianime/home
const resp = รอการดึงข้อมูล ("/api/v2/hianime/home"); const data = รอ resp.json();console.log(data);
- ความสำเร็จ: จริง, ข้อมูล: {ประเภท: ["Action", "Cars", "Adventure", ...],ตอนล่าสุดอะนิเมะ: [ {id: string,name: string,poster: string,type: string,episodes: { sub: number, พากย์: number,} }, {...},],spotlightAnimes: [ {id: string,name: string,jname: string,poster: string,description: string,rank: number,otherInfo: string[],ตอน: { ย่อย: number, dub: number,}, }, {...},],top10Animes: { วันนี้: [{ ตอน: {sub: number,dub: number, }, id: string , ชื่อ: string, โปสเตอร์: string, อันดับ: number},{...}, ], เดือน: [...], สัปดาห์: [...]},topAiringAnimes: [ {id: string,name: string ,jname: สตริง, โปสเตอร์: สตริง, }, {...},],topUpcomingAnimes: [ {id: string,name: string,poster: string,duration: string,type: string,rating: string,episodes: { sub: number, dub: number,} }, {...},],อนิเมะที่กำลังได้รับความนิยม: [ {id: string,name: string,poster: string,rank: number, }, {...},],mostPopularAnimes: [ {id: string,name: สตริง, โปสเตอร์: สตริง, ประเภท: string,ตอน: { ย่อย: หมายเลข, พากย์: หมายเลข,} }, {...},],อะนิเมะที่ชื่นชอบมากที่สุด: [ {id: string,name: string,poster: string,type: string,episodes: { sub: number , dub: number,} }, {...},],ล่าสุดCompletedAnimes: [ {id: string,name: string,poster: string,type: string,episodes: { sub: number, dub: number,} }, - -
- กลับไปด้านบน
GET
อะนิเมะเกี่ยวกับข้อมูล/api/v2/hianime/anime/{animeId}
พารามิเตอร์ | พิมพ์ | คำอธิบาย | ที่จำเป็น? | ค่าเริ่มต้น |
---|---|---|---|---|
animeId | เชือก | รหัสอนิเมะที่ไม่ซ้ำใคร (ในกรณีเคบับ) | ใช่ | - |
const resp = รอการดึงข้อมูล ("/api/v2/hianime/anime/attack-on-titan-112");const data = รอ resp.json();console.log(data);
- ความสำเร็จ: จริง, ข้อมูล: {อะนิเมะ: [ ข้อมูล: {id: string,ชื่อ: string,โปสเตอร์: string,description: string,stats: { การให้คะแนน: string, คุณภาพ: string, ตอน: {sub: number,dub: number }, ประเภท: สตริง, ระยะเวลา: สตริง}, วิดีโอส่งเสริมการขาย: [ {ชื่อ: สตริง | ไม่ได้กำหนด แหล่งที่มา: string | ไม่ได้กำหนด รูปขนาดย่อ: string | ไม่ได้กำหนด }, {...},], characterVoiceActor: [ {ตัวละคร: { id: สตริง, โปสเตอร์: สตริง, ชื่อ: สตริง, นักแสดง: สตริง}, นักแสดงเสียง: { id: สตริง, โปสเตอร์: สตริง, ชื่อ: สตริง, นักแสดง: string} }, {...},] } เพิ่มเติมข้อมูล: {ออกอากาศ: string,ประเภท: ["Action", "Mystery", ...],สถานะ: string,studios: string,duration: string.. . }],mostPopularAnimes: [ {ตอน: { ย่อย: 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,} }, {...},],อานิเมะที่เกี่ยวข้อง : [ {id: string,name: string,poster: string,duration: string,type: string,rating: string,episodes: { sub: number, dub: number,} }, {...},],ซีซั่น: [ {id: string,ชื่อ: string,หัวเรื่อง: string,โปสเตอร์: 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}&ภาษา={sub_or_dub}&status={status} &rated={rating}&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 | เชือก | วันที่เริ่มอนิเมะ(ปปปป-ดด-วว) เช่น: 2014-10-2 | เลขที่ | - |
end_date | เชือก | วันที่สิ้นสุดของอนิเมะ (ปปปป-ดด-วว) เช่น: 2010-12-4 | เลขที่ | - |
sort | เชือก | ลำดับการเรียงลำดับผลลัพธ์ของอนิเมะ เช่น: recently-added | เลขที่ | - |
genres | เชือก | ประเภทของอะนิเมะ คั่นด้วยเครื่องหมายจุลภาค เช่น isekai,shounen | เลขที่ | - |
[!TIP] สำหรับทั้ง
start_date
และend_date
จะต้องระบุปี หากคุณต้องการละเว้นวันที่หรือเดือนให้ระบุ0
แทน เช่น: ละเว้นวันที่ -> 2014-10-0, ละเว้นเดือน -> 2014-0-12, ละเว้นทั้งสอง -> 2014-0-0
// พื้นฐาน exampleconst resp = รอการดึงข้อมูล ("/api/v2/hianime/search?q=titan&page=1");const data = รอ resp.json();console.log(data);// exampleconst ขั้นสูง 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 = รอการตอบสนอง json();console.log(ข้อมูล);
- ความสำเร็จ: จริง, ข้อมูล: {animes: [ {id: string,name: string,poster: string,duration: string,type: string,rating: string,episodes: { sub: number, dub: number,} }, {...} ,],mostPopularAnimes: [ {ตอน: { ย่อย: หมายเลข, พากย์: หมายเลข,},id: string,jname: string,name: string,poster: string,type: string }, {...},],หน้าปัจจุบัน : : 1,totalPages: 1,hasNextPage: false,searchQuery: string,searchFilters: { [filter_name]: [filter_value] ...} -
- กลับไปด้านบน
GET
แนะนำการค้นหา/api/v2/hianime/search/suggestion?q={query}
พารามิเตอร์ | พิมพ์ | คำอธิบาย | ที่จำเป็น? | ค่าเริ่มต้น |
---|---|---|---|---|
q | เชือก | ข้อความค้นหาข้อเสนอแนะการค้นหา | ใช่ | - |
const resp = รอการดึงข้อมูล ("/api/v2/hianime/search/suggestion?q=monster");const data = รอ resp.json();console.log(data);
- ความสำเร็จ: จริง, ข้อมูล: {ข้อเสนอแนะ: [ {id: string,name: string,poster: string,jname: string,moreInfo: ["21 มกราคม 2022", "Movie", "17m"] }, {...},] -
- กลับไปด้านบน
GET
ผู้ผลิตอะนิเมะ/api/v2/hianime/producer/{name}?page={page}
พารามิเตอร์ | พิมพ์ | คำอธิบาย | ที่จำเป็น? | ค่าเริ่มต้น |
---|---|---|---|---|
name | เชือก | ชื่อผู้ผลิตอนิเมะ (ในกรณีเคบับ) | ใช่ | - |
พารามิเตอร์ | พิมพ์ | คำอธิบาย | ที่จำเป็น? | ค่าเริ่มต้น |
---|---|---|---|---|
page | ตัวเลข | หมายเลขหน้าของผลลัพธ์ | เลขที่ | 1 |
const resp = รอการดึงข้อมูล ("/api/v2/hianime/producer/toei-animation?page=2");const data = รอ resp.json();console.log(data);
- ความสำเร็จ: จริง, ข้อมูล: {producerName: "Toei Animation Anime",อะนิเมะ: [ {id: string,name: string,poster: string,duration: string,type: string,rating: string,episodes: { sub: number, dub: number, } }, {...},],top10Animes: { วันนี้: [{ ตอน: {sub: number,dub: number, }, id: string, name: string, poster: string, rank: number},{...}, ], เดือน: [...], สัปดาห์: [...]},topAiringAnimes: [ {ตอน: { ย่อย: number, dub: number,},id: string,jname : string,ชื่อ: string,โปสเตอร์: string,type: string }, {...},],currentPage: 2,totalPages: 11,hasNextPage: true -
- กลับไปด้านบน
GET
ประเภทอะนิเมะ/api/v2/hianime/genre/{name}?page={page}
พารามิเตอร์ | พิมพ์ | คำอธิบาย | ที่จำเป็น? | ค่าเริ่มต้น |
---|---|---|---|---|
name | เชือก | ชื่อประเภทอนิเมะ (ในกรณีเคบับ) | ใช่ | - |
พารามิเตอร์ | พิมพ์ | คำอธิบาย | ที่จำเป็น? | ค่าเริ่มต้น |
---|---|---|---|---|
page | ตัวเลข | หมายเลขหน้าของผลลัพธ์ | เลขที่ | 1 |
const resp = รอการดึงข้อมูล ("/api/v2/hianime/genre/shounen?page=2");const data = รอ resp.json();console.log(data);
- ความสำเร็จ: จริง, ข้อมูล: {genreName: "Shounen Anime",อะนิเมะ: [ {