SlideShare uma empresa Scribd logo
1 de 11
Baixar para ler offline
Universidade Federal de Ouro Preto


    Instituto de Ciências Exatas e Biológicas


         Departamento de Computação




BCC428 - 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
Sumário

   0.1 Considerações iniciais . . . . . . . . . . . . . . . . . . . . . . . . . . .                                  1
   0.2 Especicação do problema . . . . . . . . . . . . . . . . . . . . . . . .                                      1

1 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 . . . . . . . . . . . . . . . . . . . . . . .                         .   .   .   .   .   .   6

2 Limitações                                                                                                         7
3 Testes                                                                                                             8
4 Referências                                                                                                        9

Lista 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 . . . . . .      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   9


Listings

   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
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 socias
online 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
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
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 = None

6          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
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 = 1
4     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                      return

16               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 + 1
20               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 = −1
3     count = 1
      n = 5000
5     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
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                      return

17              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 + 1
21
                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 0
7     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 Youtube

1 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
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
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 Principal


2        Limitações

   Nesse Trabalho Prático tivemos como diculdade em utilizar caracteres unicode
no Windows, sendo assim, sugiro a execução do programa no Sistema Operacional
Linux ou Mac uma vez que não tivemos problemas em executar nessas plataformas.




                                                          7
3    Testes

    Abaixo estão representados os testes de funcionamento das funções getUserProle
(Figura 1), getTimeLinePublic (Figura 2), getFollowersAndFriendsCount (Figura
3) e mostPopularYoutube (Figura 4).




                        Figura 1: Função getU serP rof ile




                      Figura 2: Função getT imeLineP ublic




                                        8
Figura 3: Função getF ollowersAndF riendsCount




                     Figura 4: Função mostP opularY outube



4     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

Mais conteúdo relacionado

Semelhante a Twitter and Youtube Collector

Python gtk
Python gtkPython gtk
Python gtkTiago
 
Iptables
IptablesIptables
IptablesTiago
 
Postgre sql
Postgre sqlPostgre sql
Postgre sqlTiago
 
Programacao gtk
Programacao gtkProgramacao gtk
Programacao gtkTiago
 
Iptim pt
Iptim ptIptim pt
Iptim ptIptim
 
Quanta
QuantaQuanta
QuantaTiago
 
Postfix
PostfixPostfix
PostfixTiago
 
My sql
My sqlMy sql
My sqlTiago
 
Jspservlets
JspservletsJspservlets
JspservletsTiago
 
Cientista da computacao usando python
Cientista da computacao usando pythonCientista da computacao usando python
Cientista da computacao usando pythonJean Lopes
 
Python
PythonPython
PythonTiago
 
Apostila cdtc dotproject
Apostila cdtc dotprojectApostila cdtc dotproject
Apostila cdtc dotprojectTiago
 
Plano de projeto: Bichos do Campus na Web
Plano de projeto: Bichos do Campus na WebPlano de projeto: Bichos do Campus na Web
Plano de projeto: Bichos do Campus na WebJorge Roberto
 
Linguagem c
Linguagem cLinguagem c
Linguagem cTiago
 
