使用api或id获取Facebook视频缩略图

时间:2017-09-04 18:34:17

标签: facebook facebook-graph-api

我尝试做的是让用户复制Facebook提供的嵌入或网址以获取特定视频。

当用户粘贴网址或嵌入代码时,我会运行一些正则表达式以获取缩略图和标题,然后将这些属性保存到我的数据库中。

然后当保存帖子后页面刷新时,会出现一个自定义播放器,实际的Facebook视频播放器不会出现,直到有人点击播放。

我这样做是为了让我的网页快速加载,并且不会被实际播放器的js放慢速度,直到用户实际点击播放为止。

我已经知道如何做到这一切,除了,我不知道如何抓取Facebook视频播放器的缩略图。

与大多数网站不同,Facebook并没有在og:image元标记中提供缩略图。

那么如何抓取缩略图网址以保存到我的数据库?

1 个答案:

答案 0 :(得分:0)

我创建了一个PHP函数来回答你的问题,而你不必阅读有关facebook图的无聊文档。您只需要插入视频链接,Facebook和YouTube,但您可以修改以添加其他来源。 我创建了一个PHP函数来回答你的问题,而你不必阅读有关facebook图的无聊文档。 您只需要插入视频链接,Facebook和YouTube,但您可以修改以添加其他来源。 只需复制地址栏中的youtube视频链接,对于Facebook,右键点击视频,然后点击显示视频网址,然后复制即可。

    //get video thumbnail for facebook and youtube
function get_vid_thumbnail($link){
    $thumbnail='';
//check if video link is facebook
    if (strpos($link, 'facebook') !== false) {
        $thumbnail=fb_thumb($link);
        //$thumbnail='fb';
    }
//check if video link is youtube
    if (strpos($link, 'youtube.com') !== false) {
        $thumbnail=youtube_thumb($link);
        //$thumbnail='youtube';
    }
    return $thumbnail;
}


//supporting functions
//get youtube thumbnail
function youtube_thumb($link){
    $new=str_replace('https://www.youtube.com/watch?v=','', $link);
    $vv='https://img.youtube.com/vi/'.$new.'/0.jpg';
    return $vv;
}

//clean the facebook link
function fb_video_id($url) {
    //split the url
    $main=parse_url($url);
    //get the pathe and split to get the video id
    $main=$main['path'];
    $main=explode('/',$main);
    $main=$main[3];
    return $main;
}
//get the thumbnail
function fb_thumb($link) {
    $img = 'https://graph.facebook.com/'.fb_video_id($link).'/picture';
    return $img;
}

//get video thumbnail for fb and youtube ends

//get embed url for facebook and youtube to be used as video source
function get_vid_embed_url($link){
    $embed_url='sss';
//check if video link is facebook
    if (strpos($link, 'facebook') !== false) {
        # code...
        $embed_url=fb_embed_link($link);
        //$thumbnail='fb';
    }
//check if video link is youtube
    if (strpos($link, 'youtube.com') !== false) {
        # code...
        $embed_url=youtube_embed_link($link);
        //$thumbnail='youtube';
    }
    return $embed_url;
}
//get youtube embed link
function youtube_embed_link($link){
    $new=str_replace('https://www.youtube.com/watch?v=','', $link);
    $link='https://www.youtube.com/embed/'.$new;
    return $link;
}
//get facebook embed link
function fb_embed_link($link) {
    $link = 'https://www.facebook.com/plugins/video.php?href='.$link.'&show_text=0&width=560';
    return $link;
}