1
resposta

[Dúvida] DataFrame vazio

Bom dia, venho tentando realizar esse projeto porem meu data frame só da como vazio. Também tive duvidas em outras partes ao qual perguntei no discord e não houve respostas...

import requests
import pandas as pd

class DadosRepositorios:


def __init__(self, owner):
    self.owner = owner
    self.api_base_url = 'https://api.github.com'
    self.access_token='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'
    self.headers = {'Authorization': 'Bearer ' + self.access_token,
                'X-GitHub-Api-Version': '2022-11-28'}

def lista_repositorios (self):
    repos_list = []

    for page_num in range(1, 20):
        try:
            url = f'{self.api_base_url}/users/{self.owner}/repos?page={page_num}'
            response = requests.get(url, headers=self.headers)
            repos_list.append(response.json())
        except:
            repos_list.append(None)

    return repos_list

def nomes_repos(self, repos_list): 
    repo_names=[] 
    for page in repos_list:
        for repo in page:
            try:
                repo_names.append(repo['name'])
            except: 
                pass

    return repo_names

def nomes_linguagens(self, repos_list):
    repo_languages=[]
    for page in repos_list:
        for repo in page:
            try:
                repo_languages.append(repo['language'])
            except:
                pass

    return repo_languages

def cria_df_linguagens (self):

    repositorios = self.lista_repositorios()
    nomes = self.nomes_repos (repositorios)
    linguagens = self.nomes_linguagens (repositorios)

    dados = pd.DataFrame()
    dados['repository_name'] = nomes
    dados['language'] = linguagens

    return dados

amazon_rep = DadosRepositorios('amzn')
ling_mais_usadas_amzn = amazon_rep.cria_df_linguagens()

netflix_rep = DadosRepositorios('netflix')
ling_mais_usadas_netflix = netflix_rep.cria_df_linguagens()

spotify_rep = DadosRepositorios('spotify')
ling_mais_usadas_spotify = spotify_rep.cria_df_linguagens()

# Salvando os dados 
ling_mais_usadas_amzn.to_csv('dados/linguagens_amzn.csv')
ling_mais_usadas_netflix.to_csv('dados/linguagens_netflix.csv')
ling_mais_usadas_spotify.to_csv('dados/linguagens_spotify.csv')

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Olá, Lucas! Tudo bem?

Desculpe pela demora no retorno.

O Discord da Alura é uma ótima ferramenta para interações entre as pessoas estudantes. Por lá, elas trocam ideias, compartilham experiências e se ajudam mutuamente. Nossa equipe de monitores eventualmente passa por lá, mas, para obter um suporte direto dos especialistas, o melhor caminho continua sendo o fórum.

Testei o seu código e, além de retornar vazio, recebi a seguinte mensagem ao imprimir o response.json(): {'message': 'Bad credentials', 'documentation_url': 'https://docs.github.com/rest', 'status': '401'}. Ou seja, o token está inválido, expirado ou sem as permissões necessárias.

Para corrigir isso, você pode seguir os passos mostrados nesta aula, a partir do minuto 02:39.De toda forma, deixo também o passo a passo aqui:

  1. Clique no ícone do seu perfil (canto superior direito da página) e selecione "Settings".

  2. No menu lateral, role até o final e clique em "Developer settings".

  3. Selecione a opção "Personal access tokens".

  4. Em seguida, clique em "Tokens (classic)".

  5. Por fim, clique no botão "Generate new token".

    A imagem mostra a interface do GitHub na seção Developer Settings, especificamente em Personal access tokens (classic). No menu lateral, a opção Tokens (classic) está selecionada. No painel principal, é exibida a mensagem de que nenhum token foi criado ainda, e há um botão com o texto Generate new token. Ao clicar nele, aparece um menu com duas opções: Generate new token (para tokens refinados e com escopo de repositório) e Generate new token (classic), destacado com o marcador 3, indicado para uso geral.

Lembre-se de que os tokens têm data de expiração:

A imagem mostra a interface do GitHub na seção de criação de um novo token de acesso pessoal (personal access token) do tipo classic. No lado esquerdo, estão listadas as opções GitHub Apps, OAuth Apps e Personal access tokens. À direita, o formulário permite inserir uma nota descritiva (Note) e selecionar a validade do token (Expiration), que está definida como 30 dias, com data de expiração em 25 de abril de 2025. Um marcador com o número 4 destaca o campo de seleção da validade do token.

Espero ter ajudado.

Qualquer dúvida, não hesite em compartilhar no fórum.

Bons estudos! 🚀

Caso este post tenha lhe ajudado, por favor, marcar como solucionado