【问题标题】:Get youtube channels by name按名称获取 youtube 频道
【发布时间】:2014-11-17 14:09:09
【问题描述】:

过去几个小时我都遇到了问题,但没有找到解决方案。我正在尝试使用 laravel 中的 php-youtube-api 参考 link 按名称获取 youtube 频道。但我只得到单通道输出。但我想要一个频道相关名称的列表,如this。当我搜索任何名称为“足球”的频道时,请返回我

stdClass Object
(
[kind] => youtube#channel
[etag] => "kjEFmP90GvrCl8BObMQtGoRfgaQ/I7mfLJg2NMc3uuc6rLgQDgQ-_3g"
[id] => UClENohulIkpi8JV18UJIPeg
[snippet] => stdClass Object
    (
        [title] => soccer
        [description] => 
        [publishedAt] => 2005-11-07T19:54:17.000Z
        [thumbnails] => stdClass Object
            (
                [default] => stdClass Object
                    (
                        [url] => https://yt3.ggpht.com/-NcE9VxoZBwQ/AAAAAAAAAAI/AAAAAAAAAAA/F923oDS5GIc/s88-c-k-no/photo.jpg
                    )

                [medium] => stdClass Object
                    (
                        [url] => https://yt3.ggpht.com/-NcE9VxoZBwQ/AAAAAAAAAAI/AAAAAAAAAAA/F923oDS5GIc/s240-c-k-no/photo.jpg
                    )

                [high] => stdClass Object
                    (
                        [url] => https://yt3.ggpht.com/-NcE9VxoZBwQ/AAAAAAAAAAI/AAAAAAAAAAA/F923oDS5GIc/s240-c-k-no/photo.jpg
                    )

            )

    )

[contentDetails] => stdClass Object
    (
        [relatedPlaylists] => stdClass Object
            (
                [uploads] => UUlENohulIkpi8JV18UJIPeg
            )

        [googlePlusUserId] => 107844494883714037142
    )

[statistics] => stdClass Object
    (
        [viewCount] => 763486
        [commentCount] => 134
        [subscriberCount] => 1478
        [hiddenSubscriberCount] => 
        [videoCount] => 32
    )

)

提前致谢。

我的代码是:

YoutubeController.php

class YoutubeController extends BaseController {

    public function index()
    {
        $youtube = new Madcoda\Youtube(array('key' => ##Yuxw99Ka7szK4'));

        $channel = $youtube->getChannelByName($data['q']);
        print_r($channel);
    }
 }

Youtube.php

 public function getChannelByName($username, $optionalParams = false)
 {


    $API_URL = $this->getApi('channels.list');

    $params = array(
        'forUsername' => $username,
        'part' => 'id,snippet,contentDetails,statistics,invideoPromotion'
    );


    if($optionalParams){
        $params = array_merge($params, $optionalParams);
    }


    $apiData = $this->api_get($API_URL, $params);

    return $this->decodeSingle($apiData);
}

public function api_get($url, $params)
{
    //set the youtube key
    $params['key'] = $this->youtube_key;

    //boilerplates for CURL
   // $url = "https://gdata.youtube.com/feeds/api/channels";
    $a = $url . (strpos($url, '?') === false ? '?' : '') . http_build_query($params);
    $tuCurl = curl_init();
    curl_setopt($tuCurl, CURLOPT_URL, $a);

    if (strpos($url, 'https') === false) {
        curl_setopt($tuCurl, CURLOPT_PORT, 80);
    } else {
        curl_setopt($tuCurl, CURLOPT_PORT, 443);
    }
    curl_setopt($tuCurl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($tuCurl, CURLOPT_SSL_VERIFYPEER, 0);

    $tuData = curl_exec($tuCurl);
    if (curl_errno($tuCurl)) {
        throw new \Exception('Curl Error : ' . curl_error($tuCurl));
    }
    return $tuData;
}

【问题讨论】:

  • 你的代码在哪里?
  • 感谢您的回复@Marcin。我编辑了我的问题,现在你可以检查我的代码了。

标签: laravel laravel-4 youtube-api


【解决方案1】:

您似乎使用了错误的方法。方法 getChannelByName 返回具有确切名称的通道。如果你想搜索频道,你应该使用:

// Search playlists, channels and videos, Return an array of PHP objects
$channels = $youtube->search($data['q']);

或者如果您只想共同搜索视频,您应该选择:

// Search only Videos, Return an array of PHP objects
$channels = $youtube->searchVideos($data['q']);

【讨论】:

  • 谢谢@Marcin。你是对的。现在它使用 $youtube->searchAdvanced(array( /* params */ ));功能。再次感谢。
猜你喜欢
  • 2017-04-10
  • 2013-07-22
  • 2014-10-13
  • 1970-01-01
  • 2020-11-26
  • 2018-10-28
  • 1970-01-01
  • 2018-04-16
  • 2016-06-19
相关资源
最近更新 更多