2017-02-11 2 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; возвращает правильный 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 правильно. Но мой $jsonfalse. Что мне еще не хватает?

+0

Возможный дубликат [Извлечение и отображение описания видео YouTube, название по его идентификатору с помощью API YouTube) (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, немного посмотрев после того, как работает API YouTube, я пришел к выводу, что если «видеокод» $ - единственная деталь, которую я имею в отношении видео, то этого недостаточно для выполнения желаемого действия. Я прав? – sklrboy

ответ

1

Используйте API Google для доступа к метаданным видео 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']; 

Обратите внимание, что с помощью API Youtube является предпочтительным, поскольку любая попытка использовать интерактивный сайт для чтения метаданных видео приведет к тому, что youtube определит эти запросы и заблокирует вызовы (показывая Captcha вместо доставки реального видеокода)

+0

Это интересно. Он правильно печатает URL-адрес, но после копирования двух URL-адресов для сравнения, мой, который возвращается из скрипта, имеет дополнительный '% E2% 80% 8C% E2% 80% 8B' перед символом' & id' и до фактический идентификатор ... – sklrboy

+0

Как я уже сказал, это потому, что вы скопировали его из комментария здесь. Специальные символы вставляются там, где есть разрыв строки в комментарии о переполнении стека – NineBerry

+0

Нет, это из самой страницы, возвращенной 'echo $ url;'. Возможно, '$ videoocode [0]' не лучшее решение здесь ... – sklrboy

Смежные вопросы