Фильтрация ленты новостей по определенному типу с использованием FQL - PullRequest
2 голосов
/ 19 сентября 2011

Я пытаюсь отправить запрос на определенный тип статуса, отправленный на ленту новостей пользователя, где type = video. Я хочу, чтобы все видео были опубликованы для пользователя, включая те, которые не размещены на FB (иначе я бы отправил запрос на видео) Мне бы хотелось, чтобы я мог заставить FB не возвращать ничего, кроме видео, но я, конечно, не вижу решения для этого. Я не вижу, чтобы в возвращенном запросе даже было поле, которое будет содержать эту информацию, чтобы я мог отфильтровать возвращенную информацию. Есть ли в таблице потоков какое-либо поле, которое сообщит мне тип сообщения?

Вот моя начальная отправная точка для запроса:

SELECT post_id, from, name, source, link, picture, updated_time, comments 
FROM stream WHERE filter_key in (SELECT filter_key FROM stream_filter WHERE uid=me() 
AND type='newsfeed') AND is_hidden = 0

1 Ответ

1 голос
/ 29 февраля 2012

Вы можете установить тип для потока (см. ref ), но видео ( type = 128 ) будет возвращать только загруженные видео.

SELECT post_id, source_id, actor_id, target_id, message, attachment, permalink, type 
FROM stream 
WHERE source_id IN (SELECT target_id
    FROM connection
    WHERE source_id = me() AND is_following = 1) 
AND is_hidden = 0 
AND type = 128

Это противоречит использованию графика api (например, js sdk: FB.api('/me/home', function(response) {} )), где type: 'video' присваивается прикрепленным ссылкам на видео (например, YouTube)

Однако поле attachment.media [0] определяет ссылки на видео как type: video; но это массив (и я не знал, как запросить в них), поэтому я проверил, содержала ли ссылка ссылку на YouTube (ссылки YouTube могут быть длинными или сокращенными, youtu.be )

SELECT post_id, source_id, actor_id, target_id, message, attachment, permalink, type 
FROM stream 
WHERE source_id IN (SELECT target_id
    FROM connection
    WHERE source_id=me() AND is_following=1) 
AND is_hidden = 0 
AND type = 80 
AND strpos(attachment.href, "youtu") >= 0
...