| @@ -13,8 +13,86 @@ | |||
| ## เริ่มต้นการใช้งาน | |||
| คุณสามารถดึงข้อมูล JSON โดยการเข้าจากลิ้งก์ - `https://enka.network/u/[UID]/__data.json` <br /> | |||
| ยกตัวอย่างเช่น https://enka.network/u/700378769/__data.json | |||
| คุณสามารถใช้ Wrapper ที่ถูกสร้างขึ้นโดยคนอื่น หรือใช้ API โดยตรงได้ ซึ่งเป็นเรื่องที่ง่ายมาก ดังนั้นจึงเป็นเรื่องที่ไม่ใช่ยากเลยที่จะต้องจัดข้อมูลหรือ Logic ของคุณโดยจากข้อมูลตอบกลับ โดยการท้ายที่ยิ่งใหญ่ที่สุดก็คือการสำรวจข้อมูลที่ขุดขึ้นมาและการแนบข้อมูลส่งคืนด้วยวิธีถูกต้อง | |||
| โปรดดู [Wrappers](#wrappers) สำหรับภาษาที่คุณต้องการ | |||
| ## ก่อนที่คุณจะส่งข้อมูล | |||
| กฏของการใช้งาน API มีอยู่ 3 ข้อ: | |||
| 1. โปรดอย่าแยก UIDs หรือพยามที่จะส่งข้อมูลเข้าฐานข้อมูลเป็นจำนวนมาก เนื่องจากมี UIDs เป็นจำนวนมาก และ API นี้ไม่มีความสามารถที่จะกระทำข้างต้นได้ | |||
| 2. โปรดกำหนด `User-Agent` ไว้ที่ Header ของ requests เพื่อให้สามารถติดตามและให้ความช่วยเหลือในสิ่งที่เธอต้องการ | |||
| 3. ใน API นี้มีการจำกัดอัตราแบบ Dynamic บน UID - ถ้าหาก request ของคุณเร็ว คุณจะได้พบกับเวลาตอบกลับที่ช้า และส่งกลับมาด้วย 429 code นั้นหมายความว่าต้องลดความเร็วของการ request หรือติดต่อเราเพื่อให้เพิ่ม ratelimits ให้คุณ แต่ในกรณีส่วนใหญ่นั้นไม่มีความจำเป็นและเกิดจาก code ที่ส่งมานั้นไม่มีประสิทธิภาพมากพอ | |||
| 4. ในทุก UID request นั้นจะได้รับ `ttl` field - field นี้คือ "จำนวนวินาทีในการแสดงตู้ Showcase ในครั้งถัดไปจาก UID นี้ " จนกว่าจะหมด โดย endpoint จะส่งคืนข้อมูลที่แคชไว้ แต่คุณจะยังคงใช้ ratelimit ของคุณหากคุณกดซ้ำหลายครั้ง โปรดลอง cache ข้อมูลหลังจากหมดเวลาของ `ttl` หรือ prevent requests ไปยัง UID จนกว่า `ttl` จะหมด เราแนะนำให้ใช้ Redis สำหรับสิ่งนี้ | |||
| หากคุณประสบปัญหาในการทำงานเกี่ยวข้องกับข้อมูล [เซิร์ฟเวอร์ Discord](https://discord.gg/PcSZr5sbn3) เพื่อขอความช่วยเหลือ | |||
| ## รายการ API | |||
| ### UID endpoints | |||
| #### รับข้อมูลตู้ Showcase โดยข้อมูลผู้เล่นแบบเต็ม | |||
| > https://enka.network/api/uid/618285856/ | |||
| การตอบสนองจะมี `playerInfo` และ `avatarInfoList` `playerInfo` เป็นข้อมูลพื้นฐานเกี่ยวกับบัญชีเกม หากไม่มี `avatarInfoList` แสดงว่า Showcase ของบัญชีนี้ถูกปิดหรือไม่มีตัวละคร | |||
| #### รับข้อมูลรายละเอียดข้อมูลผู้เล่นเท่านั้น | |||
| > https://enka.network/api/uid/618285856/?info | |||
| การแนบ `?info` ไปกับคำขอ คุณกำลังร้องขอเฉพาะ `playerInfo` คำขอหลักพยายามรับ `avatarInfoList` เสมอเช่นกัน หากคุณต้องการเพียง `playerInfo` โปรดใช้จุดสิ้นสุดนี้ - มันจะเร็วกว่าการรับข้อมูลทั้งหมด | |||
| นอกจากนี้คำขอทั้งสองจะมี object `owner` หาก: | |||
| 1. ผู้ใช้มีบัญชีบนเว็บไซต์ | |||
| 2. ผู้ใช้เพิ่ม UID ลงในโปรไฟล์ | |||
| 3. ผู้ใช้ได้ทำการ verified บัญชี | |||
| 4. ผู้ใช้ตั้งค่าการมองเห็นเป็น "สาธารณะ" | |||
| ข้อมูลเพิ่มเติมเกี่ยวกับบัญชีผู้ใช้ด้านล่าง | |||
| #### HTTP response codes | |||
| โปรดให้มั่นใจว่าคุณได้ Handle สิ่งเล่านี้ในแอพของคุณอย่างเหมาะสม | |||
| ``` | |||
| 400 = รูปแบบ UID ไม่ถูกต้อง | |||
| 404 = ไม่พบผู้เล่น (เซิฟ MHY บอกแบบนี้อ่ะนะ) | |||
| 424 = บำรุงรักษาเกมส์ / ทุกอย่างจะพังลงหลังจากอัพเดตตัวเกมส์ | |||
| 429 = ถูกจำกัด (ทั้งเซิฟของฉันและเซิฟ MHY) | |||
| 500 = ข้อผิดพลาดทั่วไป | |||
| 503 = ฉันเมามากมาย | |||
| ``` | |||
| ### Endpoint โปรไฟล์ | |||
| สามารถสร้างบัญชี (โปรไฟล์) บนเว็บไซต์และแนบบัญชีที่มีหลาย ๆ เกม จากนั้น ผู้ใช้จะต้องยืนยันว่าบัญชีนั้นเป็นของพวกเขาผ่านรหัสยืนยันที่อยู่ในลายเซ็น วิธีนี้ทำให้เรามั่นใจได้ว่าบัญชีนั้นเป็นของพวกเขา | |||
| ผู้ใช้สามารถสร้าง "snapshot" ภายใต้ชื่อที่กำหนดเอง ซึ่งเรียกว่า "saved builds" | |||
| > https://dev.enka.network/api/profile/Algoinde/ | |||
| รับข้อมูลผู้ใช้ | |||
| > https://dev.enka.network/api/profile/Algoinde/hoyos/ | |||
| รับรายการ "hoyos" - บัญชี Genshin และข้อมูลเมตาของพวกเขา วิธีนี้ส่งคืนเฉพาะบัญชีที่ `ยืนยันแล้ว` และ `สาธารณะ` เท่านั้น (ผู้ใช้สามารถซ่อนบัญชีได้ บัญชีที่ไม่ได้รับการยืนยันจะถูกซ่อนโดยค่าเริ่มต้น) แต่ละคีย์ในการตอบกลับคือตัวระบุเฉพาะของ hoyo ซึ่งคุณต้องใช้สำหรับคำขอที่ตามมาเพื่อรับข้อมูลตัวละคร/builds information | |||
| > https://dev.enka.network/api/profile/Algoinde/hoyos/4Wjv2e/ | |||
| ส่งคืนข้อมูลเมตาสำหรับ single hoyo | |||
| > https://dev.enka.network/api/profile/Algoinde/hoyos/4Wjv2e/builds/ | |||
| ส่งคืน saved build สำหรับ hoyo ที่กำหนด นี่คือออบเจ็กต์ของอาร์เรย์ โดยที่คีย์คือ `avatarId` ของตัวละคร และออบเจ็กต์ในอาร์เรย์เป็นโครงสร้างที่แตกต่างกันสำหรับตัวละครที่กำหนด โดยไม่เรียงลำดับเฉพาะเจาะจง (แต่พวกมันมีฟิลด์ `order` ที่คุณต้องเรียงลำดับสำหรับ แสดง). | |||
| หากการ build มี `live: true` แสดงว่าไม่ใช่การ build ที่ "บันทึกไว้" แต่เป็นเพียงงานสร้างที่ดึงมาจากงานแสดงเมื่อพวกเขาคลิก "รีเฟรช" เมื่อรีเฟรช build `live` เก่าทั้งหมดจะหายไปและสร้างใหม่ มีเพียงผู้ใช้เท่านั้นที่ตัดสินใจว่าจะทำการรีเฟรชเมื่อใด - ข้อมูลนี้จะไม่เป็นปัจจุบัน | |||
| ตามที่ระบุไว้ใน [UID endpoints](#uid-endpoints) เมื่อคุณส่งคำขอ UID คุณจะได้รับวัตถุ `owner` คุณสามารถสร้าง URL โดยใช้ฟิลด์เหล่านี้ในวัตถุ: | |||
| `https://dev.enka.network/api/profile/{owner.username}/hoyos/{owner.hash}/builds/` | |||
| ## โครงสร้างข้อมูล | |||
| @@ -165,13 +243,13 @@ | |||
| | 54 | ความต้านทานลม | | |||
| | 55 | ความต้านทานหิน | | |||
| | 56 | ความต้านทานนํ้าแข็ง | | |||
| | 70 | Pyro Enegry Cost | | |||
| | 71 | Electro Energy Cost | | |||
| | 72 | Hydro Energy Cost | | |||
| | 73 | Dendro Energy Cost | | |||
| | 74 | Anemo Energy Cost | | |||
| | 75 | Cryo Energy Cost | | |||
| | 76 | Geo Energy Cost | | |||
| | 70 | อนุธาตุไฟ | | |||
| | 71 | อนุธาตุไฟฟ้า | | |||
| | 72 | อนุธาตุนํ้า | | |||
| | 73 | อนุธาตุไม้ | | |||
| | 74 | อนุธาตุลม | | |||
| | 75 | อนุธาตุนํ้าแข็ง | | |||
| | 76 | อนุธาตุหิน | | |||
| | 2000 | พลังชีวิตสูงสุด | | |||
| | 2001 | พลังโจมตี | | |||
| | 2002 | พลังป้องกัน | | |||
| @@ -239,3 +317,12 @@ | |||
| สำหรับข้อมูลเพิ่มเติมเกี่ยวกับชื่อ, คำอธิบาย และ อื่น ๆ นั้น ตรวจสอบได้ที่ [TextMap Data](https://github.com/Dimbreath/GenshinData/tree/master/TextMap) เฉพาะภาษาที่เกมส์รองรับเท่านั้น | |||
| ## Wrappers | |||
| TS/JS - https://www.npmjs.com/package/enkanetwork.js - [Jelosus1](https://github.com/Jelosus2) | |||
| TS/JS - https://github.com/yuko1101/enka-network-api - [yuko1101](https://github.com/yuko1101) | |||
| Rust - https://github.com/eratou/enkanetwork-rs - [eratou](https://github.com/eratou) | |||
| Python - https://github.com/mrwan200/enkanetwork.py - [mrwan200](https://github.com/mrwan200) | |||