Com a popularidade das OSNs, aumentou o interesse em pesquisas para o entendi- mento sobre os padrões e comportamento dos usuários e conteúdos disponibilizados pelas OSNs. Sendo assim, a obtenção de dados das OSNs demandam diferentes tipos de coletas, que variam de acordo com o interesse do tipo de dados a ser coletado. Para analisar o comportamento dos canais do YouTube, foi necessário primeiro criar uma base de dados através de informações dos canais do YouTube e de cada vídeo que compõe o canal, que estejam disponíveis publicamente e que pudessem ser coletadas através da API1 do YouTube. Essa API utiliza o protocolo OAuth 2.0, que fornece uma forma padronizada de acessar os dados protegidos. Ele proporciona autorização específica para várias aplicações.
O aplicativo desenvolvido seguiu a política e os termos de uso de dados da API do Youtube, garantindo a privacidade dos usuários e respeitando a conduta deste estudo.
Antes de utilizar a API, é necessário ter uma conta cadastrada para acessar a página de desenvolvedores. Acessando a página de desenvolvedores, é possível registrar, autenticar-se com a conta do Google e cadastrar a aplicação em desenvolvimento. Após o cadastro da aplicação, é necessário gerar atributos importantes: Key, Client Secret e Acess Token, que devem ser sigilosos por motivos de segurança. A autenticação é um processo importante, pois é através dessas chaves que serão realizadas a captura dos dados. O Access Token é exclusivo do usuário que está desenvolvendo e deve ser armazenado de forma segura, mas nem sempre é necessário obtê-lo, visto que o YouTube permite fazer algumas requisições não autenticadas. Para obter informações de um usuário privado é necessário criar um aplicativo que requisite a autorização do usuário registrando, ou seja, o seu Access Token privado.
Para criar a base de dados proposta, foi coletado dados das métricas proveniente dos vídeos que estão relacionadas com os canais mais populares no Youtube, com base
1 <https://developers.google.com/youtube/>
Capítulo 4. Coleta de Dados 32
em uma lista disponível na página da Socialblade2. Utilizou-se esta lista para dar inicio a coleta. Para este trabalho selecionamos 3 categorias diferentes: Música; Entretenimento e Comédia. Para cada categoria selecionamos 10 canais do YouTube. Para cada categoria selecionados os 5 primeios canais com maior número de inscritos e outros 5 canais com maior número de visualizações, totalizando 30 canais selecionados para este trabalho. De acordo com [Chatzopoulou, 2010] as categorias que geram mais insights para análise de dados são as categorias de Música, Entretenimento e Comédia. Na seção 4.1.2 será descrito como foi desenvolvido o crawler utilizado na coleta de dados.
4.1.1 Uso de Quotas
Esta API possui algumas limitações por quotas3. O número de quotas é para garantir que os desenvolvedores usem o serviço conforme pretendido e não criem aplicativos que reduzam injustamente a qualidade do serviço ou limitam o acesso para os outros desenvolvedores. Porém esta limitação não foi um obstáculo para este estudo. Visto que, não foram necessárias utilizar da capacidade total de requisições que a API oferece.
[Quotas, 2017]
Obervamos que Google calcula o uso da cota atribuindo um custo a cada solicitação, mas o custo não é o mesmo para cada solicitação. Segundo o estudo do uso da API V3 do YouTube, [Quotas, 2017], dois fatores principais influenciam o custo da cota de uma solicitação:
1. Diferentes tipos de operações têm diferentes custos de quotas.
• A operação de leitura simples que recupera apenas o ID de cada recurso devolvido tem um custo de aproximadamente de 1 unidade.
• A operação de gravação tem um custo de aproximadamente 50 unidades.
• O envio de um vídeo tem um custo de aproximadamente 1600 unidades.
2. Dependendo de quantas partes do recurso são recuperadas por cada solicitação, as operações de leitura e gravação usa várias quantidades de quotas diferentes. As operações insert e update gravam dados e também devolvem um recurso. Por exemplo, a inclusão de uma playlist tem um custo de quota de 50 unidades para a operação de gravação, além do custo do recurso devolvido da playlist.
Uma solicitação da API que devolve dados de recursos deve especificar as partes dos recursos recuperadas pela solicitação. Sendo assim, cada parte adiciona cerca de 2 unidades ao custo de quota da solicitação. Portanto, uma solicitação videos.list que só recupera a parte snippet de cada vídeo pode ter um custo de 3 unidades. No
2 <https://socialblade.com/youtube/>
3 <https://developers.google.com/youtube/v3/getting-started#quota>
Capítulo 4. Coleta de Dados 33
entanto, uma solicitação videos.list que recupera todas as partes de cada recurso pode ter um custo de aproximadamente 21 unidades de quota.
Considerando essas regras, o [Quotas, 2017] diz que o número de solicitações de leitura, gravação ou envio que o aplicativo pode enviar por dia sem exceder sua quota devem ser levadas em consideração. Por exemplo, para uma quota diária de 5.000.000 unidades, o aplicativo poderá ter qualquer um dos seguintes limites aproximados:
• 1.000.000 operações de leitura, sendo que cada uma recupera duas partes de recursos.
• 50.000 operações de gravação e 450.000 operações de leitura adicionais, sendo que cada uma recupera duas partes de recursos.
• 2.000 envios de vídeo, 7.000 operações de gravação e 200.000 operações de leitura, sendo que cada uma recupera três partes de recursos.
4.1.2 Crawler desenvolvido
O aplicativo foi desenvolvido na linguagem de programação Python versão 2.7.3, utilizando a interface SPYDER versão 3.0 e o console de compilação IPython versão 2.7.13, em conjunto com os recursos da API do YouTube versão 3.0. Utilizou-se os príncipios REST (Representational State Transfer), onde o módulo cliente faz uma requisição HTTP (Hypertext Transfer Protocol), contendo origem, destino e tipo de busca, e o módulo servidor responde com um objeto JSON. O desenvolvimento do crawler foi executado em uma máquina local utilizando a plataforma Linux/Ubuntu 15.10, com processador Intel Core i7 CPU @ 2.20GHz x 8, sistema de 64-bit, 5.7 GB de memória e 771.7 GB de disco.
O aplicativo consistiu de funcionalidades específicas para a coleta de dados. Desta forma, foram executadas nas respectivas ordens as seguintes funcionalidades do crawler:
Buscar os dados do vídeo através da propriedade id_video, onde, através do retorno em JSON coletou-se o id_channel por meio da função checa_token; utilizou-se um laço de repetição para coletar as diversas métricas dos vídeos do canal, fazendo requisições da função checa_token para coletar dados da próxima página, que conforme a lista de vídeos coletados, foi necessário passar o token da próxima página; da mesma forma foi utilizada a função durationToSeconds, que conforme a lista de vídeos coletados, foi necessário converter o tempo do vídeo para segundos; as lista de vídeos coletadas foram unificadas em uma arquivo final. O arquivo final apresentou os dados em formatos .CSV, contendo os atributos do vídeo dos canais definidos para a análise.
Capítulo 4. Coleta de Dados 34