JSON格式的YouTube视频列表

时间:2018-04-30 09:27:15

标签: php json youtube

我在PHP中创建了一个函数,用于以JSON格式获取我的频道的YouTube视频列表,但我得到了空白数组。

public function channels_list()
{

    $method = $_SERVER['REQUEST_METHOD'];
    if($method != 'GET')
    {
        json_output(400,array('status' => 400,'message' => 'Bad request.'));
    }
    else
    {
        $data = array();

        $json_link="https://www.googleapis.com/youtube/v3/search?key='MY API KEY'&channelId='MY CHANNEL ID'&part=snippet,id&order=date&maxResults=10";

        $json = file_get_contents($this->json_link);
        $obj = json_decode($json, true, 512, JSON_BIGINT_AS_STRING);                        

        foreach($obj['items'] as $post){

            $jsondata['id'] = isset($post['id']['videoId']) ? $post['id']['videoId'] : "";
            $jsondata['published_at'] = isset($post['snippet']['publishedAt']) ? $post['snippet']['publishedAt'] : "";
            $jsondata['title'] = isset($post['snippet']['title']) ? $post['snippet']['title'] : "";
            $jsondata['description'] = isset($post['snippet']['description']) ? $post['snippet']['description'] : "";
            $jsondata['thumbnail'] = "https://i.ytimg.com/vi/{$id}/maxresdefault.jpg";
            array_push($data, $jsondata);

        }
        json_output("200", array("list"=>$data),1);     
    } 
}

1 个答案:

答案 0 :(得分:0)

尝试以下代码,我正在使用它,它对我来说很好。

function get_youtube($url){

$youtube = "http://www.youtube.com/oembed?url=". $url ."&format=json";

$curl = curl_init($youtube);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$return = curl_exec($curl);
curl_close($curl);
return json_decode($return, true);
}
$url = // youtube video url 

// Display Data 
print_r(get_youtube($url));

<强>更新

您不需要OAuth2登录。您可以通过设置API密钥来完成此操作。

这是一个playlistItems-&gt;列表请求。

这是api资源管理器中的演示:https://developers.google.com/apis-explorer/#p/youtube/v3/youtube.playlistItems.list?part=snippet&playlistId=PLjFEz-E0UPUxw3lFpnfV1dDA7OE7YIFRj&_h=2&

而不是设置clientId和客户端秘密

在公共API访问中从云控制台为您的API密钥设置API密钥。

$client->setAPIKey($API_KEY);

示例:

 $API_key    = 'Your_API_Key';
 $channelID  = 'YouTube_Channel_ID';
 $maxResults = 10;

 $videoList = json_decode(file_get_contents('https://www.googleapis.com/youtube/v3/search?order=date&part=snippet&channelId='.$channelID.'&maxResults='.$maxResults.'&key='.$API_key.''));