Giter VIP home page Giter VIP logo

live-divulgador's People

Contributors

chrisemke avatar devradhy avatar dunossauro avatar flaviofilipe avatar k30v1n avatar ttiagojm avatar vcwild avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

live-divulgador's Issues

Feature: Rodar bot em Docker

O que precisa ser feito?

  • Criar uma dockerfile para rodar o bot
  • Criar docker-compose com banco de dados em postgres
  • Criar migrations de banco que rodam dentro do docker compose

Bug: Conexão de rede instável na Azure

@aHub-Tech/devops

O bot do Livedivulgador está tendo algumas instabilidades na VPS da Azure nos últimos tempos.Houveram 3 falhas críticas de execução em 1 semana.

Suponho que esse tipo de falha provavelmente está acontecendo por causa da infra, pois nunca enfrentamos essas situações na nossa infra anterior (Digital Ocean).

Vou atualizar essa issue caso se repita, e nesse caso trarei o logger do bot.

Bug: Tweets duplicados sem motivo aparente

O que está acontecendo?

  • Em alguns casos o bot está ignorando o timeout de 1 hora para divulgar novamente algum streamer que ainda esteja online mas já foi divulgado
  • Nesses casos o bot divulga novamente dentro do período de 1 hora a mesma live

Motivos aparentes?

  • O bot não está executando o caching de streamers corretamente entre as duas instâncias

Exemplo:

2021-11-24 14:27:06 [    INFO] [            Thread-2] Verifying online streamers
2021-11-24 14:27:06 [   ERROR] [            Thread-2] Exception: Dininho tweet was already done
2021-11-24 14:27:06 [   ERROR] [            Thread-2] Exception: XBeowulf tweet was already done
2021-11-24 14:27:06 [    INFO] [            Thread-2] Updated tweeted streamers

Nesse caso a mensagem de log deveria ser No new live streamers to tweet, mas o cache não está sendo lidado corretamente

O que pode ser feito?

  • Desabilitar temporariamente a segunda instância do bot e investigar o que está acontecendo
  • Garantir que ambas instâncias conseguem lidar com o atributo cache corretamente

Separar mensagem de Tweet

O que precisa ser feito?

Separar mensagem de Tweet em um arquivo .yml, para abstrair a mensagem do código e facilitar possíveis mudanças futuras.

Remover tabela de categorias

O que precisa ser feito?

Remover a tabela de categorias, e fazer a verificação em que bot será divulgado, com o retorno da função com os dados da steam

Bug: Script de instalação do projeto não está funcionando corretamente

Não consegui fazer rodar

Attempt 1

rodrigo@linux:~/projetos/Live-Divulgador$ sh scripts/install.sh 
scripts/install.sh: 3: source: not found
scripts/install.sh: 6: print_header: not found
scripts/install.sh: 9: print_check: not found

Attempt 2

rodrigo@linux:~/projetos/Live-Divulgador$ ./scripts/install.sh 

-- Preparing python virtual environment 
[ KO ] virtualenv initialization /home/rodrigo/projetos/Live-Divulgador/venv
[ KO ] pip upgrade
[ KO ] pip install setuptools_scm
       ... installing livedivulgador bot component
[ KO ] livedivulgador bot installation
       ... checking CLI
[ KO ] livedivulgador CLI installation

Originally posted by @RodrigoDornelles

Try using chmod +x ./scripts/install.sh before running the script

Originally posted by @vcwild in #43 (comment)

Feature: Suporte a tags

O que deve ser feito?

  • Deve ser retomado o suporte a tags, que foi descontinuado na remodelagem da base de dados
  • As tags deverão ser geradas por contexto

O que não deve ser feito?

  • Criar tags específicas por streamer (será realizado em outro momento)

Como fazer?

Exemplo:
Streamer abre live em ciência e tecnologia
tags: #ciencia #tecnologia

Streamer abre live em software and gamedev
tags: #liveCoding #programação #desenvolvimento

Streamer abre um podcast
tags: #podcast #talk

Separar categorias

O que precisa ser feito?

Separar categorias aceitas pelo bot em um arquivo .yml ou em uma tabela no banco de dados

Bug: Critical error for suspended user

O que está acontecendo?

O bot não está conseguindo realizar tweets porque 1 usuário do banco foi suspenso da plataforma (não está sendo possível identificar quem é).

