docs: added api documentation
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
<p align="center">
|
<p align="center">
|
||||||
<a href="https://github.com/ghoshRitesh12/zoro.to-api">
|
<a href="https://github.com/ghoshRitesh12/zoro.to-api">
|
||||||
<img
|
<img
|
||||||
src="https://github.com/ghoshRitesh12/zoro.to-api/blob/main/img/img1.gif?raw=true"
|
src="https://github.com/ghoshRitesh12/zoro.to-api/blob/main/public/img/img1.gif?raw=true"
|
||||||
alt="Logo"
|
alt="Logo"
|
||||||
width="120"
|
width="120"
|
||||||
height="120"
|
height="120"
|
||||||
@@ -10,10 +10,10 @@
|
|||||||
/>
|
/>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<h3 align="center">Zoro.to API</h3>
|
# <p align="center">Zoro.to API</p>
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
A free restful API serving anime information from <a href="https://zoro.to">zoro.to</a>
|
A free restful API serving anime information from <a href="https://aniwatch.to">zoro.to</a>
|
||||||
<br/><br/>
|
<br/><br/>
|
||||||
<strong>
|
<strong>
|
||||||
<a
|
<a
|
||||||
@@ -58,3 +58,458 @@
|
|||||||
> ## Work In Progress 🛠️
|
> ## Work In Progress 🛠️
|
||||||
>
|
>
|
||||||
> This api is currently a work in progress
|
> This api is currently a work in progress
|
||||||
|
|
||||||
|
## Table of Contents
|
||||||
|
|
||||||
|
- Installation
|
||||||
|
- Local Installation
|
||||||
|
- Documentation
|
||||||
|
- Development
|
||||||
|
- Support
|
||||||
|
- License
|
||||||
|
|
||||||
|
## <span id="installation">💻 Installation</span>
|
||||||
|
|
||||||
|
### Local Installation
|
||||||
|
|
||||||
|
1. Rename the `.env.example` file to `.env`
|
||||||
|
|
||||||
|
2. Fill out all the environment variables.
|
||||||
|
|
||||||
|
3. Run the following command to clone the repository and install the dependencies.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git clone https://github.com/ghoshRitesh12/zoro.to-api.git
|
||||||
|
|
||||||
|
cd zoro.to-api
|
||||||
|
|
||||||
|
npm ci #or yarn install
|
||||||
|
```
|
||||||
|
|
||||||
|
4. Start the server!
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm start #or yarn start
|
||||||
|
```
|
||||||
|
|
||||||
|
Now the server should be running on [http://localhost:4000](http://localhost:4000)
|
||||||
|
|
||||||
|
## <span id="documentation">📚 Documentation</span>
|
||||||
|
|
||||||
|
Below are the endpoints exposed by the api:
|
||||||
|
|
||||||
|
### `GET` Anime Home Page
|
||||||
|
|
||||||
|
#### Endpoint
|
||||||
|
|
||||||
|
`http://localhost:4000/anime/home`
|
||||||
|
|
||||||
|
#### Request sample
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
const resp = await fetch("http://localhost:4000/anime/home");
|
||||||
|
const data = await resp.json();
|
||||||
|
console.log(data);
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Response Schema
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
{
|
||||||
|
genres: ["Action", "Cars", "Adventure", ...],
|
||||||
|
latestEpisodeAnimes: [
|
||||||
|
{
|
||||||
|
id: string,
|
||||||
|
name: string,
|
||||||
|
poster: string,
|
||||||
|
duration: string,
|
||||||
|
type: string,
|
||||||
|
rating: string,
|
||||||
|
episodes: {
|
||||||
|
sub: number,
|
||||||
|
dub: number,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{...},
|
||||||
|
],
|
||||||
|
spotlightAnimes: [
|
||||||
|
{
|
||||||
|
id: string,
|
||||||
|
name: string,
|
||||||
|
jname: string,
|
||||||
|
poster: string,
|
||||||
|
description: string,
|
||||||
|
rank: number,
|
||||||
|
},
|
||||||
|
{...},
|
||||||
|
],
|
||||||
|
top10Animes: {
|
||||||
|
today: [
|
||||||
|
{
|
||||||
|
episodes: {
|
||||||
|
sub: number,
|
||||||
|
dub: number,
|
||||||
|
},
|
||||||
|
id: string,
|
||||||
|
name: string,
|
||||||
|
poster: string,
|
||||||
|
rank: number
|
||||||
|
},
|
||||||
|
{...},
|
||||||
|
],
|
||||||
|
month: [...],
|
||||||
|
week: [...]
|
||||||
|
},
|
||||||
|
topAiringAnimes: [
|
||||||
|
{
|
||||||
|
id: string,
|
||||||
|
name: string,
|
||||||
|
jname: string,
|
||||||
|
poster: string,
|
||||||
|
},
|
||||||
|
{...},
|
||||||
|
],
|
||||||
|
topUpcomingAnimes: [
|
||||||
|
{
|
||||||
|
id: string,
|
||||||
|
name: string,
|
||||||
|
poster: string,
|
||||||
|
duration: string,
|
||||||
|
type: string,
|
||||||
|
rating: string,
|
||||||
|
episodes: {
|
||||||
|
sub: number,
|
||||||
|
dub: number,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{...},
|
||||||
|
],
|
||||||
|
trendingAnimes: [
|
||||||
|
{
|
||||||
|
id: string,
|
||||||
|
name: string,
|
||||||
|
poster: string,
|
||||||
|
rank: number,
|
||||||
|
},
|
||||||
|
{...},
|
||||||
|
],
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### `GET` Anime About Info
|
||||||
|
|
||||||
|
#### Endpoint
|
||||||
|
|
||||||
|
`http://localhost:4000/anime/info?id={anime-id}`
|
||||||
|
|
||||||
|
#### Query Parameters
|
||||||
|
|
||||||
|
| Parameter | Type | Description | Required? | Default |
|
||||||
|
| :-------: | :----: | :------------------: | :-------: | :-----: |
|
||||||
|
| id | string | The unique anime id. | Yes | -- |
|
||||||
|
|
||||||
|
#### Request sample
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
const resp = await fetch(
|
||||||
|
"http://localhost:4000/anime/info?id=attack-on-titan-112"
|
||||||
|
);
|
||||||
|
const data = await resp.json();
|
||||||
|
console.log(data);
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Response Schema
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
{
|
||||||
|
anime: [
|
||||||
|
info: {
|
||||||
|
id: string,
|
||||||
|
name: string,
|
||||||
|
poster: string,
|
||||||
|
description: string,
|
||||||
|
stats: {
|
||||||
|
rating: string,
|
||||||
|
quality: string,
|
||||||
|
episodes: {
|
||||||
|
sub: number,
|
||||||
|
dub: number
|
||||||
|
},
|
||||||
|
type: string,
|
||||||
|
duration: string
|
||||||
|
}
|
||||||
|
}
|
||||||
|
moreInfo: {
|
||||||
|
aired: string,
|
||||||
|
genres: ["Action", "Mystery", ...],
|
||||||
|
status: string,
|
||||||
|
studios: string,
|
||||||
|
duration: string
|
||||||
|
...
|
||||||
|
}
|
||||||
|
],
|
||||||
|
mostPopularAnimes: [
|
||||||
|
{
|
||||||
|
episodes: {
|
||||||
|
sub: 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,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{...},
|
||||||
|
],
|
||||||
|
relatedAnimes: [
|
||||||
|
{
|
||||||
|
id: string,
|
||||||
|
name: string,
|
||||||
|
poster: string,
|
||||||
|
duration: string,
|
||||||
|
type: string,
|
||||||
|
rating: string,
|
||||||
|
episodes: {
|
||||||
|
sub: number,
|
||||||
|
dub: number,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{...},
|
||||||
|
],
|
||||||
|
seasons: [
|
||||||
|
{
|
||||||
|
id: string,
|
||||||
|
name: string,
|
||||||
|
title: string,
|
||||||
|
poster: string,
|
||||||
|
isCurrent: boolean
|
||||||
|
},
|
||||||
|
{...}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### `GET` Search Results
|
||||||
|
|
||||||
|
#### Endpoint
|
||||||
|
|
||||||
|
`http://localhost:4000/anime/search?q={query}&page={page}`
|
||||||
|
|
||||||
|
#### Query Parameters
|
||||||
|
|
||||||
|
| Parameter | Type | Description | Required? | Default |
|
||||||
|
| :-------: | :----: | :---------------------------------------------------------------: | :-------: | :-----: |
|
||||||
|
| query | string | The search query, i.e. the title of the item you are looking for. | Yes | -- |
|
||||||
|
| page | number | The page number of the result. | No | `1` |
|
||||||
|
|
||||||
|
#### Request sample
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
const resp = await fetch("http://localhost:4000/anime/search?q=titan&page=1");
|
||||||
|
const data = await resp.json();
|
||||||
|
console.log(data);
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Response Schema
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
{
|
||||||
|
animes: [
|
||||||
|
{
|
||||||
|
id: string,
|
||||||
|
name: string,
|
||||||
|
poster: string,
|
||||||
|
duration: string,
|
||||||
|
type: string,
|
||||||
|
rating: string,
|
||||||
|
episodes: {
|
||||||
|
sub: number,
|
||||||
|
dub: number,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{...},
|
||||||
|
],
|
||||||
|
mostPopularAnimes: [
|
||||||
|
{
|
||||||
|
episodes: {
|
||||||
|
sub: number,
|
||||||
|
dub: number,
|
||||||
|
},
|
||||||
|
id: string,
|
||||||
|
jname: string,
|
||||||
|
name: string,
|
||||||
|
poster: string,
|
||||||
|
type: string
|
||||||
|
},
|
||||||
|
{...},
|
||||||
|
],
|
||||||
|
totalPages: 1,
|
||||||
|
currentPage: 1,
|
||||||
|
hasNextPage: false
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### `GET` Genre Animes
|
||||||
|
|
||||||
|
#### Endpoint
|
||||||
|
|
||||||
|
`http://localhost:4000/anime/genre/{name}?page={page}`
|
||||||
|
|
||||||
|
#### Path Parameters
|
||||||
|
|
||||||
|
| Parameter | Type | Description | Required? | Default |
|
||||||
|
| :-------: | :----: | :----------------------: | :-------: | :-----: |
|
||||||
|
| name | string | The name of anime genre. | Yes | -- |
|
||||||
|
|
||||||
|
#### Query Parameters
|
||||||
|
|
||||||
|
| Parameter | Type | Description | Required? | Default |
|
||||||
|
| :-------: | :----: | :----------------------------: | :-------: | :-----: |
|
||||||
|
| page | number | The page number of the result. | No | `1` |
|
||||||
|
|
||||||
|
#### Request sample
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
const resp = await fetch("http://localhost:4000/anime/genre/shounen?page=2");
|
||||||
|
const data = await resp.json();
|
||||||
|
console.log(data);
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Response Schema
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
{
|
||||||
|
animes: [
|
||||||
|
{
|
||||||
|
id: string,
|
||||||
|
name: string,
|
||||||
|
poster: string,
|
||||||
|
duration: string,
|
||||||
|
type: string,
|
||||||
|
rating: string,
|
||||||
|
episodes: {
|
||||||
|
sub: number,
|
||||||
|
dub: number,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{...},
|
||||||
|
],
|
||||||
|
genreName: string,
|
||||||
|
genres: ["Action", "Cars", "Adventure", ...]
|
||||||
|
topAiringAnimes: [
|
||||||
|
{
|
||||||
|
episodes: {
|
||||||
|
sub: number,
|
||||||
|
dub: number,
|
||||||
|
},
|
||||||
|
id: string,
|
||||||
|
jname: string,
|
||||||
|
name: string,
|
||||||
|
poster: string,
|
||||||
|
type: string
|
||||||
|
},
|
||||||
|
{...},
|
||||||
|
],
|
||||||
|
totalPages: 38,
|
||||||
|
currentPage: 2,
|
||||||
|
hasNextPage: true
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### `GET` Category Anime
|
||||||
|
|
||||||
|
#### Endpoint
|
||||||
|
|
||||||
|
`http://localhost:4000/anime/{category}?page={page}`
|
||||||
|
|
||||||
|
#### Path Parameters
|
||||||
|
|
||||||
|
| Parameter | Type | Description | Required? | Default |
|
||||||
|
| :-------: | :----: | :--------------------: | :-------: | :-----: |
|
||||||
|
| category | string | The category of anime. | Yes | -- |
|
||||||
|
|
||||||
|
#### Query Parameters
|
||||||
|
|
||||||
|
| Parameter | Type | Description | Required? | Default |
|
||||||
|
| :-------: | :----: | :----------------------------: | :-------: | :-----: |
|
||||||
|
| page | number | The page number of the result. | No | `1` |
|
||||||
|
|
||||||
|
#### Request sample
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
const resp = await fetch("http://localhost:4000/anime/tv?page=2");
|
||||||
|
const data = await resp.json();
|
||||||
|
console.log(data);
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Response Schema
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
{
|
||||||
|
animes: [
|
||||||
|
{
|
||||||
|
id: string,
|
||||||
|
name: string,
|
||||||
|
poster: string,
|
||||||
|
duration: string,
|
||||||
|
type: string,
|
||||||
|
rating: string,
|
||||||
|
episodes: {
|
||||||
|
sub: number,
|
||||||
|
dub: number,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{...},
|
||||||
|
],
|
||||||
|
category: string,
|
||||||
|
genres: ["Action", "Cars", "Adventure", ...]
|
||||||
|
top10Animes: {
|
||||||
|
today: [
|
||||||
|
{
|
||||||
|
episodes: {
|
||||||
|
sub: number,
|
||||||
|
dub: number,
|
||||||
|
},
|
||||||
|
id: string,
|
||||||
|
name: string,
|
||||||
|
poster: string,
|
||||||
|
rank: number
|
||||||
|
},
|
||||||
|
{...},
|
||||||
|
],
|
||||||
|
month: [...],
|
||||||
|
week: [...]
|
||||||
|
},
|
||||||
|
totalPages: 100,
|
||||||
|
currentPage: 2,
|
||||||
|
hasNextPage: true
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## <span id="development">👨💻 Development</span>
|
||||||
|
|
||||||
|
Stars and pull requests are almost always welcome. If you encounter any bug or want to add a new feature to this api, consider creating a new [issue](https://github.com/ghoshRitesh12/zoro.to-api/issues). If you wish to contribute to this project, read the [CONTRIBUTING.md](https://github.com/ghoshRitesh12/zoro.to-api/blob/main/CONTRIBUTING.md) file.
|
||||||
|
|
||||||
|
## <span id="support">🙌 Support</span>
|
||||||
|
|
||||||
|
Don't forget to leave a star 🌟
|
||||||
|
|
||||||
|
## <span id="license">📜 License</span>
|
||||||
|
|
||||||
|
[MIT License](https://github.com/ghoshRitesh12/zoro.to-api/blob/main/LICENSE)
|
||||||
|
|||||||
Reference in New Issue
Block a user