跳到主要內容

發表文章

目前顯示的是有「facebook.」標籤的文章

線上影音模組->FB自動重建縮圖程式-工作心得撰寫:徐嘉裕Neil hsu

2019年9月開發的線上影音模組,其中有一項功能是用爬蟲去爬FB影片擷取縮圖後儲存資料表的功能  https://neohsuxoops.blogspot.com/2019/09/ajaxphpjsfacebook.html 但最近發現許多原本擷取的FB縮圖都無法讀取了,圖片位置顯示URL signature expired,原來FB影片縮圖也是有時效性的,一段時間fb就會重建縮圖檔,檔名跟時間搓都會變動,難怪一開始擷取的FB縮圖都會變成無法顯示! 解決方法就是寫一個FB自動重建縮圖程式,放在影片區塊程式的前面,然後迴圈檢查FB縮圖如果回傳是URL signature expired則重建縮圖,否則不做操作,這樣並不會消耗系統太多效能,方法如下: 1、先在模組的function.php裡面加上這三個function //重建縮圖程式 function fbtmburlfunction(,$url="",$tmburl="",$where="",$dbname=""){ $ch = curl_init(); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_URL, "".$tmburl.""); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_HTTPHEADER, array ('X-Forwarded-For: '.mt_rand(0, 255).'.'.mt_rand(0, 255).'.'.mt_rand(0, 255).'.'.mt_rand(0, 255),)); curl_setopt($ch, CURLOPT_USERAGENT, "Google Bot"); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT...

使用AJAX+PHP+JS取得facebook影片縮圖的方法(非常麻煩)-教學撰寫:徐嘉裕Neil hsu

最近在開發影片模組需要能夠崁入facebook影片,這部分技術上倒不是很困難,但遇到一個非常棘手的問題,就是facebook影片沒有提供縮圖網址服務,不像youtube那麼善心有專門的影片縮圖網址輸入帶入影片ID就能取用,如果首頁同時也多個FB影片要展示然後直接用影片播放器那網站就會整個死當在那裡,需要大量讀取頻寬會被消耗殆盡,所以必須去取得facebook影片縮圖才行。 首先facebook影片並不是沒有縮圖,如果吧影片崁入播放還沒play之前預設其實就是代表圖,像是下圖紅框的就是代表圖。 但縮圖是包在整個html5播放器裡面的(在iframe的src裡面),沒有參數可以拿,網址也是獨立的,要拿縮圖真的非常的困難,但天下沒有解決不了的事情,花了些時間還是找到取得縮圖的方法。 試過無效的方法 1、如果想用js直接解析iframe的src提取圖檔連結是不可能的,因為js不允許跨域取得子框架參數。 2、如果用php的file_get_contents開啟iframe中頁面也是不可能的,FB禁止檔案被外部讀取。 唯一能用的只有curl_init讀取FB檔案,而且還必須偽裝成是Google Bot爬蟲才行! 整個取得facebook影片縮圖的方法如下,因為非常的麻煩,如果沒耐心的建議可以跳過了。 1、HTML結構 需要有一個文字框可以輸入FB影片網址 <form  id='preventDefault'  class="form-horizontal" role="form" action='<{$xoops_url}>/modules/模組ID/videocenter.php' method='post' > <input type='text' id='url' class=' form-control' name='url'  value='' placeholder='輸入影片連結'> <input type='hidden' name='tmburl'...