Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/killovsky/trendings

Repositório do módulo scrapper para obtenção de trendings do Twitter.
https://github.com/killovsky/trendings

api countries data hashtag information module network nodejs scraper scraping social social-network tendencia topics trending trends trends24 twitter world

Last synced: 1 day ago
JSON representation

Repositório do módulo scrapper para obtenção de trendings do Twitter.

Awesome Lists containing this project

README

        

logo_twitter.png


[Source: Wikipédia]






GitHub License


GitHub Version


GitHub Updates











Codefactor


Is maintained



------

## Introdução
- Detalhes importantes que estão em outros arquivos:

1. [Reportar segurança, problemas e demais](https://github.com/KillovSky/Trendings/blob/master/.github/SECURITY.md)
2. [Contribuir com o código](https://github.com/KillovSky/Trendings/blob/master/.github/CONTRIBUTING.md)
3. [Ver o código de conduta](https://github.com/KillovSky/Trendings/blob/master/.github/CODE_OF_CONDUCT.md)
4. [Ver a changelog](https://github.com/KillovSky/Trendings/blob/master/.github/CHANGELOG.md)
5. [Ver mais projetos](https://github.com/KillovSky)
6. [Fazer uma donate](https://github.com/KillovSky#-fundings)

------

## O que este módulo faz?
- Este módulo utiliza o site [Trends24](https://trends24.in/) para obter as trends atuais do X (Twitter) sem a necessidade de módulos como `cheerio`, `puppeteer` ou instalação adicional de outros módulos e sistemas.

------

## Instalação:
- Rode o código abaixo para instalar via `NPM`:

```bash
$ npm i @killovsky/trendings
```

- Rode o código abaixo para instalar via `GIT`:
```bash
$ git clone https://github.com/KillovSky/Trendings.git
```

------

## 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.
>
> 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. As trends são automaticamente formatadas em ordem decrescente [130, 129, 128...] de acordo com a quantidade de tweets feitos.
>
> 7. Os sistemas são como um jogo de exploração, eles podem ser usados de infinitas formas, como um sandbox, divirta-se!
>
> 8. 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
```

- Ou acessar isso: [NpmJS Runkit - KillovSky@Trendings](https://npm.runkit.com/%40killovsky%2Ftrendings)

------

## 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!
- Clique [aqui](https://github.com/KillovSky/Trendings/blob/master/utils.json) para ver detalhes do ambiente de código e suas funções.


Descrição de cada parâmetro da execução:

```javascript
/* Função responsável por todo o código */
info('local')

/* ------------------------------------- *
* 1° - Local
* Valores: string
* Padrão: 'worldwide'
* Locais: "brazil, worldwide, italy..."
* Test Mode: "TEST#TICKET"
* FUNÇÃO ASYNC/PROMISE, USE AWAIT!
* ------------------------------------- */

/* Retorna o valor padrão e detalhes do erro */
fail('Error')

/* Retorna o resultado e roda funções adicionais */
dump('*')

/* Reseta o ambiente dos códigos */
reset()

/* Retorna a package JSON */
packs()

/* Retorna o ambiente de códigos */
env()
```




Exemplos de uso:

```javascript
/* Usando .then | Modo de uso padrão */
const trendings = require('@killovsky/trendings');
trendings.info('LOCAL').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 trendings = require('@killovsky/trendings');
const data = await trendings.info('LOCAL');
/* 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 trendings = require('@killovsky/trendings');
trendings.info('brazil').then(data => console.log(data));
```




Código já prontos [async/await]:

```javascript
/* Código usando await */
const trendings = require('@killovsky/trendings');
const data = await trendings.info('brazil');
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:

```JSON
{
"date": "String | Data [YYYY-MM-DD HH:MM:SS]",
"error": "Boolean | Determina se houve erro no request",
"dev_msg": "String / Boolean | Mensagem adicional de erro",
"error_msg": "String / false | Mensagem de erro do request",
"code": "Number | String | Código de erro HTTP",
"nodeDetails": {
"isError": "Boolean | Determina se houve erro no Node",
"code": "Number / Boolean | Código de erro do Node",
"message": "String / Boolean | Detalhes da mensagem de erro"
},
"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",
"content-length": "Number | Tamanho da resposta",
"Outros": "E vários outros headers, faça uma requisição para obter todos"
},
"tweet": [
{
"url": "String | URL da Trending",
"trend": "String | Assunto do momento",
"count": "String | Quantidade de tweets simplificada",
"countraw": "String | Quantidade de tweets em números inteiros"
}
]
}
```




Exemplo utilizável de resultado:

```JSON
{
"date":"22/07/2024, 22:22:00",
"error":false,
"dev_msg":false,
"error_msg":false,
"code":200,
"nodeDetails":{
"isError":false,
"code":false,
"message":false
},
"explain":{
"code":"OK",
"why":"The request is OK, this response depends on the HTTP method used."
},
"headers":{
"connection":"close",
"date":"Tue, 23 Jul 2024 00:46:26 GMT",
"last-modified":"Tue, 23 Jul 2024 00:46:26 GMT"
},
"tweet":[
{
"url": "https://twitter.com/search?q=Trump",
"trend": "Trump",
"count": "6.7M",
"countraw": "6686521"
}
]
}
```



------

## Perguntas e Respostas:

- 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 utiliza o `cheerio` ou `puppeteer` em vez desse sistema?
> Esse meio de informação exige instalação de módulos de terceiro, porém 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 e use ela, evite ficar utilizando um programa deste estilo muitas vezes seguidas sem esperar.

------

## Para os desenvolvedores do Trends24:
> Caros desenvolvedores/responsáveis do Trends24, caso este módulo possa ser ofensivo, danoso ou seja ruim para seus sistemas, me contatem usando as [Issues](https://github.com/KillovSky/Trendings/issues), farei a remoção o mais rápido possível, minha intenção neste módulo é apenas trazer uma funcionalidade útil para as pessoas ou seus projetos de desenvolvimento, meu objetivo não é, nunca foi e nunca será, causar danos ao site de vocês.