5

Potrzebuję uzyskać zdjęcia użytkownika FB posortowane według upodobań. Pobiegłem tej kwerendy FQL via Facebook JavaScript SDK je zdobyć:Zapytanie FQL o zdjęcia dla użytkowników Facebooka z dużą liczbą zdjęć

SELECT object_id, src_big, src_big_width, src_big_height, link, like_info, caption, created 
FROM photo 
WHERE owner = MANY_PICS_USER_ID ORDER BY like_info DESC LIMIT 10 

Kwerenda nie dla użytkowników z ponad 3000 zdjęć. Okazuje się, że jest wielu takich użytkowników. Związanych Facebook błąd jest tutaj http://developers.facebook.com/bugs/438568326189781

Jako Uwaga: Usunięcie „ORDER BY like_info” sprawia, że ​​praca zapytania, ale nie jest łatwe dla mnie sposób, aby te zdjęcia, posortowane według upodobań

Aby odtworzyć:
Picka przyjaciel FB z co najmniej 3000 zdjęciami, uzyskał identyfikator użytkownika i uruchom powyższe zapytanie (zastępując MANY_PICS_USER_ID) w API GRAPH EXPLORER.

Jakie jest najlepsze obejście tego problemu? Czy możesz zaproponować najprostsze lekkie rozwiązanie Open Graph?

+2

Co się stanie, jeśli korzystasz z połączeń w trybie graficznym za pomocą wielu zapytań? To jest bardziej prosty przykład niż wszystkie pola, których używasz, ale które można zmienić ID użytkownika? Fields = photos.fields (lubi) .limit (10) – TommyBs

+0

Chciałbym pobrać wyniki za pomocą interfejsu Graph API, jak sugerował TommyBs, a następnie napisać funkcję, która sortuje podobieństwa na zdjęcie. –

+0

Dobra racja @AnnaVital, a prawdopodobnie uzyskanie 3000+ zdjęć będzie wymagało dużej części ruchu i pamięci do sortowania. –

Odpowiedz

2

Aby posortować zdjęcia według upodobań potrzebne są następujące elementy:

Które zwracają następującą strukturę danych:

"data": [ 
{ 
    "id": "1234567890", 
    "source": "http://photo.url.in.facebook.cdn.com/", 
    "created_time": "2012-09-13T22:52:34+0000", 
    "likes": { 
    "data": [ 
     { 
     "id": "1234567890", 
     "name": "Full Name" 
     }, 
     ..... 
    "paging": { 
     "next": "https://graph.facebook.com/1234567890/likes?limit=25&offset=25" 
    } 
    } 
}, 
{ 
    "id": "312323232323", 
    "source": "PICTURE_URL", 
    "created_time": "2012-09-12T20:54:27+0000", 
    "likes": { 
    "data": [..] 
    } 
}, 
.... 
"paging": { 
    "previous": "http://PREVIOUS_URL?fields=id,source,name,height,width,link,likes&limit=100&since=123456", 
    "next": "http://NEXT_URL?fields=id,source,name,height,width,link,likes&limit=100&until=234567" 
} 
  • Jeżeli łączna liczba zdjęć jest więcej niż 100, uruchomić wszystkie kolejne pytania, z linku „next” aż num fotek będzie mniej niż 100.

  • Za każde zdjęcie, które trzeba policzyć całkowitą liczbę polubień. Jeśli liczba polubień wynosi jest większa niż 25, uruchom dodatkowe zapytanie od likes.paging.next, aż liczba polubień będzie wynosiła < 25 i uzyskaj całkowitą liczbę .

  • Sortuj wszystkie zdjęcia według liczby polubień.

Tak więc dla użytkownika z 3000 zdjęć będzie to w sumie 30 połączeń + dodatkowe połączenia dla każdego zdjęcia z ponad 25 polubień.