Bernie Carpio Ответов: 2

Отображение API Youtube "ответы" - PHP


Как я могу отображать ответы в комментариях youtube?

Вот мой код

$videoid = 'UKdZU9Db6fk';
$apikey = 'API KEY';

$json = file_get_contents('https://www.googleapis.com/youtube/v3/commentThreads?maxResults=100&part=snippet%2Creplies&videoId='.$videoid.'&key='.$apikey);
$ytdata = json_decode($json);

foreach ($ytdata->items as $item) {
    echo "Author: ". $item->snippet->topLevelComment->snippet->authorDisplayName;
    echo "Comment: ". $item->snippet->topLevelComment->snippet->textDisplay;

    foreach ($ytdata->items->replies as $iteminner) {
	    echo "Reply: ". $iteminner->comments[0]->textDisplay;
    }
}


Я могу отобразить комментарий, но ответ в конкретный комментарий-это тот, который я не могу сделать, а также что делать, если есть комментарии, которые имеют свои собственные ответы.

Спасибо

Что я уже пробовал:

Я искал в сети, и большинство вопросов одни и те же, у них тоже есть те же проблемы.

Я пытаюсь добавить по каждому элементу внутри foreach, но результат

"Попытка получить свойство не-объекта"
"Неверный аргумент поставляются для foreach() "


Вот как работают xml-данные

https://www.googleapis.com/youtube/v3/commentThreads?maxResults=100&part=snippet%2Creplies&videoId=UKdZU9Db6fk&key=AIzaSyCC9AeTosJL21zfVGf8aVPPh9Tz5ktyqgm

Спасибо

Richard MacCutchan

"Неверный аргумент поставляются для foreach() "
Сообщение говорит вам, что это неправильно, ссылка на объект, которую вы пытаетесь использовать, недопустима.

2 Ответов

Рейтинг:
2

Kornfeld Eliyahu Peter

Результат от API имеет "элементы" только в том случае, если он был успешным, в противном случае он не имеет, и ваш код терпит неудачу...
Перед обработкой данных необходимо проверить возвращаемое значение на наличие кода ошибки...
Возможная ошибка у вас может быть и структура результата в случае ошибки:

{
 "error": {
  "errors": [
   {
    "domain": "usageLimits",
    "reason": "dailyLimitExceededUnreg",
    "message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup.",
    "extendedHelp": "https://code.google.com/apis/console"
   }
  ],
  "code": 403,
  "message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup."
 }
}

Сделай что-нибудь вроде этого:
if( isset( $ytdata['error'] ) ) {
  // something wrong...
}
else {
  // go on...
}

CommentThreads: список |  API данных YouTube  |  Разработчики Google[^]


Рейтинг:
2

Bernie Carpio

Спасибо @Kornfeld Eliyahu Peter

эта часть кода работает нормально

foreach ($ytdata->items as $item) {
    echo "Author: ". $item->snippet->topLevelComment->snippet->authorDisplayName;
    echo "Comment: ". $item->snippet->topLevelComment->snippet->textDisplay;
}


но когда я добавляю foreach внутри foreach это время я получаю результат ошибки


Richard Deeming

Если вы хотите ответить на решение, нажмите кнопку "есть вопрос или комментарий?" кнопка под этим решением.

НЕ опубликуйте свой комментарий как "решение".

Bernie Carpio

Хорошо Спасибо