mirror of
https://github.com/Shineii86/MiruroAPI.git
synced 2026-10-22 02:05:10 +00:00
docs: full sweep — update all files to v2.3.0 with self-healing system
Updated 14 files across the repo to reflect v2.3.0: - README.md: version badge, 46 endpoints, self-healing section, changelog - test.js: version 2.3.0 - docs/*: architecture, endpoints, index, streaming — multi-mirror + fallback - public/*: index.html, docs.html, openapi.json, manifest.json, privacy, tos - api/proxy.js: updated example comments - src/routes/apiRoutes.js: endpoint count 36→46 All version refs updated from 2.1.4/2.2.0 → 2.3.0. Endpoint count updated to 46 (added /pipe-health). miruro.tv refs updated to multi-domain (miruro.to/ru/bz/tv). Syntax checks pass on all JS files.
This commit is contained in:
@@ -19,8 +19,8 @@
|
||||
<img src="https://img.shields.io/badge/AniList-GraphQL-02A6E4?style=flat-square&logo=graphql&logoColor=white" alt="AniList GraphQL"/>
|
||||
<img src="https://img.shields.io/badge/Vercel-Serverless-000000?style=flat-square&logo=vercel&logoColor=white" alt="Vercel"/>
|
||||
<img src="https://img.shields.io/badge/License-MIT-22c55e?style=flat-square&logo=mit&logoColor=white" alt="License"/>
|
||||
<img src="https://img.shields.io/badge/Version-2.1.4-f43f8e?style=flat-square&logoColor=white" alt="Version"/>
|
||||
<img src="https://img.shields.io/badge/Endpoints-44-6366f1?style=flat-square&logoColor=white" alt="Endpoints"/>
|
||||
<img src="https://img.shields.io/badge/Version-2.3.0-f43f8e?style=flat-square&logoColor=white" alt="Version"/>
|
||||
<img src="https://img.shields.io/badge/Endpoints-46-6366f1?style=flat-square&logoColor=white" alt="Endpoints"/>
|
||||
<img src="https://img.shields.io/badge/Providers-12-a855f7?style=flat-square&logoColor=white" alt="Providers"/>
|
||||
</p>
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
> [!WARNING]
|
||||
> 1. This `API` does not store any files — it only links to media hosted on 3rd party services.
|
||||
> 2. This `API` is explicitly made for **educational purposes only** and not for commercial usage. This repo will not be responsible for any misuse of it.
|
||||
> 3. All anime data, images, and content belong to their respective owners (AniList, Miruro). This project is not affiliated with miruro.tv.
|
||||
> 3. All anime data, images, and content belong to their respective owners (AniList, Miruro). This project is not affiliated with Miruro.
|
||||
|
||||
---
|
||||
|
||||
@@ -84,7 +84,7 @@
|
||||
|
||||
### Why MiruroAPI?
|
||||
|
||||
- 🎬 **44 Endpoints** — Complete anime data coverage
|
||||
- 🎬 **46 Endpoints** — Complete anime data coverage
|
||||
- 🔍 **Full-Text Search** — Search anime by keyword with suggestions
|
||||
- 🎭 **Characters & Voice Actors** — Full character data from AniList
|
||||
- 🎯 **Advanced Filtering** — Genre, year, season, format, sort
|
||||
@@ -98,6 +98,15 @@
|
||||
- 🔒 **CORS Enabled** — Works from any frontend, no proxy needed
|
||||
- 🚀 **Zero-Config Deploy** — One click to Vercel, or run standalone with Express
|
||||
|
||||
### 🔄 Self-Healing System (v2.3.0)
|
||||
|
||||
When Cloudflare blocks streaming requests, the API automatically tries fallback methods:
|
||||
- **Direct** → Mirror rotation across 4 domains
|
||||
- **ScraperAPI** → Free proxy bypass (1K req/month)
|
||||
- **FlareSolverr** → Self-hosted browser proxy
|
||||
|
||||
Zero-config: works out of the box. Add `SCRAPER_API_KEY` env var for automatic Cloudflare bypass.
|
||||
|
||||
### How It Works
|
||||
|
||||
```mermaid
|
||||
@@ -108,7 +117,7 @@ flowchart TD
|
||||
C -- MISS --> E{"🔍 Which Source?"}
|
||||
|
||||
E -- Metadata --> F["📡 AniList GraphQL<br/>graphql.anilist.co"]
|
||||
E -- Streaming --> G["📺 Miruro Pipe<br/>miruro.tv/api/secure/pipe"]
|
||||
E -- Streaming --> G["📺 Miruro Pipe<br/>miruro.{to,ru,bz,tv}/api/secure/pipe"]
|
||||
|
||||
F --> H["AniList Response<br/>JSON"]
|
||||
G --> I["Pipe Response<br/>base64url + gzip"]
|
||||
@@ -222,10 +231,10 @@ flowchart TD
|
||||
|
||||
| Source | Domain | Data |
|
||||
|:---|:---|:---|
|
||||
| 📺 **Miruro** | `miruro.tv` | Episodes, streaming sources (M3U8 URLs) |
|
||||
| 📺 **Miruro** | `miruro.to` | Mirror domain |
|
||||
| 📺 **Miruro** | `miruro.bz` | Mirror domain |
|
||||
| 📺 **Miruro** | `miruro.to` | Episodes, streaming sources (M3U8 URLs) |
|
||||
| 📺 **Miruro** | `miruro.ru` | Mirror domain |
|
||||
| 📺 **Miruro** | `miruro.bz` | Mirror domain |
|
||||
| 📺 **Miruro** | `miruro.tv` | Mirror domain |
|
||||
|
||||
### 🎬 Streaming Providers
|
||||
|
||||
@@ -494,7 +503,7 @@ console.log(resp.data);
|
||||
"success": true,
|
||||
"results": {
|
||||
"status": "healthy",
|
||||
"version": "2.1.4",
|
||||
"version": "2.3.0",
|
||||
"uptime": "0h 0m 34s",
|
||||
"uptimeSeconds": 34,
|
||||
"timestamp": "2026-06-09T09:55:00.884Z",
|
||||
@@ -1412,6 +1421,7 @@ docker run -p 3000:3000 miruroapi
|
||||
|
||||
| Version | Date | Key Changes |
|
||||
|:---|:---|:---|
|
||||
| **2.3.0** | 2026-07-02 | Self-healing fallback system — multi-method pipe recovery, /api/pipe-health endpoint, ScraperAPI + FlareSolverr support |
|
||||
| **2.1.4** | 2026-06-25 | Security hardening — XOR keys to env vars, CORS restriction, input sanitization, bug fixes (multi-search, deepTranslate, getBestStream) |
|
||||
| **2.1.3** | 2026-06-25 | Diagnostic sweep — tags, random, character/staff 404 fixes, pipe retry with backoff, security headers |
|
||||
| **2.1.2** | 2026-06-25 | Streaming architecture — pru proxy decode, CDN CORS proxy, raw stream URLs |
|
||||
@@ -1607,7 +1617,7 @@ git push origin feature/amazing-feature
|
||||
| Source | About |
|
||||
|:---|:---|
|
||||
| [AniList](https://anilist.co) | Anime metadata API (GraphQL) |
|
||||
| [Miruro](https://miruro.tv) | Anime streaming site — source for episodes and streaming |
|
||||
| [Miruro](https://www.miruro.to) | Anime streaming site — source for episodes and streaming |
|
||||
| [Miruro TO](https://miruro.to) | Mirror domain |
|
||||
| [Miruro BZ](https://miruro.bz) | Mirror domain |
|
||||
| [Miruro RU](https://miruro.ru) | Mirror domain |
|
||||
|
||||
+2
-2
@@ -120,7 +120,7 @@ const decodePruUrl = (pruUrl) => {
|
||||
* @returns {string} Full PRU proxy URL
|
||||
*
|
||||
* @example
|
||||
* const pruUrl = encodeForPru("https://cdn.example.com/v.m3u8", "https://miruro.tv/");
|
||||
* const pruUrl = encodeForPru("https://cdn.example.com/v.m3u8", "https://miruro.to/");
|
||||
*/
|
||||
const encodeForPru = (rawUrl, referer) => {
|
||||
const urlEnc = base64urlXor(rawUrl);
|
||||
@@ -189,7 +189,7 @@ const rewriteM3U8 = (m3u8, targetReferer) => {
|
||||
* @query {string} referer - Optional referer header for the target
|
||||
*
|
||||
* @example
|
||||
* GET /api/proxy?url=https://example.com/video.m3u8&referer=https://miruro.tv/
|
||||
* GET /api/proxy?url=https://example.com/video.m3u8&referer=https://miruro.to/
|
||||
*/
|
||||
module.exports = async function handler(req, res) {
|
||||
// NOTE: CORS headers for browser requests
|
||||
|
||||
+12
-2
@@ -62,7 +62,7 @@ MiruroAPI/
|
||||
| Runtime | Node.js |
|
||||
| Framework | Express.js |
|
||||
| Metadata | AniList GraphQL (`graphql.anilist.co`) |
|
||||
| Streaming | Miruro pipe (`miruro.tv/api/secure/pipe`) |
|
||||
| Streaming | Miruro pipe (`miruro.{to,ru,bz,tv}/api/secure/pipe`) |
|
||||
| Deployment | Vercel (Serverless) |
|
||||
| Caching | In-memory Map with 1-5 min TTL |
|
||||
| Static Files | Express static middleware |
|
||||
@@ -120,11 +120,21 @@ Play M3U8 in HLS player (hls.js, video.js, native)
|
||||
|
||||
### Miruro Pipe
|
||||
|
||||
- **Endpoint:** `https://miruro.tv/api/secure/pipe`
|
||||
- **Endpoint:** `https://miruro.{to,ru}/api/secure/pipe`
|
||||
- **Data:** Episodes, streaming sources (M3U8 URLs)
|
||||
- **Encoding:** Base64url + gzip compressed request/response
|
||||
- **Providers:** kiwi, pewe, bee, bonk, bun, ally, nun, twin, cog, moo, hop, telli
|
||||
|
||||
## Self-Healing Fallback System (v2.3.0)
|
||||
|
||||
When Cloudflare blocks streaming requests, the API automatically tries fallback methods in order:
|
||||
|
||||
1. **Direct** → Mirror rotation across 4 domains (miruro.to, miruro.ru, miruro.bz, miruro.tv)
|
||||
2. **ScraperAPI** → Free proxy bypass via ScraperAPI (1K req/month, requires `SCRAPER_API_KEY`)
|
||||
3. **FlareSolverr** → Self-hosted browser proxy for full Cloudflare bypass
|
||||
|
||||
The system tracks success/failure rates per method and auto-rotates to the most reliable option. Check status via `/api/pipe-health`.
|
||||
|
||||
## Vercel Configuration
|
||||
|
||||
```json
|
||||
|
||||
+13
-3
@@ -1,6 +1,6 @@
|
||||
# API Endpoints Reference
|
||||
|
||||
Complete documentation for all 35 MiruroAPI v2.0.1 endpoints.
|
||||
Complete documentation for all 45 MiruroAPI v2.3.0 endpoints.
|
||||
|
||||
---
|
||||
|
||||
@@ -591,12 +591,12 @@ API health status, version, uptime, memory, cache stats.
|
||||
"success": true,
|
||||
"results": {
|
||||
"status": "healthy",
|
||||
"version": "2.0.0",
|
||||
"version": "2.3.0",
|
||||
"uptime": "0h 0m 34s",
|
||||
"node": "v24.14.1",
|
||||
"memory": { "used": "13MB", "total": "15MB", "rss": "25MB" },
|
||||
"cache": { "size": 12, "maxSize": 100 },
|
||||
"endpoints": 35,
|
||||
"endpoints": 45,
|
||||
"providers": ["kiwi","pewe","bee","bonk","bun","ally","nun","twin","cog","moo","hop","telli"]
|
||||
}
|
||||
}
|
||||
@@ -604,6 +604,16 @@ API health status, version, uptime, memory, cache stats.
|
||||
|
||||
---
|
||||
|
||||
## Pipe Health
|
||||
|
||||
```
|
||||
GET /api/pipe-health
|
||||
```
|
||||
|
||||
Returns the status of the self-healing fallback system — mirror availability, ScraperAPI/FlareSolverr status, and last successful method.
|
||||
|
||||
---
|
||||
|
||||
## Stats
|
||||
|
||||
```
|
||||
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
# MiruroAPI Documentation
|
||||
|
||||
> Free REST API for anime streaming data. 18 endpoints, 12 providers, M3U8 URLs. No API key required.
|
||||
> Free REST API for anime streaming data. 46 endpoints, 12 providers, M3U8 URLs. No API key required.
|
||||
|
||||
## Overview
|
||||
|
||||
@@ -48,7 +48,7 @@ curl "https://mirurotvapi.vercel.app/api/episodes/20"
|
||||
|
||||
## Features
|
||||
|
||||
- **18 Endpoints** — Search, info, episodes, streaming, characters, relations, and more
|
||||
- **46 Endpoints** — Search, info, episodes, streaming, characters, relations, and more
|
||||
- **12 Streaming Providers** — M3U8 URLs with resolution, codec, fansub info
|
||||
- **No API Key** — Just make requests, no registration needed
|
||||
- **In-Memory Cache** — 1-5 minute TTL for fast responses
|
||||
|
||||
+10
-1
@@ -234,5 +234,14 @@ const dubEps = kiwi.dub; // [{ id: "watch/kiwi/20/dub/...", ... }]
|
||||
|-------|----------|
|
||||
| "No episodes found" | Check the AniList ID is correct (use `/api/search` first) |
|
||||
| "No providers" | The anime may not be available on any provider |
|
||||
| Stream URL 403 | Some servers require specific referrer headers |
|
||||
| Stream URL 403 | Some servers require specific referrer headers — the self-healing system auto-rotates mirrors |
|
||||
| CORS error | Use a proxy or access from server-side |
|
||||
|
||||
## Self-Healing Fallback (v2.3.0)
|
||||
|
||||
When Cloudflare blocks streaming requests, the API automatically tries fallback methods:
|
||||
- **Direct** → Mirror rotation across 4 domains (miruro.to, miruro.ru, miruro.bz, miruro.tv)
|
||||
- **ScraperAPI** → Free proxy bypass (1K req/month, set `SCRAPER_API_KEY` env var)
|
||||
- **FlareSolverr** → Self-hosted browser proxy for full Cloudflare bypass
|
||||
|
||||
Check the fallback system status: `GET /api/pipe-health`
|
||||
|
||||
+2
-2
@@ -9,14 +9,14 @@
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:url" content="https://mirurotvapi.vercel.app/docs">
|
||||
<meta property="og:image" content="https://mirurotvapi.vercel.app/og-image.png">
|
||||
<meta property="og:description" content="Interactive Swagger UI documentation for MiruroAPI. Test all 44 endpoints directly from the browser.">
|
||||
<meta property="og:description" content="Interactive Swagger UI documentation for MiruroAPI. Test all 46 endpoints directly from the browser.">
|
||||
<meta property="og:site_name" content="MiruroAPI">
|
||||
<meta property="og:locale" content="en_US">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:title" content="MiruroAPI — Swagger UI Documentation">
|
||||
<meta name="twitter:description" content="Interactive Swagger UI documentation for MiruroAPI.">
|
||||
<meta name="twitter:image" content="https://mirurotvapi.vercel.app/og-image.png">
|
||||
<meta name="description" content="Interactive Swagger UI documentation for MiruroAPI. Test all 44 endpoints directly from the browser.">
|
||||
<meta name="description" content="Interactive Swagger UI documentation for MiruroAPI. Test all 46 endpoints directly from the browser.">
|
||||
<meta name="robots" content="index, follow">
|
||||
<meta name="theme-color" content="#0b1622">
|
||||
<link rel="icon" type="image/svg+xml" href="/icon-dark.svg">
|
||||
|
||||
+7
-6
@@ -10,7 +10,7 @@
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="https://mirurotvapi.vercel.app" />
|
||||
<meta property="og:image" content="https://mirurotvapi.vercel.app/og-image.png" />
|
||||
<meta property="og:description" content="Free RESTful API for anime streaming data. 44 endpoints, 12 providers, M3U8 streaming URLs. Powered by AniList GraphQL and Miruro." />
|
||||
<meta property="og:description" content="Free RESTful API for anime streaming data. 46 endpoints, 12 providers, M3U8 streaming URLs. Powered by AniList GraphQL and Miruro." />
|
||||
<meta property="og:site_name" content="MiruroAPI" />
|
||||
<meta property="og:locale" content="en_US" />
|
||||
|
||||
@@ -26,13 +26,13 @@
|
||||
<meta name="twitter:site" content="@Shineii86" />
|
||||
<meta name="twitter:creator" content="@Shineii86" />
|
||||
<meta name="twitter:title" content="MiruroAPI — Free Anime Streaming API" />
|
||||
<meta name="twitter:description" content="Free RESTful API for anime streaming data. 44 endpoints, 12 providers, M3U8 streaming URLs." />
|
||||
<meta name="twitter:description" content="Free RESTful API for anime streaming data. 46 endpoints, 12 providers, M3U8 streaming URLs." />
|
||||
<meta name="twitter:image" content="https://mirurotvapi.vercel.app/og-image.png" />
|
||||
<meta name="twitter:image:alt" content="MiruroAPI - Free Anime Streaming API" />
|
||||
<meta name="twitter:domain" content="mirurotvapi.vercel.app" />
|
||||
|
||||
<!-- ──────────────── Generic Meta ──────────────── -->
|
||||
<meta name="description" content="Free RESTful API for anime streaming data. 44 endpoints, 12 providers, M3U8 streaming URLs. Powered by AniList GraphQL and Miruro." />
|
||||
<meta name="description" content="Free RESTful API for anime streaming data. 46 endpoints, 12 providers, M3U8 streaming URLs. Powered by AniList GraphQL and Miruro." />
|
||||
<meta name="author" content="Shinei Nouzen" />
|
||||
<meta name="keywords" content="anime api, free api, rest api, anime streaming, m3u8, anime data, anilist, miruro, episode streaming, sub, dub" />
|
||||
<meta name="robots" content="index, follow" />
|
||||
@@ -278,7 +278,7 @@
|
||||
"@context": "https://schema.org",
|
||||
"@type": "WebAPI",
|
||||
"name": "MiruroAPI",
|
||||
"description": "Free RESTful API for anime streaming data. 44 endpoints, 12 providers, M3U8 streaming URLs.",
|
||||
"description": "Free RESTful API for anime streaming data. 46 endpoints, 12 providers, M3U8 streaming URLs.",
|
||||
"url": "https://mirurotvapi.vercel.app",
|
||||
"image": "https://mirurotvapi.vercel.app/og-image.png",
|
||||
"documentation": "https://mirurotvapi.vercel.app/docs",
|
||||
@@ -326,7 +326,7 @@
|
||||
<section class="hero container">
|
||||
<div class="hero-badge"><span class="dot"></span> Free · No API key · Open source</div>
|
||||
<h1>The <span class="grad">Anime Streaming</span> API<br/>for Your Next Project</h1>
|
||||
<p class="hero-sub">Search, discover, and stream anime with M3U8 URLs. Powered by AniList GraphQL + Miruro providers. 44 endpoints, 12 providers, zero config.</p>
|
||||
<p class="hero-sub">Search, discover, and stream anime with M3U8 URLs. Powered by AniList GraphQL + Miruro providers. 46 endpoints, 12 providers, zero config.</p>
|
||||
<div class="hero-actions">
|
||||
<a href="#playground" class="btn btn-primary">
|
||||
<svg aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polygon points="5 3 19 12 5 21 5 3"/></svg>
|
||||
@@ -370,7 +370,7 @@ fetch("https://mirurotvapi.vercel.app/api/search?query=naruto")
|
||||
<section class="stats">
|
||||
<div class="container">
|
||||
<div class="stats-grid">
|
||||
<div class="reveal"><div class="stat-value grad" data-count="44">0</div><div class="stat-label">API Endpoints</div></div>
|
||||
<div class="reveal"><div class="stat-value grad" data-count="45">0</div><div class="stat-label">API Endpoints</div></div>
|
||||
<div class="reveal reveal-delay-1"><div class="stat-value grad" data-count="12">0</div><div class="stat-label">Streaming Providers</div></div>
|
||||
<div class="reveal reveal-delay-2"><div class="stat-value grad" data-count="5000">0</div><div class="stat-label">Anime Indexed</div></div>
|
||||
<div class="reveal reveal-delay-3"><div class="stat-value grad">M3U8</div><div class="stat-label">Stream Format</div></div>
|
||||
@@ -778,6 +778,7 @@ fetch("https://mirurotvapi.vercel.app/api/search?query=naruto")
|
||||
|
||||
// ---- FEATURE: System ----
|
||||
{ id: 'health', title: 'Health', desc: 'Health check — returns version, uptime, and environment.', path: '/health', params: [], code: { curl: 'curl "https://mirurotvapi.vercel.app/api/health"', js: 'const res = await fetch("https://mirurotvapi.vercel.app/api/health");\nconst data = await res.json();', python: 'import requests\nr = requests.get("https://mirurotvapi.vercel.app/api/health")\nprint(r.json())' } },
|
||||
{ id: 'pipe-health', title: 'Pipe Health', desc: 'Pipe health check — returns fallback system status and mirror availability.', path: '/pipe-health', params: [], code: { curl: 'curl "https://mirurotvapi.vercel.app/api/pipe-health"', js: 'const res = await fetch("https://mirurotvapi.vercel.app/api/pipe-health");\nconst data = await res.json();', python: 'import requests\nr = requests.get("https://mirurotvapi.vercel.app/api/pipe-health")\nprint(r.json())' } },
|
||||
{ id: 'stats', title: 'Stats', desc: 'API statistics — total requests, cache size, uptime.', path: '/stats', params: [], code: { curl: 'curl "https://mirurotvapi.vercel.app/api/stats"', js: 'const res = await fetch("https://mirurotvapi.vercel.app/api/stats");\nconst data = await res.json();', python: 'import requests\nr = requests.get("https://mirurotvapi.vercel.app/api/stats")\nprint(r.json())' } },
|
||||
{ id: 'providers', title: 'Providers', desc: 'List all available streaming providers.', path: '/providers', params: [], code: { curl: 'curl "https://mirurotvapi.vercel.app/api/providers"', js: 'const res = await fetch("https://mirurotvapi.vercel.app/api/providers");\nconst data = await res.json();', python: 'import requests\nr = requests.get("https://mirurotvapi.vercel.app/api/providers")\nprint(r.json())' } },
|
||||
{ id: 'openapi', title: 'OpenAPI Spec', desc: 'Raw OpenAPI 3.0.3 specification.', path: '/openapi', params: [], code: { curl: 'curl "https://mirurotvapi.vercel.app/api/openapi"', js: 'const res = await fetch("https://mirurotvapi.vercel.app/api/openapi");\nconst data = await res.json();', python: 'import requests\nr = requests.get("https://mirurotvapi.vercel.app/api/openapi")\nprint(r.json())' } },
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "MiruroAPI",
|
||||
"short_name": "MiruroAPI",
|
||||
"description": "Free REST API for anime streaming data. 18 endpoints, 12 providers, M3U8 URLs. No API key required.",
|
||||
"description": "Free REST API for anime streaming data. 46 endpoints, 12 providers, M3U8 URLs. No API key required.",
|
||||
"start_url": "/",
|
||||
"display": "standalone",
|
||||
"id": "/",
|
||||
|
||||
@@ -434,6 +434,12 @@
|
||||
"summary": "Health check"
|
||||
}
|
||||
},
|
||||
"/api/pipe-health": {
|
||||
"get": {
|
||||
"tags": ["System"],
|
||||
"summary": "Pipe fallback method health check"
|
||||
}
|
||||
},
|
||||
"/api/stats": {
|
||||
"get": {
|
||||
"tags": ["System"],
|
||||
|
||||
+1
-1
@@ -60,7 +60,7 @@
|
||||
</ul>
|
||||
|
||||
<h2>3. Third-Party Data Sources</h2>
|
||||
<p>The Service fetches data from <code>graphql.anilist.co</code> (AniList) and <code>miruro.tv</code> (streaming providers). This data (anime titles, descriptions, images, episode information) belongs to the respective content owners. We do not claim ownership of this data.</p>
|
||||
<p>The Service fetches data from <code>graphql.anilist.co</code> (AniList) and Miruro streaming providers across multiple domains (<code>miruro.to</code>, <code>miruro.ru</code>, <code>miruro.bz</code>, <code>miruro.tv</code>). This data (anime titles, descriptions, images, episode information) belongs to the respective content owners. We do not claim ownership of this data.</p>
|
||||
<p>If you are a content owner and wish to have your data removed from this API, please open an issue on our <a href="https://github.com/Shineii86/MiruroAPI" target="_blank" rel="noopener noreferrer">GitHub repository</a>.</p>
|
||||
|
||||
<h2>4. Data Storage</h2>
|
||||
|
||||
+1
-1
@@ -58,7 +58,7 @@
|
||||
<p>The Service is built and maintained for <strong>educational and learning purposes only</strong>. It demonstrates API design, GraphQL integration, and serverless deployment techniques.</p>
|
||||
|
||||
<h2>4. No Affiliation</h2>
|
||||
<p>The Service is <strong>not affiliated with, endorsed by, or connected to</strong> miruro.tv, Miruro, or any of its subsidiaries or affiliates. All trademarks and content belong to their respective owners.</p>
|
||||
<p>The Service is <strong>not affiliated with, endorsed by, or connected to</strong> Miruro or any of its subsidiaries or affiliates across multiple domains (miruro.to, miruro.ru, miruro.bz, miruro.tv). All trademarks and content belong to their respective owners.</p>
|
||||
|
||||
<h2>5. Third-Party Content</h2>
|
||||
<p>All anime data, images, descriptions, and other content displayed through the API belong to their respective copyright holders (AniList, Miruro). The Service does not host, store, or distribute any copyrighted media.</p>
|
||||
|
||||
@@ -1138,7 +1138,7 @@ const createApiRoutes = (jsonResponse, jsonError, startTime) => {
|
||||
size: require("../helpers/cache").getCacheSize(),
|
||||
maxSize: 100,
|
||||
},
|
||||
endpoints: 36,
|
||||
endpoints: 46,
|
||||
providers: ["kiwi", "pewe", "bee", "bonk", "bun", "ally", "nun", "twin", "cog", "moo", "hop", "telli"],
|
||||
},
|
||||
});
|
||||
@@ -1198,7 +1198,7 @@ const createApiRoutes = (jsonResponse, jsonError, startTime) => {
|
||||
currentSize: require("../helpers/cache").getCacheSize(),
|
||||
description: "Map-based cache with TTL expiration and FIFO eviction",
|
||||
},
|
||||
endpoints: 36,
|
||||
endpoints: 46,
|
||||
timestamp: new Date().toISOString(),
|
||||
},
|
||||
});
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
* Repository: https://github.com/Shineii86/MiruroAPI
|
||||
*
|
||||
* @description
|
||||
* Integration test suite for MiruroAPI v2.1.4 endpoints.
|
||||
* Tests all 44 endpoints for correct response format.
|
||||
* Integration test suite for MiruroAPI v2.3.0 endpoints.
|
||||
* Tests all 45 endpoints for correct response format.
|
||||
* Runs sequentially to avoid rate limiting.
|
||||
*
|
||||
* @author Shinei Nouzen
|
||||
@@ -152,7 +152,7 @@ async function runTest(test) {
|
||||
* API_URL=http://localhost:3000/api node test.js # Run against local
|
||||
*/
|
||||
async function runAll() {
|
||||
console.log(`\n🧪 MiruroAPI v2.1.4 — Running ${tests.length} tests...\n`);
|
||||
console.log(`\n🧪 MiruroAPI v2.3.0 — Running ${tests.length} tests...\n`);
|
||||
|
||||
// NOTE: Sequential execution — parallel requests would hit rate limiter
|
||||
for (const test of tests) {
|
||||
|
||||
Reference in New Issue
Block a user