2017-02-11 121 views
0

此問題不是重複的。我的問題沒有顯示錯誤的數據部分,因爲它在標記的文章中,但作爲一個細心的用戶反映,「您的問題中的具體問題是,您使用的URL只檢索實際的視頻,而不是包含視頻。」無法從YouTube視頻對象獲取視頻標題

我需要得到一個YouTube視頻的標題爲Magento的網上商店。我的代碼是正確的,現在以下幾點:

$videocode = $_helper->productAttribute($_product, $_data['value'], $_data['code']); 
$url = "http://www.youtube.com/v/".$videocode."?hl=en_US&version=3"; 
echo $url; 
$videoTitle = file_get_contents($url); 
try { 
    if ($videoTitle) { 
     preg_match("/<title>(.+?)<\/title>/is", $videoTitle, $titleOfVideo); 
     echo $titleOfVideo[1]; 
    } else { 
     return false; 
    } 
} catch (Exception $e) { 
    echo 'Caught exception: ', $e->getMessage(), "\n"; 
} 

echo $url;返回正確的視頻網址。

但事後,如果我嘗試的var_dump的$ videoTitle,它返回像CWS[%xڍZ[{�Fzƀ�@�:Ҷ��v"�uh �H�(E�9����ή� $1=�馧m�=nϽko�z������$��M��_l�oR�lﳶ�����~�� �C)��4��4ʤ[SI�nM�"�.��b�yB��ᵵ��5�u�8�\�,我指的是一羣人。 但它不會返回false。

爲$ titleOfVideo返回array(0) { }。 否則,如果我不嘗試回顯或var_dump任何東西,它不會爲我回饋任何東西。 我在這裏錯過了什麼?


被引導,使經過一番研究,我的代碼看起來如下:

$videocode = $_helper->productAttribute($_product, $_data['value'], $_data['code']); 
$videocode = explode('&feature=youtu.be', $videocode); 
$url = "https://www.googleapis.com/youtube/v3/videos?part=snippet&id‌​=".$videocode[0]."&key=".$apikey; 
echo $url; 
$json = file_get_contents($url); 
var_dump($json); //bool(false) 
$json_data = json_decode($json, true); 
if ($json_data) { 
    print_r($json_data); 
} else { 
    return false; 
} 

的視頻ID是正確的。但我的$json返回false。我還想念什麼?

+0

可能的[使用YouTube API檢索並顯示YouTube視頻說明,標題使用id](http://stackoverflow.com/questions/34022332/retrieve-and-display-youtube-video-description-title-by -its-id-using-youtube-ap) – NineBerry

+1

使用官方API而不是試圖從實況網站讀取元數據。你的問題中的具體問題是你使用的URL只能檢索實際的視頻,而不是包含視頻的頁面。 – NineBerry

+0

@NineBerry在YouTube API工作之後看了一下後,我斷定,如果'$ videocode'是我關於視頻的唯一細節,那麼執行所需操作是不夠的。我對嗎? – sklrboy

回答

1

使用谷歌API來訪問YouTube視頻元數據。

首先,您必須向Google註冊以接收API密鑰。按照these instructions這樣做。

然後你就可以構建一個URL來檢索標題是這樣的:

https://www.googleapis.com/youtube/v3/videos?part=snippet&id=dRvS-tLCi5Y&key=YourAPIKey 

使用您的API密鑰到位。

這將返回以下JSON:

{ 
"kind": "youtube#videoListResponse", 
"etag": "\"uQc-MPTsstrHkQcRXL3IWLmeNsM/nmxGC9Qyfl2o0ayvTd9DwRpHySo\"", 
"pageInfo": { 
    "totalResults": 1, 
    "resultsPerPage": 1 
}, 
"items": [ 
    { 
    "kind": "youtube#video", 
    "etag": "\"uQc-MPTsstrHkQcRXL3IWLmeNsM/WzAkhb8NRCtBYcATr8BHzcJJ8sE\"", 
    "id": "dRvS-tLCi5Y", 
    "snippet": { 
    "publishedAt": "2015-11-17T20:49:02.000Z", 
    "channelId": "UCuTn1q6pg2kKRLAQIWSEO5g", 
    "title": "Womanizer - W500 Pro Klitoris Stimulator NYHED", 
    "description": "Womanizers unikke teknologi stimulerer din klitoris på en helt unik måde. Teknologien blander en sugende og pustende fornemmelse på klitoris og evt brystvorter, der sørger for \"orgasme garanti\". Stimulatoren har 8 unikke indstilinger, der giver dig en fantastisk oplevelse. Stimulatoren er formet, så den ligger godt i hånden. Mundstykket kan udskiftes og rengøres. Genopladelig med medfølgende USB kabel.\n\nGod fornøjelse :)\n\nKøb i dag hos: http://www.winkwink.dk/womanizer-w500-pro-klitoris-stimulator-nyhed.html", 
    "thumbnails": { 
    "default": { 
     "url": "https://i.ytimg.com/vi/dRvS-tLCi5Y/default.jpg", 
     "width": 120, 
     "height": 90 
    }, 
    "medium": { 
     "url": "https://i.ytimg.com/vi/dRvS-tLCi5Y/mqdefault.jpg", 
     "width": 320, 
     "height": 180 
    }, 
    "high": { 
     "url": "https://i.ytimg.com/vi/dRvS-tLCi5Y/hqdefault.jpg", 
     "width": 480, 
     "height": 360 
    }, 
    "standard": { 
     "url": "https://i.ytimg.com/vi/dRvS-tLCi5Y/sddefault.jpg", 
     "width": 640, 
     "height": 480 
    }, 
    "maxres": { 
     "url": "https://i.ytimg.com/vi/dRvS-tLCi5Y/maxresdefault.jpg", 
     "width": 1280, 
     "height": 720 
    } 
    }, 
    "channelTitle": "Winkwink.dk", 
    "tags": [ 
    "#sexlegetøj", 
    "#winkwinkdk", 
    "#sex", 
    "#winkwink", 
    "#womanizer", 
    "#julegave", 
    "#lovewinkwinkdk", 
    "#stimulator", 
    "#klitoris", 
    "Clitoris (Anatomical Structure)" 
    ], 
    "categoryId": "22", 
    "liveBroadcastContent": "none", 
    "localized": { 
    "title": "Womanizer - W500 Pro Klitoris Stimulator NYHED", 
    "description": "Womanizers unikke teknologi stimulerer din klitoris på en helt unik måde. Teknologien blander en sugende og pustende fornemmelse på klitoris og evt brystvorter, der sørger for \"orgasme garanti\". Stimulatoren har 8 unikke indstilinger, der giver dig en fantastisk oplevelse. Stimulatoren er formet, så den ligger godt i hånden. Mundstykket kan udskiftes og rengøres. Genopladelig med medfølgende USB kabel.\n\nGod fornøjelse :)\n\nKøb i dag hos: http://www.winkwink.dk/womanizer-w500-pro-klitoris-stimulator-nyhed.html" 
    }, 
    "defaultAudioLanguage": "da" 
    } 
    } 
] 
} 

然後,您可以閱讀題是這樣的:

$json_data = json_decode($JSON, true); 
$title = $json_data['items'][0]['snippet']['title']; 

注意,使用YouTube API是首選,因爲任何企圖利用看視頻元數據的實時網站將導致YouTube識別這些請求並阻止呼叫(顯示驗證碼而不是提供真實的視頻代碼)

+0

這很有趣。它正確地打印了url,但是在複製兩個url進行比較之後,從腳本返回的mine在'&id'之後和之前有一個額外的'%E2%80%8C%E2%80%8B'實際ID ... – sklrboy

+0

正如我所說,那是因爲你從這裏的評論中複製它。在堆棧溢出 – NineBerry

+0

的註釋中存在換行符時,插入特殊字符。它不是來自頁面本身,由'echo $ url;'返回。也許'$ videocode [0]'不是這裏的最佳解決方案... – sklrboy