API данных Youtube возвращает неверные данные - PullRequest
0 голосов
/ 20 марта 2019

Я не совсем уверен, как спросить это, но у меня есть php-скрипт, который извлекает данные из youtube-v3-api для моего канала на YouTube, в основном это список видео, которые я опубликовал. Он работал отлично до сегодняшнего дня, когда я снова его запустил, потому что добавил новое видео. Вот вывод для первого объекта в массиве items

items:[  
   {  
      kind:"youtube#searchResult",
      etag:""      XpPGQXPnxQJhLgs6enD_n8JR4Qk/tluoWYe5GE9lVFAkcMtcec2Ycug"",
      id:{  
         kind:"youtube#channel",
         channelId:"UCD8d3FGC907iS1qiMF0ccxA"
      },
      snippet:{  
         publishedAt:"2006-04-30T19:39:08.000Z",
         channelId:"UCD8d3FGC907iS1qiMF0ccxA",
         title:"Travis Ballard",
         description:"",
         thumbnails:{  
            default:{  
               url:"https://yt3.ggpht.com/-L5MV7tUNjlk/AAAAAAAAAAI/AAAAAAAAAAA/dXNuqxAYprw/s88-c-k-no-mo-rj-c0xffffff/photo.jpg"
            },
            medium:{  
               url:"https://yt3.ggpht.com/-L5MV7tUNjlk/AAAAAAAAAAI/AAAAAAAAAAA/dXNuqxAYprw/s240-c-k-no-mo-rj-c0xffffff/photo.jpg"
            },
            high:{  
               url:"https://yt3.ggpht.com/-L5MV7tUNjlk/AAAAAAAAAAI/AAAAAAAAAAA/dXNuqxAYprw/s800-c-k-no-mo-rj-c0xffffff/photo.jpg"
            }
         },
         channelTitle:"Travis Ballard",
         liveBroadcastContent:"none"
      }
   }
]

Это не представляет видео на моем канале? также, это не в порядке вообще. Это должно быть упорядочено по дате, как я прошу это в моем PHP-скрипте:

    <?php

  const APIKEY = 'MyAPIKeyHere';
  const CHANNELID = 'UCD8d3FGC907iS1qiMF0ccxA';
  const VIDEO_COUNT = 50;

  class FetchYoutubeVideos {

    private $api_key = null;
    private $channel_id = null;
    private $count = null;

    public function __construct($api_key, $channel_id, $count = 10) {
      $this->api_key = $api_key;
      $this->channel_id = $channel_id;
      $this->count = $count;

      $this->writeToFile(
        'videos.json',
        $this->fetch($this->getApiUrl())
      );
      printf( 'fetched videos from: %s', $this->getApiUrl());
    }

    public function getApiUrl($options = array()) {
      $endpoint = 'https://www.googleapis.com/youtube/v3/search';
      $default_options = array(
        'key' => $this->api_key,
        'channelId' => $this->channel_id,
        'part' => 'snippet,id',
        'order' => 'date',
        'maxResults' => $this->count
      );

      $options = array_merge($options, $default_options);
      return sprintf('%s/?%s', $endpoint, http_build_query($options));
    }

    public function fetch($url) {
      $ch = curl_init($url);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

      $result = curl_exec($ch);
      return $result;
    }

    public function writeToFile($filename, $data) {;
      $fh = fopen($filename, 'w+');
      fwrite($fh, $data, strlen($data));
      fclose($fh);
    }
  }

  $fetchVideos = new FetchYoutubeVideos(APIKEY, CHANNELID, VIDEO_COUNT);

Самое новое видео должно быть «Tragic - Rock-a-Hoola Revisited», а затем «Rocket Timelapse - Anycubic i3 Mega». Вы можете сослаться на мой канал yt, чтобы увидеть, что он должен возвращать: https://www.youtube.com/channel/UCD8d3FGC907iS1qiMF0ccxA?view_as=subscriber

Есть идеи, почему это изменилось? Или почему он не возвращает данные, которые должны быть?

1 Ответ

1 голос
/ 20 марта 2019

Вы столкнулись с проблемой API, которая известна уже несколько дней. Последующие действия https://issuetracker.google.com/issues/128673552, или ответы, уже предоставленные на этом сайте (например, https://stackoverflow.com/a/55246970/8327971).

Любая из двух ссылок поможет вам найти решение проблемы.

Обратите внимание, что до сих пор Google воздерживался от предоставления ETA, когда он вернет обратно функции API, которые он отключил. Я полагаю, что может пройти еще несколько дней (возможно, недель?), Пока мы не увидим, что эти отключенные функции снова заработают.

...