这个问题不重复。我的问题不是显示错误的数据部分,因为它在标记的文章中,但作为一个细心的用户反映,“你的问题中的具体问题是你使用的URL只检索实际的视频,而不是包含视频“。
我需要获得Magento网上商店的YouTube视频标题。我的代码现在如下:
$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�\�
的东西,我的意思是一堆它们。
但它不会返回错误。
对于$ 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 :(得分:1)
使用Google 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识别这些请求并阻止调用(显示Captcha而不是提供真实的视频代码)