
Pegando as fotos de todos os usuários do Facebook!
Galera!
Esses dias estava dando uma lida nas APIs do Facebook e resolvi brincar de criar um script para baixar as fotos dos usuários do Facebook… TODOS eles…
Maaaas… infelizmente não dá muito certo.
O código que salva as fotos dos usuários do Facebook 1 por 1, levaria cerca de 2,74 milênios para baixar todas as fotos de todos os usuários antes de chegar à minha foto (com o ID 100.001.287.580.019). E eu precisaria de 179,2 petabytes de espaço em disco!
Tá… tá… estou brincando.
Não levaria isso tudo, nem todo esse espaço de armazenamento pelo fato de que meu ID é 100.001.287.580.019 mas o Facebook não tem tudo isso de usuários. Fazendo a conta certa agora: digamos que somos 1,1 bilhão de usuários.
1.100.000.000 de usuários
E pegamos 50 fotos a cada 30 segundos. Teremos pouco mais de 1000 anos de código rodando para conseguir.
Mas se formos 1000 computadores levaríamos 1 ano. Se formos 365.000 computadores levaríamos 1 dia!
Não vou colocar o código que eu fiz pois acabei apagando (sim… sou burro), mas se você tiver o básico de conhecimento em PHP vai conseguir reproduzi-lo a partir do código abaixo:
// PRECISAMOS DE UM USUÁRIO INICIAL $userID = 7620; while ($userID <= 9999) { // URL PARA OS DADOS DA IMAGEM DO USUÁRIO $userURL = 'http://graph.facebook.com/10000043716'.$userID.'/picture?redirect=false'; $userJSON = file_get_contents($userURL); $jsonObj = json_decode($userJSON); $userdata = $jsonObj->data; // SE NÃO FOR "SILHOUETTE", OU SEJA, SE TIVER IMAGEM if (!$userdata->is_silhouette) { $name = $jsonObj->name; $id = $jsonObj->id; $username = $jsonObj->username; echo '<a href="http://fb.com/'.$id.'" target="_blank"><img title="'.$name.'" alt="" src="'.$userdata->url.'" /></a>'; } $userID ++; }
Esse código está na seguinte página: http://projetos.jangal.com.br/face/
(Só mudei um pouco para evitar consumir demais do servidor, ok?)
Atualização:
Esse código aparentemente parou de funcionar como antes. A culpa é das atualizações da API do Facebook…