2017-09-04 122 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; 
}