Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/killovsky/myanimelist
Repositório do modulo de scrapper do MyAnimeList.
https://github.com/killovsky/myanimelist
anime api forum games genre girls husbando information japanese javascript jogos manga myanimelist nodejs novel otaku scrapper waifu
Last synced: about 1 month ago
JSON representation
Repositório do modulo de scrapper do MyAnimeList.
- Host: GitHub
- URL: https://github.com/killovsky/myanimelist
- Owner: KillovSky
- License: mit
- Created: 2022-10-17T03:19:15.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2022-10-17T03:19:19.000Z (over 2 years ago)
- Last Synced: 2024-12-05T17:44:25.521Z (about 2 months ago)
- Topics: anime, api, forum, games, genre, girls, husbando, information, japanese, javascript, jogos, manga, myanimelist, nodejs, novel, otaku, scrapper, waifu
- Language: JavaScript
- Homepage: https://www.npmjs.com/package/@killovsky/mal
- Size: 30.3 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
[Source: Wikipédia]
## Instalação:
- Rode o código abaixo para instalar via `NPM`:
```bash
$ npm i @killovsky/mal
```
- Rode o código abaixo para instalar via `GIT`:
```bash
$ git clone https://github.com/KillovSky/MyAnimeList.git
```
## O que este módulo faz?
- Ele faz scrapping de todas as informações possíveis das páginas de anime do [My Anime List](https://myanimelist.net/).
## O que este módulo tem de especial?
- Assim como o da [NASA](https://github.com/KillovSky/NASA), muitas coisas, confira abaixo:
------
> 1. Neste módulo, os erros não afetam o funcionamento, o que significa que apesar de qualquer erro, os valores 'sempre' estarão lá para que você não seja afetado. [Leia o Q&A]
>
> 2. Os erros serão inseridos na resposta com uma explicação sobre o que causou eles, facilitando para você entender.
>
> 3. Os headers estão inseridos na resposta, facilitando para saber detalhes que podem lhe ser uteis.
>
> 4. Não existem dependências de módulos de terceiro, tudo é feito usando o puro `Node.js`.
>
> 5. Cada linha do código possui uma explicação do que está rodando ou vai rodar, ou seja, o código INTEIRO é explicado, linha por linha.
>
> 6. Ao contrario da API oficial do [MAL](https://myanimelist.net), esse módulo retorna dezenas de informações sem uma `API-KEY` ou 'limitação'.
>
> 7. E muitas outras coisas, confira o código para entender!
------
## Como testar este módulo:
- Basta abrir um terminal na pasta do módulo e digitar:
```bash
$ npm test
```
## Como utilizar este módulo:
- Existem diversas formas de utilizar, mas como se trata de um script que faz uso de `Promises`, irei dar dois exemplos que funcionam bem, lembrando, você pode rodar sem especificar nada pois também funciona desta forma.
- Clique em uma das linhas/setas abaixo para exibir os detalhes!
Descrição de cada parâmetro da execução:
```javascript
// Adquire um anime aleatório
get()
// Enviando "TESTING_USAGE" na função...
// ...Executará em modo teste.
// Retorna o JSON padrão
defaults()
// Retorna apenas a URL de um anime
onlyurl()
// Retorna os animes padrões
animes()
// Retorna os códigos HTTP
http()
// Retorna a package JSON
packages()
```
Exemplos de uso:
```javascript
// Usando .then | Modo de uso padrão
const mal = require('@killovsky/mal');
mal.get().then(data => {
// Faça seu código baseado na object 'data' aqui
// Exemplo: console.log(data);
})
// Usando await [async] | Modo de uso padrão
const mal = require('@killovsky/mal');
const data = await mal.get();
// Faça seu código aqui usando a const 'data'
// Exemplo: console.log(data);
```
Código já prontos [.then]:
```javascript
// Código usando .then
const mal = require('@killovsky/mal');
mal.get().then(data => console.log(data));
```
Código já prontos [async/await]:
```javascript
// Código usando await
const mal = require('@killovsky/mal');
const data = await mal.get();
console.log(data);
// Se você não sabe criar uma função async ou ainda não tiver uma, use este código abaixo:
(async () => {
// Cole um código com await aqui dentro
})();
```
Exemplo de resultado com explicações:
- Caso um dos valores, como as arrays, não seja encontrado ou obtenha erros, `false` será colocado no seu lugar.
```JSON
{
"date": "String | Data [YYYY-MM-DD HH:MM:SS]",
"error": "true | false",
"error_msg": "String / false | Códigos de erros de execução",
"code": "Number | String | Código de erro HTTP",
"explain": {
"code": "Number / String | Código escrito de HTTP",
"why": "String | Explicação do código HTTP"
},
"headers": {
"date": "String | Data escrita da requisição",
"content-type": "String | Tipo de resposta",
"Outros": "E vários outros headers, faça uma requisição para obter todos."
},
"MAL": {
"url": "String / false | URL MAL do anime",
"image": "String / false | URL da capa do anime",
"title": "String / false | Nome padrão",
"title_synonyms": "String / false | Sinônimos do Nome",
"title_japanese": "String / false | Nome Japonês",
"title_french": "String / false | Nome Francês",
"title_english": "String / false | Nome Inglês",
"sort": {
"url": "String / false | URL MAL do tipo de transmissão",
"type": "String / false | Tipo de transmissão"
},
"episodes": "String / false | Número de episódios",
"list": {
"data": [
{
"platform": {
"id": "Número | ID?",
"name": "String | Nome da plataforma?",
"icon": "String | Nome do Icone?",
"type": "Número | Tipo?"
},
"available": "Boolean / true, false | Disponível na plataforma?",
"url": "String | URL na plataforma?"
}
],
"count": {
"available": "Número | ?",
"typicals": "Número | ?",
"others": "Número | ?",
"total": "Número | ?"
}
},
"status": "String / false | Status de transmissão",
"duration": "String / false | Duração do episodio",
"score": {
"votes": "String / false | Número de votos",
"value": "String / false | Porcentagem de aprovação"
},
"rank": "String / false | Número de ranking",
"popularity": "String / false | Número de popularidade",
"members": "String / false | Número de membros",
"favorites": "String / false | Número de favoritos",
"rating": "String / false | Classificação de idade",
"external": [
{
"name": "String / false | Nome do site externo",
"url": "String / false | URL's do site externo"
}
],
"characters": [
{
"voice": {
"name": "String / false | Nome do dublador/a",
"url": "String / false | URL da página MAL do dublador/a",
"images": "array / false | Fotos do dublador/a"
},
"name": "String / false | Nome do personagem",
"url": "String / false | URL's da página do personagem"
}
],
"ost": [
{
"hear": {
"spotify": "String / false | URL da música no Spotify",
"apple": "String / false | URL da música na Apple",
"amazon": "String / false | URL da música no Amazon",
"youtube": "String / false | URL da música no YouTube",
"other": "String / false | URL's de outros locais"
},
"name": "String / false | Nome da música",
"by": "String / false | Nome do autor",
"ep": "String / false | Episódios em que a OST apareceu"
}
],
"reviews": [
{
"name": "String / false | Nome do avaliador",
"date": "String / false | Data do comentário",
"url": "String / false | Link do perfil do avaliador",
"at": "String / false | Link da página do comentário",
"review": "String / false | Comentário do examinador"
}
],
"related": [
{
"name": "String / false | Nome de anime relacionado",
"url": "String / false | URL do anime relacionado"
}
],
"links": [
{
"name": "String / false | Nome da página MAL",
"url": "String / false | Link da página MAL"
}
],
"description": "String / false | Descrição do anime",
"stream": [
{
"name": "String / false | Nome do streaming",
"url": "String / false | URL do streaming"
}
],
"foruns": [
{
"name": "String / false | Nome da discussão",
"url": "String / false | URL MAL da discussão"
}
],
"recommendations": [
{
"name": "String / false | Nome da recomendação",
"url": "String / false | URL MAL da recomendação"
}
],
"aired": "String / false | Data de inicio ao fim da exibição",
"source": "String / false | Origem do anime",
"broadcast": "String / false | Dia da semana em que os episódios vão ao ar",
"premier": [
{
"at": "String / false | Tipo de premiação",
"url": "String / false | URL MAL do prêmio"
}
],
"genres": [
{
"name": "String / false | Nome do tema",
"url": "String / false | URL MAL do Tema"
}
],
"producers": [
{
"name": "String / false | Nome do produtor/a",
"url": "String / false | URL MAL do produtor/a"
}
]
}
}
```
Exemplo utilizável de resultado:
- A `Object` utilizável é grande demais para ser exibida aqui, sendo 2 a 3 vezes maior que a versão explicativa acima, para conferir um exemplo utilizável, acesse a "[Github](https://github.com/KillovSky/MyAnimeList)" oficial e abra o arquivo "[default.json](https://github.com/KillovSky/MyAnimeList/blob/master/default.json)" ou "[Clique Aqui](https://raw.githubusercontent.com/KillovSky/MyAnimeList/master/default.json)".
## Perguntas e Respostas [Q&A]:
- Isso é bem similar ao seu módulo do Projeto APOD da NASA, não é?
> Sim, é por que quero criar sistemas fáceis de entender e usar, decidi que a melhor forma seria fazendo eles de forma similar, deixando o código bem simples para qualquer um que vier de outros projetos meus.
>
- Por que não usou `axios`, `cheerio` ou módulos do tipo?
> Esse meio exige instalação de módulos de terceiro, quero fazer meus sistemas sem dependências, nada além do próprio `Node.js`, pois tenho foco em uma única tarefa: ser simples.
>
- O que é proibido ao usar este módulo?
> Você jamais deve abusar de qualquer programa, sempre crie um limitador de tempo ou armazene a ultima resposta se caso seja a mesma imagem e use ela, evite ficar utilizando um programa deste estilo muitas vezes seguidas sem esperar.
>
- Comunicado do DEV [Q&A]
> Este módulo foi feito em menos de um dia de forma apressada e rápida, ele não está completo ainda e pode apresentar erros, embora obter erros graves seja um pouco difícil, mesmo assim, use com cuidado e sem abuso.
## Suporte
- Se obtiver algum problema, você pode me dizer [Reportando nas Issues](https://github.com/KillovSky/MyAnimeList/issues).
- Confira outros projetos meus [Acessando Isto](https://github.com/KillovSky).
- Se gostar, doe para me ajudar a continuar desenvolvendo, mais informações [Clicando Aqui](http://htmlpreview.github.io/?https://github.com/KillovSky/iris/blob/main/.readme/donates/page.html) - [Página do Projeto Íris]