ملحوظة
لقد انتقلت واجهة برمجة التطبيقات (API) إلى الإصدار 2، مما أدى بشكل طبيعي إلى إدخال تغييرات جذرية. إذا كنت تريد استخدام الإصدار السابق من واجهة برمجة التطبيقات هذه، فارجع إلى الإصدار المستقر الأخير.
مهم
يهدف https://api-aniwatch.onrender.com فقط إلى عرض واجهة برمجة التطبيقات (API) وتم تمكين تحديد المعدل لتقليل استهلاك النطاق الترددي. يوصى بنشر المثيل الخاص بك للاستخدام الشخصي عن طريق تخصيص واجهة برمجة التطبيقات كما تريد.
واجهة برمجة التطبيقات هذه هي مجرد واجهة برمجة تطبيقات غير رسمية لـ hianime.to ولا ترتبط بها رسميًا بأي شكل من الأشكال.
المحتوى الذي توفره واجهة برمجة التطبيقات هذه ليس ملكي، ولا أستضيفه. هذه تنتمي إلى أصحابها. توضح واجهة برمجة التطبيقات هذه كيفية إنشاء واجهة برمجة تطبيقات تقوم بمسح مواقع الويب واستخدام محتواها.
تثبيت
محلي
عامل ميناء
بيئات
استضافة المثيل الخاص بك
فيرسل
يجعل
التوثيق
الحصول على صفحة الأنمي الرئيسية
الحصول على أنيمي حول المعلومات
الحصول على نتائج البحث
احصل على اقتراحات البحث
احصل على الرسوم المتحركة المنتجة
احصل على النوع الرسوم المتحركة
الحصول على فئة الرسوم الكرتونية
الحصول على الجداول الزمنية المقدرة
احصل على حلقات الأنمي
احصل على خوادم حلقات الأنمي
احصل على روابط بث حلقات الأنمي
تطوير
المساهمين
شكرًا
يدعم
رخصة
تاريخ النجوم
استنساخ المستودع والانتقال إلى الدليل.
استنساخ بوابة 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
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
على اسم مضيف المثيل المنشور، وإلا فلا تقم بتعيين هذه البيئة أو تمتلكها على الإطلاق. إذا قمت بتعيين هذه البيئة على قيمة غير صحيحة، فقد تواجه مشكلات أخرى.
قم بإزالة كتلة if من ملف server.ts
، والتي تمتد من الأسطر 71 إلى 83.
انشر مثيلك الخاص لـ Aniwatch API على Vercel.
ملحوظة
عند النشر إلى vercel، قم بتعيين بيئة تسمى ANIWATCH_VERCEL_DEPLOYMENT
على القيمة true
أو أي قيمة غير الصفر، ولكن يجب أن تكون هذه البيئة موجودة.
انشر مثيلك الخاص لـ Aniwatch API على Render.
تم إدراج نقاط النهاية التي كشفت عنها واجهة برمجة التطبيقات أدناه مع أمثلة تستخدم Fetch API، ولكن يمكنك استخدام أي مكتبة http.
GET
صفحة الأنمي الرئيسية/api/v2/hianime/home
const resp = انتظار الجلب("/api/v2/hianime/home");const data = انتظار resp.json();console.log(data);
{ النجاح: صحيح البيانات: {الأنواع: ["أكشن"، "سيارات"، "مغامرة"، ...]، أحدث حلقات الأنيمي: [ {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: سلسلة[]،الحلقات: { فرعي: رقم، دبلج: رقم،}، }، {...}،]، top10 الرسوم المتحركة: { اليوم: [{ حلقات: {sub: رقم، دبلج: رقم، }، المعرف: سلسلة ، الاسم: سلسلة، الملصق: سلسلة، الرتبة: رقم}، {...}، ]، الشهر: [...]، الأسبوع: [...]}، topAiringAnimes: [ {id: string، name: string الاسم: سلسلة،ملصق: سلسلة، }، {...}،]، topUpcomingAnimes: [ {المعرف: سلسلة، الاسم: سلسلة، ملصق: سلسلة، المدة: سلسلة، النوع: سلسلة، التصنيف: سلسلة، الحلقات: { فرعي: رقم , dub: number,} }, {...},],الأنيمات الرائجة: [ {id: string,name: string,poster: string,rank: number, }, {...},],الأنيمات الأكثر شعبية: [ {المعرف: سلسلة، الاسم: سلسلة، الملصق: سلسلة، النوع: سلسلة، الحلقات: { فرعي: رقم، دبلج: رقم،} }، {...}،]، معظم الرسوم المتحركة المفضلة: [ {المعرف: سلسلة، الاسم: سلسلة، ملصق: سلسلة، النوع: سلسلة، الحلقات: { فرعي: رقم، دبلج: رقم،} }، {...}،]، أحدث الرسوم المتحركة المكتملة: [ {المعرف: سلسلة، الاسم: سلسلة، ملصق: سلسلة، النوع: سلسلة، الحلقات: { فرعي: رقم، دبلج: رقم،} }، {...}،]، }}
؟ العودة إلى الأعلى
GET
أنيمي حول المعلومات/api/v2/hianime/anime/{animeId}
المعلمة | يكتب | وصف | مطلوب؟ | تقصير |
---|---|---|---|---|
animeId | خيط | معرف الأنمي الفريد (في حالة الكباب). | نعم | -- |
const resp = انتظار الجلب("/api/v2/hanime/anime/attack-on-titan-112");const data = انتظار resp.json();console.log(data);
{ النجاح: صحيح البيانات: {الأنمي: [معلومات: {المعرف: سلسلة، الاسم: سلسلة، الملصق: سلسلة، الوصف: سلسلة، إحصائيات: { التقييم: سلسلة، الجودة: سلسلة، الحلقات: {sub: number،dub: number }، النوع: سلسلة، المدة: سلسلة}، مقاطع فيديو ترويجية: [ {عنوان: سلسلة | غير محدد، المصدر: سلسلة | غير محدد، صورة مصغرة: سلسلة | غير محدد }، {...}،]، حرفVoiceActor: [ {حرف: { المعرف: سلسلة، الملصق: سلسلة، الاسم: سلسلة، طاقم التمثيل: سلسلة}، VoiceActor: { المعرف: سلسلة، الملصق: سلسلة، الاسم: سلسلة، cast: string} }, {...},] } مزيد من المعلومات: {بثت: سلسلة، الأنواع: ["Action"، "Mystery"، ...]، الحالة: سلسلة، استوديوهات: سلسلة، المدة: سلسلة... }]، الرسوم المتحركة الأكثر شعبية: [ {الحلقات: { الفرعية: رقم، دبلج: رقم،}، المعرف: سلسلة، jname: سلسلة، الاسم: سلسلة، الملصق: سلسلة، النوع: سلسلة }، { ...}،]، الرسوم المتحركة الموصى بها: [ {المعرف: سلسلة، الاسم: سلسلة، الملصق: سلسلة، المدة: سلسلة، النوع: سلسلة، التصنيف: سلسلة، الحلقات: { فرعي: رقم، دبلج: number،} }، {...}،]، الرسوم المتحركة ذات الصلة: [ {id: string،name: string،poster: string،duur: string،type: string، rating: string،episodes: { sub: number، dub: رقم،} }، {...}،]، المواسم: [ {المعرف: سلسلة، الاسم: سلسلة، العنوان: سلسلة، الملصق: سلسلة، الحالي: منطقي }، {...}] }}
؟ العودة إلى الأعلى
GET
نتائج البحث# مثال أساسي/api/v2/hianime/search?q={query}&page={page}# Advanced example/api/v2/hianime/search?q={query}&page={page}&genres={genres}&type={type}&sort={sort}&season={season}&la nguage={sub_or_dub}&status={status}&rated={ rating}&start_date={yyyy-mm-dd}&end_date={yyyy-mm-dd}&score={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
بدلاً من ذلك. على سبيل المثال: حذف التاريخ -> 0-10-2014، وحذف الشهر -> 12-0-2014، وحذف كليهما -> 0-2014
// exampleconst resp = انتظار الجلب("/api/v2/hanime/search?q=titan&page=1");const data = انتظار resp.json();console.log(data);// Advanced 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 = wait resp. json();console.log(data);
{ النجاح: صحيح البيانات: {الرسوم المتحركة: [ {المعرف: سلسلة، الاسم: سلسلة، الملصق: سلسلة، المدة: سلسلة، النوع: سلسلة، التقييم: سلسلة، الحلقات: { فرعي: رقم، دبلج: رقم،} }، {...} ,],الأنيمات الأكثر شعبية: [ {الحلقات: { الفرعية: رقم، دبلج: رقم،}،المعرف: سلسلة، jname: سلسلة، الاسم: سلسلة، الملصق: سلسلة، النوع: سلسلة }، {...},],الصفحة الحالية: 1,إجمالي الصفحات: 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/hanime/producer/toei-animation?page=2");const data = انتظار resp.json();console.log(data);
{ النجاح: صحيح البيانات: {producerName: "Toei Animation Anime"، الرسوم المتحركة: [ {id: string،name: string،poster: string،duur: string،type: string، rating: string،episodes: { sub: number، dub: number، } }, {...},],top10Animes: { اليوم: [{ الحلقات: {sub: number,dub: number, }، المعرف: سلسلة، الاسم: سلسلة، الملصق: سلسلة، الرتبة: number}،{...}، ]، الشهر: [...]، الأسبوع: [...]}،topAiringAnimes: [ {حلقات: { sub: number، dub: number،}،id: string,jname : سلسلة، الاسم: سلسلة، ملصق: سلسلة، النوع: سلسلة }، {...}،]، الصفحة الحالية: 2، إجمالي الصفحات: 11، hasNextPage: صحيح }}
؟ العودة إلى الأعلى
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);
{ النجاح: صحيح البيانات: {اسم النوع: "Shounen Anime"، الرسوم المتحركة: [ {