2017-09-04 52 views
0

我想要做的是让用户复制Facebook提供的特定视频的嵌入或网址。使用api或id抓取Facebook视频缩略图

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

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

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

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

与大多数网站不同,Facebook不提供og中的缩略图:image meta标签。

所以我如何抓住缩略图网址来保存到我的数据库?

回答

0

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

//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; 
}