2012-09-17 4 views
0

나는 고객의 페이스 북 사진으로 작업하는 회사의 가상 해시 태그 시스템을 구현하고 있습니다. 고객은 페이지에 사진을 업로드 할 수 있으며 페이지 관리자는 제품의 해시 태그로 태그를 추가 할 수 있습니다.Facebook API : 문자열이 포함 된 주석이있는 사진 가져 오기

내가하려는 것은 댓글에서 특정 태그가있는 페이지의 모든 사진을 얻는 것입니다 (예 : '#bluepants'만 포함 된 설명이있는 회사 페이지의 모든 사진 가져 오기).

페이 스북 API가 과도한 작업 (우리는 결과를 캐시 할 것입니다)을 처리하려고하므로 FQL 또는 그래프 API를 사용하고 싶습니다. 그러나 제대로 작동하지 않는 것 같습니다. 내 SQL은 오랫동안 ORM에 의존 한 후 꽤 녹슬었다.) 가능한 한 많은 결과를 출력하는 것이 좋지만 FB로 한 번에 25 개를 수행 할 수 있는지 확실하지 않습니다.

사람이 나에게 몇 가지 지침을 줄 수 (나는 그것을 사용하여 조회 할 수 있다면 현재 코알라 보석으로 주위를 연주하고, 그래서 보너스 포인트)

이것은시나 사이트에서 구현 될 것입니다?

감사합니다.

답변

2

FQL/PHP에서 작동하는 것과 같은 기능이 있습니다. 여기 내 멀티 쿼리가 있습니다.

{'activity': 
    "SELECT post_id, created_time FROM stream WHERE source_id = PAGE_ID AND 
     attachment.fb_object_type = 'photo' AND created_time > 1338834720 
     AND comments.count > 0 LIMIT 0, 500", 
    'commented': 
    "SELECT post_id, text, fromid FROM comment WHERE post_id IN 
     (SELECT post_id FROM #activity) AND AND (strpos(upper(text), '#HASHTAG') >= 0", 
    'accepted': 
    "SELECT post_id, actor_id, message, attachment, place, created_time, likes 
     FROM stream WHERE post_id IN (SELECT post_id FROM #commented) 
     ORDER BY likes.count DESC", 
    'images': 
    "SELECT pid, src, src_big, src_small, src_width, src_height FROM photo 
     WHERE pid IN (SELECT attachment.media.photo.pid FROM #accepted)", 
    'users': 
     "SELECT name, uid, current_location, locale FROM user WHERE uid IN 
     (SELECT actor_id FROM #accepted)", 
    'pages': 
    "SELECT name, page_id FROM page WHERE page_id IN (SELECT actor_id FROM #accepted)", 
    'places': 
     "SELECT name, page_id, description, display_subtext, latitude, longitude 
     FROM place WHERE page_id IN (SELECT place FROM #accepted)" 
} 

이를 분해하려면

  • #activity 사진입니다 0이 아닌 코멘트 수있는 캠페인의 시작 날짜 이후에 생성 된 모든 스트림 객체를 가져옵니다. 500 개의 LIMIT을 사용하면 최대 개수의 게시물을 반환하는 것으로 보입니다. 값이 높거나 낮 으면 더 적게 반환됩니다.
  • #commented은 자신의 의견 중 하나의 텍스트에 #HASHTAG의 게시물을 찾습니다. 참고, 나는 FQL에서 예약 된 문자 인 #을 찾고 있지 않습니다. 사용하면 문제가 발생할 수 있습니다.
  • #accepted은 #commented에있는 게시물의 전체 세부 정보를 가져옵니다.
  • #images 해당 게시물에있는 이미지의 모든 세부 정보를 가져옵니다. 나는 이것을 다시 리 팩터로 사용하여 pid 대신 object_id을 사용하고 새로운 real_width 스펙을 사용하여 레이아웃을 더 쉽게 만들도록 시도합니다.
  • #users#pages은 항목을 처음 게시 한 배우의 세부 정보를 가져옵니다. 나는 이제 하나의 쿼리에서 이것을 얻기 위해 profile 테이블을 사용할 수 있다는 것을 알고있다.
  • #places은 지리 태그가 지정된 게시물의 위치 정보를 가져옵니다.

현재 작업에서 볼 수 있습니다 http://getwellgabby.org/show-us-a-sign

+0

감사합니다! 하지만 어떤 이유로 활동은 댓글에 대한 id와 created_time 만 반환합니다 (댓글의 수가 매우 많은 첫 번째 사진 만 - 해시 태그가없는 사진 만). 주석에 해시 태그가 없기 때문에 다른 쿼리는 아무 것도 반환하지 않습니다. –

+0

내가 원하지 않는 대문자 함수가 있다는 것을 놓친 것 때문에 흠집이났습니다. 이 방법은 거의 완벽하게 작동하지만 한 주석과 이후에 단 하나의 사진 만 반환합니다. 이게 의도 된 것이거나 뭔가 잘못하고있는 것입니까? –

+0

스트림 테이블이 일관되게 일치하지 않습니다. 스트림에 대해 말할 수는 없지만이 쿼리를 약간 수정 한 버전을 사용하면 보통 10-50 장의 사진을 반환 할 수 있습니다.어쨌든 고마워, – cpilko

관련 문제