Получить каналы YouTube по названию

Я столкнулся с проблемой в течение последних нескольких часов, но не пришел к решению. Я пытаюсь получить канал youtube по имени, используя ссылку ссылки php-youtube-api в laravel. Но я получаю только один канал на выходе. Но я хочу список связанных с каналами имен, подобных этому. Когда я ищу любой канал, имеющий имя "soccerit", верните мне

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;
}
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']);

licensed under cc by-sa 3.0 with attribution.