Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: script para baixar o avatar de todos os colaboradores #26

Closed
wants to merge 3 commits into from
Closed

Conversation

thenriquedb
Copy link
Contributor

@thenriquedb thenriquedb commented Jun 12, 2021

Na issue #23 foi sugerido a criação de uma tela de "Em construção" com os avatares dos colaboradores. Nó vídeo exclusivo para membros postados no dia 23/05 o Filipe disse que ainda não tinha nenhuma ideia de como fazer isso.

Com isso criei um script bem simples escrito em JS que utiliza o API pública do Github para acessar o repositório e realizar o download do avatar de cada um dos colaboradores.

Como executar?

  1. Devido o repositório ser privado é necessário utilizar um access token para acessar as informações. Para gerá-lo bastar acessar https://github.com/settings/tokens e clicar no botão Generate New Token.
  2. Crie um arquivo .env na raiz deste projeto com o seguinte formato AUTH_TOKEN=SEU_TOKEN_AQUI. Substitua SEU_TOKEN_AQUI pelo token que foi gerado anteriormente.
  3. Instale as depedências com yarn ou npm install.
  4. Execute o script dev

O codígo foi desenvolvido o padrão de projeto factory, onde cada funcão é divida em um modúlo separado. Caso não conheça esse padrão o Filipe já postou um vídeo no canal explicando passo a passo seu funcionamento.

PS: Esse é oficialmente minha primeira contribuição para um projeto público, me avisem caso eu fiz alguma coisa errada kk.

@vercel
Copy link

vercel bot commented Jun 12, 2021

This pull request is being automatically deployed with Vercel (learn more).
To see the status of your deployment, click below or on the icon next to each commit.

🔍 Inspect: https://vercel.com/filipedeschamps/tabnews/5kc5yfGeZHBmYhcpq2rCpGsAieHi
✅ Preview: https://tabnews-git-fork-thenriquedb-main-filipedeschamps.vercel.app

@thenriquedb thenriquedb changed the title feat: script para baixar o avatar de todos os colaboradores #23 feat: script para baixar o avatar de todos os colaboradores Jun 12, 2021
@francopan
Copy link

Oi @thenriquedb! Fiz algumas modificações no seu PR. Primeiramente, mudei seu script para que o token seja buscado de uma variavel de ambiente. Como esse repositório é compartilhado com outras pessoas, não queremos que elas tenham acesso ao nosso token, correto?

Além disso, a pasta contents não estava sendo criada. Com o ajuste que fiz, ela será criada automaticamente caso não exista.

@danwhat
Copy link

danwhat commented Jun 15, 2021

Meu deus! Como eu não vi isso antes? Só estava acompanhando as Issues e esqueci dos PRs
Muito bom! Não sei se foge muito do escopo mais acho que além das imagens, poderíamos guardar algumas outras informações como URL, User, etc em um JSON.
Vai que a gente queira fazer alguma funcionalidade a mais como um mouseover com mais informações.

@filipedeschamps filipedeschamps self-requested a review June 15, 2021 23:25
Copy link
Owner

@filipedeschamps filipedeschamps left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Que contribuição sensacional!!! 😍 Vai ser fundamental para conseguirmos concluir a Milestone 0 🤝 Estou marcando Request changes por ter detalhes que realmente seriam interessante seguir 👍

scripts/download-collaborators-avatar/README.md Outdated Show resolved Hide resolved
scripts/download-collaborators-avatar/README.md Outdated Show resolved Hide resolved
scripts/download-collaborators-avatar/package.json Outdated Show resolved Hide resolved
@filipedeschamps
Copy link
Owner

Meu deus! Como eu não vi isso antes? Só estava acompanhando as Issues e esqueci dos PRs
Muito bom! Não sei se foge muito do escopo mais acho que além das imagens, poderíamos guardar algumas outras informações como URL, User, etc em um JSON.
Vai que a gente queira fazer alguma funcionalidade a mais como um mouseover com mais informações.

Essa sugestão do @danwhat faz bastante sentido, ainda mais após a sugestão da página se manter após a inauguração do site 👍

@felipe-ds-lima
Copy link

Utilizando mais o next.js, eu recomendaria criar a página de contrução com os contribuidores, utilizando o getStaticProps, e utilizar a foto diretamente do github, e daria para resgatar vários dos dados dos contribuidores passando pelas props da página, sem precisar guardar as imagens e nem dados dos contribuidores, utilizando diretamente a api do github.

Da pra continuar utilizando as funções criadas por você, mas sendo chamadas direto da página pelo getStaticProps, ou ainda qualquer outra página.

Como o getStaticProps só é executado do lado do servidor, não tem problema nenhum em realizar o fetch dos dados privados por lá.

@thenriquedb
Copy link
Contributor Author

Fiz um novo commit com as mudanças sugeridas pelo @filipedeschamps. Agora o token do Github é setado em um arquivo .env que é carregado pela biblioteca dotenv. O valor definido pode ser acessado através de process.env.AUTH_TOKEN. Também atualizei o arquivo README para corresponder a nova estratégia.

@filipedeschamps
Copy link
Owner

filipedeschamps commented Jun 16, 2021

Utilizando mais o next.js, eu recomendaria criar a página de contrução com os contribuidores, utilizando o getStaticProps, e utilizar a foto diretamente do github, e daria para resgatar vários dos dados dos contribuidores passando pelas props da página, sem precisar guardar as imagens e nem dados dos contribuidores, utilizando diretamente a api do github.

@felipe-ds-lima eu tinha pensado exatamente a mesma coisa 😍 mas a ideia dessa página é o resultado dela ficar congelado no tempo, então dado a isso acredito que nada no final possa ser dinâmico (nem gerado em builds futuros, nem imagens mudando ou ficando indisponíveis por algum motivo). É realmente para ser uma página histórica. Faz sentido?

@filipedeschamps
Copy link
Owner

@thenriquedb para testar o script aqui localmente, tive que dar a permissão de repo ao meu token (diferente do que está instruído no README de apenas criar o token). E ao rodar, ele baixa somente o avatar desses usuários:

image

Será que está faltando alguma permissão no meu token? 🤝

@felipe-ds-lima
Copy link

felipe-ds-lima commented Jun 16, 2021

@felipe-ds-lima eu tinha pensado exatamente a mesma coisa 😍 mas a ideia dessa página é o resultado dela ficar congelado no tempo, então dado a isso acredito que nada no final possa ser dinâmico (nem gerado em builds futuros, nem imagens mudando ou ficando indisponíveis por algum motivo). É realmente para ser uma página histórica. Faz sentido?

Faz todo sentido, e bacana a ideia

@thenriquedb
Copy link
Contributor Author

@filipedeschamps tava dando uma olhada com mais calma na documentação da API do Github e descobri que por padrão é retornado apenas 30 items por consulta e por isso não está fazendo o download do avatar de todos.

A quantidade de items por consulta pode ser definida com valor máximo igual a 100, ainda assim não será possível obter todos os colaboradores em uma única requisição, desse modo será necessário realizar a implementação da paginação.

Documentação relacionada a listagem de contribuidores de um repositório.
https://docs.github.com/en/rest/reference/repos#list-repository-contributors

@filipedeschamps
Copy link
Owner

@thenriquedb quando puder, veja esse PR: #38

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

5 participants