O que precisa ser feito?

Remover esse usuário.

Feature: Método que resolve Twitter ID

Precisamos implementar um método que resolva o Twitter ID quando é dado o Twitter username para o TwitterClient.

Exemplo de assinatura do método

class TwitterClient(...):
    ...
    get_user_id(self, twitter_username: str) -> int:
        ...

Exemplo de como o cliente consumirá esse método:

client = TwitterClient(...)
twitter_id = client.get_user_id(twitter_name)

Remover builds do docker-compose

  • Devem ser removidas builds do docker-compose
  • Deve ser alterada a build para um script genérico
  • A instalação das dependências deve ser facilitada

Refatorar funções do banco de dados

O que precisa ser feito?

Assim como na Issue #16, refatorar as funções do banco de dados, para ao invés de fazer várias chamadas ao banco de dados dados, criar uma unica função chamada get_user ou get_streamer, que retorna todas as informações do streamer.

Se necessário também para buscar informações, criar uma função get_users ou get_streamers, que retorna todos os streamers, mas definindo um limite de retorno, como 10 ou 20 usuários por vez

Bug: faltando variaveis na docker-compose

Ao buildar o mariaDB estao faltando as seguintes declaracoes

db_1              | 2021-10-17 06:41:46+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
db_1              | 2021-10-17 06:41:46+00:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:10.6.4+maria~focal started.
db_1              | 2021-10-17 06:41:47+00:00 [ERROR] [Entrypoint]: Database is uninitialized and password option is not specified
db_1              |     You need to specify one of MARIADB_ROOT_PASSWORD, MARIADB_ALLOW_EMPTY_ROOT_PASSWORD and MARIADB_RANDOM_ROOT_PASSWORD

Padronizar variáveis de ambiente

O que precisa ser feito?

Padronizar style das variáveis de ambiente, usando o padrão snake case com todas as letras maiúsculas

Feature: Avisar streamer que a live foi divulgada

O que deve ser feito?

  • Avisar um streamer quando sua live for divulgada

Como?

  • Tweetar sobre a live do streamer divulgado
  • Acessar a live do streamer e mandar uma saudação

Exemplo:

** Contexto twitter **

tweetar: livecoder entrou em live

** Contexto canal de livecoder **

livedivulgador: salve! divulguei sua live! :)

Remover criação de tabelas em loop

O que será feito?

Remover a criação de tabelas que ocorre no arquivo db.py, esse arquivo é chamado constantemente e sempre tanta criar uma tabela como uma especie de migration, uma solução futura para isso é criar migrations usando SQL ou com algum ORM que roda de forma unica e independente.

Feature: Reduzir consumo de processamento

O que precisa ser feito

Reduzir complexidade for loop para ações no banco de dados

Como pode ser feito

Alterar a lógica do banco para agregar todas as atualizações possíveis para serem executadas em uma batelada de commit

Refatorar funções da Twitch

O que precisa ser feito?

Hoje, existem várias funções que fazem chamadas para a API da Twitch para buscar o título da live ou outras informações de forma separada, ao invés disso pode ser criado funções principais que trazem as várias informações, evitado fazer requisições desnecessárias.

Por exemplo, criar uma função get_stream que recebe o id do streamer presente no banco de dados, e que retorna um objeto com todas as informações da live, da seguinte forma:

{ 
  "data": [
    { 
      "game_id": "511224",
      "game_name": "Apex Legends",
      "id": "43522369724",
      "is_mature": false,
      "language": "en",
      "started_at": "2021-10-13T21: 59: 03Z",
      "tag_ids": [ "6ea6bca4-4712-4ab9-a906-e3336a9d8039" ],
      "thumbnail_url": "https: //static-cdn.jtvnw.net/previews-ttv/live_user_tsm_imperialhal-{width}x{height}.jpg",
      "title": "Pubs til scrims | !proguides !glytch !nordvpn !tsm | TSMFTX",
      "type": "live",
      "user_id": "146922206",
      "user_login": "tsm_imperialhal",
      "user_name": "TSM_ImperialHal",
      "viewer_count": 14479
    }
  ],
  "pagination": {}
}

Para ver mais sobre como isso pode ser implementado veja Get Stream na documentação oficial da Twitch

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.