5

Tôi cần tải ảnh của người dùng FB được sắp xếp theo lượt thích. Tôi đã chạy truy vấn FQL này thông qua Facebook JavaScript SDK để nhận chúng:Truy vấn FQL ảnh cho người dùng Facebook với số lượng lớn ảnh

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 

Truy vấn không thành công cho người dùng có hơn 3000 ảnh. Hóa ra có rất nhiều người dùng đó. Liên quan đến lỗi Facebook là đây http://developers.facebook.com/bugs/438568326189781

Là một lưu ý: loại bỏ "ORDER BY like_info" làm cho việc truy vấn, nhưng không có cách nào dễ dàng cho tôi để có được những hình ảnh, sắp xếp theo thích

Để tái sản xuất:
Pick một người bạn FB có ít nhất 3000 ảnh, lấy Id người dùng của họ và chạy truy vấn trên (thay MANY_PICS_USER_ID) trong API GRAPH EXPLORER.

Giải pháp tốt nhất là gì? Hoặc, bạn có thể đề xuất giải pháp Open Graph có trọng lượng nhẹ dễ nhất không?

+2

Điều gì sẽ xảy ra nếu bạn sử dụng các lệnh gọi api biểu đồ bằng cách sử dụng nhiều truy vấn? Đây là một ví dụ cơ bản hơn sau đó tất cả các lĩnh vực bạn sử dụng nhưng có thể được thay đổi UserID? Fields = photos.fields (thích) .limit (10) – TommyBs

+0

Tôi sẽ lấy kết quả thông qua Graph API như TommyBs đề xuất sau đó viết một chức năng mà các loại số lượt thích trên mỗi ảnh. –

+0

Điểm tốt @AnnaVital và có thể nhận được 3000 bức ảnh sẽ yêu cầu phần lớn lưu lượng truy cập và bộ nhớ để sắp xếp chúng. –

Trả lời

2

Để sắp xếp các bức ảnh bởi thích bạn không cần những điều sau đây:

Trả lại cấu trúc dữ liệu sau:

"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" 
} 
  • Nếu tổng số hình ảnh là hơn 100, chạy tất cả các truy vấn tiếp theo, từ liên kết "bên cạnh" cho đến khi num của bức ảnh sẽ ít hơn 100.

  • Đối với mỗi bức ảnh của bạn cần đếm tổng số lượt thích. Nếu số lượt thích là hơn 25, hãy chạy truy vấn bổ sung từ lượt thích.paging.next cho đến khi số lượt thích sẽ là < 25 và nhận tổng số .

  • Sắp xếp tất cả các ảnh đó theo số lượt thích.

Vì vậy, đối với người dùng có 3000 bức ảnh, tổng số 30 cuộc gọi + cuộc gọi thêm cho mỗi ảnh có hơn 25 lượt thích.

Các vấn đề liên quan