Ошибка XML-фида YouTube - PullRequest
       29

Ошибка XML-фида YouTube

3 голосов
/ 17 августа 2011

У меня есть страница на веб-сайте, которая извлекает мои любимые каналы с YouTube и встраивает их в сайт.

Проблема в том, что он работает 80% времени, но остальные 20% времени я получаю ошибки на странице - ничего в коде не меняется, чтобы вызвать это, поэтому мне интересно, что может быть причиной это, или если есть лучший способ сделать то, что я делаю ...

Ошибка, которую я получаю: 403 Запрещено при получении канала XML ... вот как это выглядит (обратите внимание: номера строк не будут точно совпадать, потому что я упростил Пример кода ниже.

Рассматриваемый XML-канал находится здесь: https://gdata.youtube.com/feeds/api/users/umarchives/favorites

Warning: simplexml_load_file(https://gdata.youtube.com/feeds/api/users/umarchives/favorites) [function.simplexml-load-file]: failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden in /mnt/stor3-wc2-dfw1/web/content/videos.php on line 42

Warning: simplexml_load_file() [function.simplexml-load-file]: I/O warning : failed to load external entity "https://gdata.youtube.com/feeds/api/users/umarchives/favorites" in /mnt/stor3-wc2-dfw1/web/content/videos.php on line 42

Warning: Invalid argument supplied for foreach() in /mnt/stor3-wc2-dfw1/web/content/videos.php on line 47

Вот код, который я использую:

<?php
    // set feed URL
    $YouTubeUsername = "umarchives";

    $feedURL = "https://gdata.youtube.com/feeds/api/users/".$YouTubeUsername."/favorites";

    // read feed into SimpleXML object
    $sxml = simplexml_load_file($feedURL);

    // iterate over entries in feed
    foreach ($sxml->entry as $entry) {  

    // get nodes in media: namespace for media information
    $media = $entry->children('http://search.yahoo.com/mrss/');
    $attrs = $media->group->content->attributes();

    $videoURL = $attrs['url'];
    $videoURL = preg_replace('/\?.*/', '', $videoURL);
    $videoURL = str_replace("/v/","/embed/",$videoURL);

    $videoTitle = $media->group->title;

    echo "<iframe class='youtube-player' width='300' height='225' src='$videoURL'></iframe>\n";
    echo "<br>\n";

    }

    ?>

Ответы [ 3 ]

3 голосов
/ 17 августа 2011

Вы должны проверить результат $sxml = simplexml_load_file($feedURL); в соответствии с документами проверки ошибок Google . Затем вы можете распечатать фактическое сообщение, которое приходит вместе с кодом 403, или, возможно, решить повторить запрос. Если это случайное явление, я думаю, это проблема ограничения квоты, но фактическая информация об ошибке, скорее всего, точно скажет вам, что вы хотите знать.

0 голосов
/ 17 августа 2011

Когда я вызываю URL вашего канала в браузере (https://gdata.youtube.com/feeds/api/users/wfptv/favorites), я получаю эту ошибку:

 Favorites of requested user are not public.

Сделайте ваш канал общедоступным, и ошибка должна исчезнуть.

0 голосов
/ 17 августа 2011

MYUSERNAME не является допустимым именем пользователя. Добавьте свое имя пользователя на YouTube!

...