我正在尝试为发送给用户新闻源的特定类型的状态提交查询,其中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
答案 0 :(得分:1)
您可以为流设置类型(请参阅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