Skip to content

shafat-96/anicrush-api

Repository files navigation

Anime Sources API

A simple API wrapper for fetching anime sources from anicrush.to.

Setup

  1. Install dependencies:
npm install
  1. Start the server:
npm start

For development with auto-reload:

npm run dev

API Endpoints

Map AniList ID to Anicrush

GET /api/mapper/{anilistId}

Maps an AniList ID to anicrush.to anime ID and episode information.

Example Request:

GET http://localhost:3000/api/mapper/21

Example Response:

{
    "anilist_id": "21",
    "anicrush_id": "vRPjMA",
    "titles": {
        "romaji": "One Piece",
        "english": "One Piece",
        "native": "ワンピース",
        "anicrush": "One Piece"
    },
    "total_episodes": 1000,
    "episodes": [
        {
            "number": 1,
            "id": "vRPjMA&episode=1"
        },
        // ... more episodes
    ],
    "format": "TV",
    "status": "RELEASING"
}

Search Anime

GET /api/anime/search

Query Parameters:

  • keyword (required): Search term
  • page (optional): Page number (default: 1)
  • limit (optional): Results per page (default: 24)

Get Episode List

GET /api/anime/episodes

Query Parameters:

  • movieId (required): The ID of the movie/anime

Get Servers

GET /api/anime/servers/{id}

Query Parameters:

  • movieId (required): The ID of the movie/anime
  • episode (optional): Episode number (default: 1)

Get Sources

GET /api/anime/sources

Query Parameters:

  • movieId (required): The ID of the movie/anime (e.g., "vRPjMA")
  • episode (optional): Episode number (default: 1)
  • server (optional): Server number (default: 4)
  • subOrDub (optional): "sub" or "dub" (default: "sub")

Example Request:

GET http://localhost:3000/api/anime/sources?movieId=vRPjMA&episode=1&server=4&subOrDub=sub

Get HLS Link

GET /api/anime/hls/{animeId}?episode={ep}&server={id}&subOrDub={type}

Fetches HLS (HTTP Live Streaming) links with additional metadata for a specific episode.

Query Parameters:

  • episode (optional): Episode number (default: 1)
  • server (optional): Server number (default: 4)
  • subOrDub (optional): "sub" or "dub" (default: "sub")

Example Request:

GET http://localhost:3000/api/anime/hls/vRPjMA?episode=1&server=4&subOrDub=sub

Example Response:

{
    "status": true,
    "result": {
        "sources": [
            {
                "file": "https://example.com/hls/video.m3u8",
                "type": "hls"
            }
        ],
        "tracks": [
            {
                "file": "https://example.com/subtitles.vtt",
                "label": "English",
                "kind": "captions"
            }
        ],
        "intro": {
            "start": 0,
            "end": 90
        },
        "outro": {
            "start": 1290,
            "end": 1380
        },
        "server": 4
    }
}

Health Check

GET /health

Returns the API status.

Error Handling

The API will return appropriate error messages with corresponding HTTP status codes:

  • 400: Bad Request (missing required parameters)
  • 404: Not Found (anime or episode not found)
  • 500: Internal Server Error (server-side issues)

Notes

  • The API includes necessary headers for authentication
  • CORS is enabled for cross-origin requests
  • The server runs on port 3000 by default (can be changed via PORT environment variable)