Twitter and Youtube Collector

763 visualizações

Publicada em

Publicada em: Educação
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
763
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
6
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Twitter and Youtube Collector

  1. 1. Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Biológicas Departamento de ComputaçãoBCC428 - ANÁLISE DE MÍDIA SOCIAL Segundo Trabalho Prático Johnnatan Messias Pollyanna Gonçalves Wellington Dores Professor - Fabricio Benevenuto Ouro Preto 10 de outubro de 2011
  2. 2. Sumário 0.1 Considerações iniciais . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 0.2 Especicação do problema . . . . . . . . . . . . . . . . . . . . . . . . 11 Problemas 1 1.1 Coletor Timeline Pública - Twitter . . . . . . . . . . . . . . . . . . . 1 1.2 Coletor Timeline de Usuário - Twitter . . . . . . . . . . . . . . . . . . 2 1.3 Coletor de Prole - Twitter . . . . . . . . . . . . . . . . . . . . . . . 3 1.4 Coletor de Followers - Twitter . . . . . . . . . . . . . . . . . . . . . . 4 1.5 Coletor de Friends - Twitter . . . . . . . . . . . . . . . . . . . . . . . 4 1.6 Coletor da Quantidade de Seguidores e Seguidos - Twitter . . . . . . 5 1.7 Coletor do Youtube . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.8 Funções Auxiliares . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.9 Função Principal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 Limitações 73 Testes 84 Referências 9Lista de Figuras 1 Função getU serP rof ile . . . . . . . . . . . . . . . . . . . . . . . . . 8 2 Função getT imeLineP ublic . . . . . . . . . . . . . . . . . . . . . . . 8 3 Função getF ollowersAndF riendsCount . . . . . . . . . . . . . . . . 9 4 Função mostP opularY outube . . . . . . . . . . . . . . . . . . . . . . 9Listings 1 Coletor da timeline Pública . . . . . . . . . . . . . . . . . . . . . . . 2 2 Coletor da timeline de um usuário . . . . . . . . . . . . . . . . . . . . 2 3 Coletor da timeline de um prole . . . . . . . . . . . . . . . . . . . . 3 4 Coletor de followers . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 5 Coletor de friends . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 6 Coletor da quantidade de seguidores e seguidos . . . . . . . . . . . . . 5 7 Coletor do Youtube . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 8 Funções Auxiliares . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 9 Função Principal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2
  3. 3. 0.1 Considerações iniciais • Linguagem utilizada: Linguagem Python. • Ambiente de desenvolvimento da documentação: TeXnicCenter 1 BETA 7.50- A Editor de LTEX.0.2 Especicação do problema Este trabalho tem como objetivo exercitar formas de coletar dados de redes sociasonline através de suas respectivas AP Is e o entendimento das mesmas.1 Problemas • Construa um coletor de dados do Twitter em P ython. Seu programa deve receber como parâmetro o ID de um usuário e deve então coletar informações do perl do usuário, dos tweets já postados pelo usuário (caso a conta não seja privada) e a lista de seguidores e seguidos. • Desenvolva um crawler que faça a coleta de uma amostra aleatória de tweets a partir da AP I de streaming. • Desenvolva um coletor de informações da AP I de outro sistema que não o já apresentado. As funções abaixo apresentam uma resolução para os problemas propostos acima: 1.1 Coletor Timeline Pública - Twitter Através dessa funções é possível capturar os dados referentes a TimeLine Pública do Twitter. Para isso, é necessário acessar a API do Twitter e capturar como, por exemplo, estes dados: 1. Tweet: Text: o Tweet do usuário. Created At: Data de criação do Tweet. Place: Cidade e país de origem do Tweet. ID: Número de identicação do Tweet. User: Usuário proprietário do Tweet. 2. User: Name: Nome de registro do usuário. Description: Descrição do perl do usuário. ID: Número de identicação do usuário. Location: Coordenadas geográcas do usuário. 1
  4. 4. 1 def getTimeLinePublic ( ) : u r l = h t t p s : / / a p i . t w i t t e r . com/1/ s t a t u s e s / p u b l i c _ t i m e l i n e . j s o n ? count=3 3 d = getJson ( url ) 5 l = [] 7 f o r i in range ( len (d) ) : i f ( d [ i ] [ p l a c e ] == None ) : 9 p l a c e = P l a c e not e x i s t s else :11 p l a c e = ( d [ i ] [ p l a c e ] [ full_name ] + − +d [ i ] [ place ] [ country ] ) l . append ( nMessage %d %i )13 l . append ( Text : %s %(d [ i ] [ t e x t ] ) ) l . append ( Created At : %s %(d [ i ] [ c r e a t e d _ a t ] ) )15 l . append ( P l a c e : %s %( p l a c e ) ) l . append ( ID : %s %(d [ i ] [ i d ] ) )17 l . append ( User : @ %(d [ i ] [ u s e r ] [ screen_name %s ]) ) l . append ( Name : %s % ( d [ i ] [ u s e r ] [ name ]) )19 l . append ( D e s c r i p t i o n : %s % ( d [ i ] [ u s e r ] [ description ]) ) l . append ( ID : %s % ( d [ i ] [ u s e r ] [ i d ] ) )21 l . append ( L o c a t i o n : %s % ( d [ i ] [ u s e r ] [ location ]) )23 printMyList ( l ) Listing 1: Coletor da timeline Pública 1.2 Coletor Timeline de Usuário - Twitter Semalhando à seção 1.1, aqui capturamos a lista de Tweets de um determinado usuário. Text: Tweet do usuário. Created At: Data de criação do Tweet. Place: Cidade e país de origem do Tweet. 1 d e f getTimeLineUser ( i d ) : u r l = h t t p s : / / t w i t t e r . com/ s t a t u s e s / u s e r _ t i m e l i n e . j s o n ? u s e r _ i d = + s t r ( i d ) 3 d = getJson ( url ) l = [] 5 i f ( l e n ( d ) == 0 ) : 7 l . append ( TimeLineUser not found o r not e x i s t s ) return 9 f o r i in range ( len (d) ) :11 i f ( d [ i ] [ p l a c e ] == None ) : p l a c e = P l a c e not e x i s t s 2
  5. 5. 13 else : p l a c e = ( d [ i ] [ p l a c e ] [ full_name ] + − +d [ i ] [ place ] [ country ] )15 l . append ( nMessage %d %i ) l . append ( Text : %s %(d [ i ] [ t e x t ] ) )17 l . append ( Created At : %s %(d [ i ] [ c r e a t e d _ a t ] ) ) l . append ( P l a c e : %s %( p l a c e ) )19 printMyList ( l ) Listing 2: Coletor da timeline de um usuário 1.3 Coletor de Prole - Twitter Função responsável por obter os seguintes dados de um determinado usuário: User: Usuário proprietário do Tweet. Name: Nome de registro do usuário. Status: Último Tweet postado pelo usuário. Description: Descrição do perl do usuário. Followers Count: Quantidade de seguidores. Friends Count: Quantidade dde seguidos. Listed Count: Quantidade de listas do usuário. Veried: Informa se a conta do usuário foi vericada. Language: Idioma utilizado pelo usuário. URL: Exibe a URL que o usuário deniu no seu prole. Location: Coordenadas geográcas do usuário. def getUserProfile ( id ) :2 u r l = h t t p s : / / a p i . t w i t t e r . com/1/ u s e r s /show . j s o n ? i n c l u d e _ e n t i t i e s=t r u eu s e r _ i d= + s t r ( i d ) d = getJson ( url )4 s t a t u s = None6 l = []8 i f ( l e n ( d ) == 0 ) : l . append ( User not found o r not e x i s t s )10 return i f ( d . has_key ( s t a t u s ) ) :12 status = d [ status ] [ text ]14 l . append ( User @ : %d [ screen_name ] ) %s l . append ( Name : %s %d [ name ] )16 l . append ( S t a t u s : %s %s t a t u s ) l . append ( D e s c r i p t i o n : %s %d [ d e s c r i p t i o n ] )18 l . append ( F o l l o w e r s Count : %s %d [ f o l l o w e r s _ c o u n t ] ) l . append ( F r i e n d s Count : %s %d [ f r i e n d s _ c o u n t ] )20 l . append ( L i s t e d Count : %s %d [ l i s t e d _ c o u n t ] ) l . append ( V e r i f i e d : %s %d [ v e r i f i e d ] ) 3
  6. 6. 22 l . append ( Language : %s %d [ l a n g ] ) l . append ( Url : %s %d [ u r l ] )24 l . append ( L o c a t i o n : %s %d [ l o c a t i o n ] )26 printMyList ( l ) Listing 3: Coletor da timeline de um prole 1.4 Coletor de Followers - Twitter Aqui capturamos a lista de Seguidores(Followers) de um determinado usuário. É importante ressaltar que a cada captura nos é fornecido, através da API do Twitter, uma lista de 5000 IDs dos usuários. Logo foi realizado um tratamento de modo a obter toda a lista do utuário que ultrapasse esse limite. def getFollowersUser ( id ) :2 c u r s o r = −1 count = 14 n = 5000 nFollowers = getFollowersAndFriendsCount ( id ) [ 0 ]6 q n t L i s t s = i n t ( math . c e i l ( f l o a t ( n F o l l o w e r s ) /n ) )8 f o r i in range ( q n t L i s t s ) : l = []10 u r l = h t t p s : / / a p i . t w i t t e r . com/1/ f o l l o w e r s / i d s . j s o n ? c u r s o r =+s t r ( c u r s o r )+u s e r _ i d= + s t r ( i d ) d = getJson ( url )12 i f ( l e n ( d [ i d s ] ) == 0 ) : l . append ( User doesn t have f o l l o w e r s )14 return16 f o r i in range ( len (d [ i d s ] ) ) : l . append ( s t r ( count )+ / +s t r ( n F o l l o w e r s ) )18 l . append ( ID : %s %d [ i d s ] [ i ] ) count = count + 120 printMyList ( l ) cursor = d [ next_cursor ] Listing 4: Coletor de followers 1.5 Coletor de Friends - Twitter Aqui capturamos a lista de Seguidos(Friends) de um determinado usuário. A execução dessa função é semelhante à 1.4.1 def getFriendsUser ( id ) : c u r s o r = −13 count = 1 n = 50005 nFriends = getFollowersAndFriendsCount ( id ) [ 1 ] q n t L i s t s = i n t ( math . c e i l ( f l o a t ( n F r i e n d s ) /n ) )7 f o r i in range ( q n t L i s t s ) : 4
  7. 7. 9 l = [] u r l = h t t p s : / / a p i . t w i t t e r . com/1/ f r i e n d s / i d s . j s o n ? c u r s o r= +s t r ( c u r s o r )+u s e r _ i d= + s t r ( i d )11 d = getJson ( url )13 i f ( l e n ( d [ i d s ] ) == 0 ) : l . append ( User doesn t have f r i e n d s )15 return17 f o r i in range ( len (d [ i d s ] ) ) : l . append ( s t r ( count )+ / +s t r ( n F r i e n d s ) )19 l . append ( ID : %s %d [ i d s ] [ i ] ) count = count + 121 printMyList ( l )23 cursor = d [ next_cursor ] Listing 5: Coletor de friends 1.6 Coletor da Quantidade de Seguidores e Seguidos - Twitter Essa função é responsável por denir a quantidade de Seguidores e Seguidos de um determinado usuário para uso exclusivo das funções 1.4 e 1.5. Basicamente retorna uma tupla contendo o número de Seguidores e Seguidos.1 def getFollowersAndFriendsCount ( id ) : u r l = h t t p s : / / a p i . t w i t t e r . com/1/ u s e r s /show . j s o n ? i n c l u d e _ e n t i t i e s=t r u eu s e r _ i d= + s t r ( i d )3 d = getJson ( url ) i f ( l e n ( d ) == 0 ) :5 p r i n t User doesn t have f o l l o w e r s return 07 return (d [ followers_count ] , d [ friends_count ] ) Listing 6: Coletor da quantidade de seguidores e seguidos 1.7 Coletor do Youtube O coletor para o Y outube apresentado abaixo retorna uma lista dos vídeos mais populares da rede, incluindo suas descrições e categorias: Categoria: Exibe a categoria dos vídeos capturados. Title: Título do vídeo. Autor: Autor do vídeo. Published: Data de publicação do vídeo no Youtube1 d e f most_popular_Youtube ( ) : l = []3 u r l = ( h t t p : / / gdata . youtube . com/ f e e d s / a p i / s t a n d a r d f e e d s / most_popular ? v=2a l t=j s o n ) 5
  8. 8. d = getJson ( url )5 json = d [ feed ] videos = json [ entry ]7 f o r i in range ( len ( videos ) ) :9 videoList = videos [ i ] l . append ( C a t e g o r i a : + videoList [ category ] [ 1 ] [ label ])11 l . append ( Title : + v i d e o L i s t [ t i t l e ] [ $t ]) l . append ( Autor : + v i d e o L i s t [ author ] [ 0 ] [ name ] [ $ t ] )13 l . append ( Published : + videoList [ published ] [ $t ] )15 printMyList ( l ) Listing 7: Coletor do Youtube 1.8 Funções Auxiliares Estas são funções importantes para a entrada e saída dos dados. Temos: getJson: Função responsável por armazenar o mapa do JSon retornado pela API do Twitter. printMyList: Função responsável pela impressão em tela dos resultados obtidos em cada uma das execuções das funções do programa.1 def getJson ( url ) : arq = u r l l i b . u r l o p e n ( u r l )3 r e t u r n ( j s o n . l o a d ( arq ) )5 def printMyList ( l ) : f o r i in range ( len ( l ) ) :7 print l [ i ] Listing 8: Funções Auxiliares 1.9 Função Principal Essa é a função principal do programa. É nela em que o usuário dene o ciclo de execução de todo o programa. Vide código 9.1 def getPainel () : print ( [ 0 ] − Exit )3 print ( [ 1 ] − getTimeLinePublic ) print ( [ 2 ] − getTimeLineUser )5 print ( [ 3 ] − getUserProfile ) print ( [ 4 ] − getFollowersUser )7 print ( [ 5 ] − getFriendsUser ) 6
  9. 9. p r i n t ( [ 6 ] − getFollowersAndFriendsCount ) 9 p r i n t ( [ 7 ] − Videos mais p o p u l a r e s do Youtube ) 11 d e f main ( ) : w h i l e ( True ) : 13 getPainel () op = i n p u t ( D i g i t e a opcao : ) 15 i f ( op == 0 ) : 17 break 19 e l i f ( op == 1 ) : getTimeLinePublic ( ) 21 e l i f ( op == 7 ) : most_popular_Youtube ( ) 23 else : 25 i d = i n p u t ( D i g i t e o ID do User : ) i f ( op == 2 ) : 27 getTimeLineUser ( i d ) e l i f ( op == 3 ) : 29 getUserProfile ( id ) e l i f ( op == 4 ) : 31 getFollowersUser ( id ) e l i f ( op == 5 ) : 33 getFriendsUser ( id ) e l i f ( op == 6 ) : 35 count = g e t F o l l o w e r s A n d F r i e n d s C o u n t ( i d ) p r i n t ( F o l l o w e r s Count : %s %count [ 0 ] ) 37 p r i n t ( F r i e n d s Count : %s %count [ 1 ] ) 39 i f __name__ == __main__ : main ( ) Listing 9: Função Principal2 Limitações Nesse Trabalho Prático tivemos como diculdade em utilizar caracteres unicodeno Windows, sendo assim, sugiro a execução do programa no Sistema OperacionalLinux ou Mac uma vez que não tivemos problemas em executar nessas plataformas. 7
  10. 10. 3 Testes Abaixo estão representados os testes de funcionamento das funções getUserProle(Figura 1), getTimeLinePublic (Figura 2), getFollowersAndFriendsCount (Figura3) e mostPopularYoutube (Figura 4). Figura 1: Função getU serP rof ile Figura 2: Função getT imeLineP ublic 8
  11. 11. Figura 3: Função getF ollowersAndF riendsCount Figura 4: Função mostP opularY outube4 Referências • `A python wrapper around the Twitter API - http://code.google.com/p/python-twitter/ • `Twitter Developers - https://dev.twitter.com/ • `APIs e Ferramentas do Youtube - http://code.google.com/intl/pt-BR/apis/youtube/overview.html 9

×