Plano de Projeto de Software para o desenvolvimento do SIGE (Sistema de Geren...
Plano de Projeto de Software para o desenvolvimento do SIGE (Sistema de Geren...Plano de Projeto de Software para o desenvolvimento do SIGE (Sistema de Geren...
Plano de Projeto de Software para o desenvolvimento do SIGE (Sistema de Geren...Igor Costa
 
Programacao cpp
Programacao cppProgramacao cpp
Programacao cppTiago
 

Semelhante a Twitter and Youtube Collector (20)

Python gtk
Python gtkPython gtk
Python gtk
 
Iptables
IptablesIptables
Iptables
 
Postgre sql
Postgre sqlPostgre sql
Postgre sql
 
Horde
HordeHorde
Horde
 
Programacao gtk
Programacao gtkProgramacao gtk
Programacao gtk
 
Iptim pt
Iptim ptIptim pt
Iptim pt
 
Quanta
QuantaQuanta
Quanta
 
Postfix
PostfixPostfix
Postfix
 
Perl
PerlPerl
Perl
 
My sql
My sqlMy sql
My sql
 
Jspservlets
JspservletsJspservlets
Jspservlets
 
Mrtg
MrtgMrtg
Mrtg
 
Cientista da computacao usando python
Cientista da computacao usando pythonCientista da computacao usando python
Cientista da computacao usando python
 
Python
PythonPython
Python
 
Apostila cdtc dotproject
Apostila cdtc dotprojectApostila cdtc dotproject
Apostila cdtc dotproject
 
Plano de projeto: Bichos do Campus na Web
Plano de projeto: Bichos do Campus na WebPlano de projeto: Bichos do Campus na Web
Plano de projeto: Bichos do Campus na Web
 
Linguagem c
Linguagem cLinguagem c
Linguagem c
 
Apostilando mysql
Apostilando mysqlApostilando mysql
Apostilando mysql
 
Plano de Projeto de Software para o desenvolvimento do SIGE (Sistema de Geren...
Plano de Projeto de Software para o desenvolvimento do SIGE (Sistema de Geren...Plano de Projeto de Software para o desenvolvimento do SIGE (Sistema de Geren...
Plano de Projeto de Software para o desenvolvimento do SIGE (Sistema de Geren...
 
Programacao cpp
Programacao cppProgramacao cpp
Programacao cpp
 

Mais de Johnnatan Messias

Monografia: Framework Para Sistemas de Navegação de Veículos Aéreos Não Tripu...
Monografia: Framework Para Sistemas de Navegação de Veículos Aéreos Não Tripu...Monografia: Framework Para Sistemas de Navegação de Veículos Aéreos Não Tripu...
Monografia: Framework Para Sistemas de Navegação de Veículos Aéreos Não Tripu...Johnnatan Messias
 
Avaliação de Usabilidade, Comunicabilidade e Acessibilidade - Quadro de Avisos
Avaliação de Usabilidade, Comunicabilidade e Acessibilidade - Quadro de AvisosAvaliação de Usabilidade, Comunicabilidade e Acessibilidade - Quadro de Avisos
Avaliação de Usabilidade, Comunicabilidade e Acessibilidade - Quadro de AvisosJohnnatan Messias
 
Caminhos Mínimos: Dijkstra e Floyd-Warshall
Caminhos Mínimos: Dijkstra e Floyd-WarshallCaminhos Mínimos: Dijkstra e Floyd-Warshall
Caminhos Mínimos: Dijkstra e Floyd-WarshallJohnnatan Messias
 
Cálculo Numérico: Integração Numérica com Bubble Sort
Cálculo Numérico: Integração Numérica com Bubble SortCálculo Numérico: Integração Numérica com Bubble Sort
Cálculo Numérico: Integração Numérica com Bubble SortJohnnatan Messias
 
Cálculo Numérico: Interpolação Polinomial com Bubble Sort
Cálculo Numérico: Interpolação Polinomial com Bubble SortCálculo Numérico: Interpolação Polinomial com Bubble Sort
Cálculo Numérico: Interpolação Polinomial com Bubble SortJohnnatan Messias
 
Análise de Algoritmos de Ordenação Interna
Análise de Algoritmos de Ordenação InternaAnálise de Algoritmos de Ordenação Interna
Análise de Algoritmos de Ordenação InternaJohnnatan Messias
 

Mais de Johnnatan Messias (9)

Monografia: Framework Para Sistemas de Navegação de Veículos Aéreos Não Tripu...
Monografia: Framework Para Sistemas de Navegação de Veículos Aéreos Não Tripu...Monografia: Framework Para Sistemas de Navegação de Veículos Aéreos Não Tripu...
Monografia: Framework Para Sistemas de Navegação de Veículos Aéreos Não Tripu...
 
Quadro de Avisos - IHC
Quadro de Avisos - IHCQuadro de Avisos - IHC
Quadro de Avisos - IHC
 
Avaliação de Usabilidade, Comunicabilidade e Acessibilidade - Quadro de Avisos
Avaliação de Usabilidade, Comunicabilidade e Acessibilidade - Quadro de AvisosAvaliação de Usabilidade, Comunicabilidade e Acessibilidade - Quadro de Avisos
Avaliação de Usabilidade, Comunicabilidade e Acessibilidade - Quadro de Avisos
 
Lista Encadeada - TP2_AEDSI
Lista Encadeada - TP2_AEDSILista Encadeada - TP2_AEDSI
Lista Encadeada - TP2_AEDSI
 
Simulador Funcional
Simulador FuncionalSimulador Funcional
Simulador Funcional
 
Caminhos Mínimos: Dijkstra e Floyd-Warshall
Caminhos Mínimos: Dijkstra e Floyd-WarshallCaminhos Mínimos: Dijkstra e Floyd-Warshall
Caminhos Mínimos: Dijkstra e Floyd-Warshall
 
Cálculo Numérico: Integração Numérica com Bubble Sort
Cálculo Numérico: Integração Numérica com Bubble SortCálculo Numérico: Integração Numérica com Bubble Sort
Cálculo Numérico: Integração Numérica com Bubble Sort
 
Cálculo Numérico: Interpolação Polinomial com Bubble Sort
Cálculo Numérico: Interpolação Polinomial com Bubble SortCálculo Numérico: Interpolação Polinomial com Bubble Sort
Cálculo Numérico: Interpolação Polinomial com Bubble Sort
 
Análise de Algoritmos de Ordenação Interna
Análise de Algoritmos de Ordenação InternaAnálise de Algoritmos de Ordenação Interna
Análise de Algoritmos de Ordenação Interna
 

Último

PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...azulassessoria9
 
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdf
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdfPROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdf
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdfMarianaMoraesMathias
 
Noções de Farmacologia - Flávia Soares.pdf
Noções de Farmacologia - Flávia Soares.pdfNoções de Farmacologia - Flávia Soares.pdf
Noções de Farmacologia - Flávia Soares.pdflucassilva721057
 
Mapa mental - Classificação dos seres vivos .docx
Mapa mental - Classificação dos seres vivos .docxMapa mental - Classificação dos seres vivos .docx
Mapa mental - Classificação dos seres vivos .docxBeatrizLittig1
 
Manual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envioManual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envioManuais Formação
 
Revista-Palavra-Viva-Profetas-Menores (1).pdf
Revista-Palavra-Viva-Profetas-Menores (1).pdfRevista-Palavra-Viva-Profetas-Menores (1).pdf
Revista-Palavra-Viva-Profetas-Menores (1).pdfMárcio Azevedo
 
Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?AnabelaGuerreiro7
 
GEOGRAFIA - ENSINO FUNDAMENTAL ANOS FINAIS.pdf
GEOGRAFIA - ENSINO FUNDAMENTAL ANOS FINAIS.pdfGEOGRAFIA - ENSINO FUNDAMENTAL ANOS FINAIS.pdf
GEOGRAFIA - ENSINO FUNDAMENTAL ANOS FINAIS.pdfElianeElika
 
Música Meu Abrigo - Texto e atividade
Música   Meu   Abrigo  -   Texto e atividadeMúsica   Meu   Abrigo  -   Texto e atividade
Música Meu Abrigo - Texto e atividadeMary Alvarenga
 
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteCOMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteVanessaCavalcante37
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...azulassessoria9
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...azulassessoria9
 
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...IsabelPereira2010
 
Aula de História Ensino Médio Mesopotâmia.pdf
Aula de História Ensino Médio Mesopotâmia.pdfAula de História Ensino Médio Mesopotâmia.pdf
Aula de História Ensino Médio Mesopotâmia.pdfFernandaMota99
 
Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Ilda Bicacro
 
Literatura Brasileira - escolas literárias.ppt
Literatura Brasileira - escolas literárias.pptLiteratura Brasileira - escolas literárias.ppt
Literatura Brasileira - escolas literárias.pptMaiteFerreira4
 
Discurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptxDiscurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptxferreirapriscilla84
 
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃOFASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃOAulasgravadas3
 
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....LuizHenriquedeAlmeid6
 

Último (20)

PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
 
CINEMATICA DE LOS MATERIALES Y PARTICULA
CINEMATICA DE LOS MATERIALES Y PARTICULACINEMATICA DE LOS MATERIALES Y PARTICULA
CINEMATICA DE LOS MATERIALES Y PARTICULA
 
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdf
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdfPROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdf
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdf
 
Noções de Farmacologia - Flávia Soares.pdf
Noções de Farmacologia - Flávia Soares.pdfNoções de Farmacologia - Flávia Soares.pdf
Noções de Farmacologia - Flávia Soares.pdf
 
Mapa mental - Classificação dos seres vivos .docx
Mapa mental - Classificação dos seres vivos .docxMapa mental - Classificação dos seres vivos .docx
Mapa mental - Classificação dos seres vivos .docx
 
Manual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envioManual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envio
 
Revista-Palavra-Viva-Profetas-Menores (1).pdf
Revista-Palavra-Viva-Profetas-Menores (1).pdfRevista-Palavra-Viva-Profetas-Menores (1).pdf
Revista-Palavra-Viva-Profetas-Menores (1).pdf
 
Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?
 
GEOGRAFIA - ENSINO FUNDAMENTAL ANOS FINAIS.pdf
GEOGRAFIA - ENSINO FUNDAMENTAL ANOS FINAIS.pdfGEOGRAFIA - ENSINO FUNDAMENTAL ANOS FINAIS.pdf
GEOGRAFIA - ENSINO FUNDAMENTAL ANOS FINAIS.pdf
 
Música Meu Abrigo - Texto e atividade
Música   Meu   Abrigo  -   Texto e atividadeMúsica   Meu   Abrigo  -   Texto e atividade
Música Meu Abrigo - Texto e atividade
 
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteCOMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
 
Aula de História Ensino Médio Mesopotâmia.pdf
Aula de História Ensino Médio Mesopotâmia.pdfAula de História Ensino Médio Mesopotâmia.pdf
Aula de História Ensino Médio Mesopotâmia.pdf
 
Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"
 
Literatura Brasileira - escolas literárias.ppt
Literatura Brasileira - escolas literárias.pptLiteratura Brasileira - escolas literárias.ppt
Literatura Brasileira - escolas literárias.ppt
 
Discurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptxDiscurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptx
 
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃOFASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
 
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
 

Twitter and Youtube Collector

  • 1. Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Biológicas Departamento de Computação BCC428 - 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. Sumário 0.1 Considerações iniciais . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 0.2 Especicação do problema . . . . . . . . . . . . . . . . . . . . . . . . 1 1 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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2 Limitações 7 3 Testes 8 4 Referências 9 Lista 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 . . . . . . . . . . . . . . . . . . . . . . 9 Listings 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. 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 socias online 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. 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. 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 = None 6 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. 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 = 1 4 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 return 16 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 + 1 20 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 = −1 3 count = 1 n = 5000 5 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. 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 return 17 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 + 1 21 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 0 7 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 Youtube 1 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. 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. 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 Principal 2 Limitações Nesse Trabalho Prático tivemos como diculdade em utilizar caracteres unicode no Windows, sendo assim, sugiro a execução do programa no Sistema Operacional Linux ou Mac uma vez que não tivemos problemas em executar nessas plataformas. 7
  • 10. 3 Testes Abaixo estão representados os testes de funcionamento das funções getUserProle (Figura 1), getTimeLinePublic (Figura 2), getFollowersAndFriendsCount (Figura 3) e mostPopularYoutube (Figura 4). Figura 1: Função getU serP rof ile Figura 2: Função getT imeLineP ublic 8
  • 11. Figura 3: Função getF ollowersAndF riendsCount Figura 4: Função mostP opularY outube 4 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