How to call Youtube Api with Channel Name By Wizbrand

Posted by

In Controller make a function:-

CODE

 if (strpos($url, 'youtube.com/channel/') !== false) {
                $channelIdArr = $this->getYouTubeXMLUrl($url, true);
                if ($channelIdArr && isset($channelIdArr['id'])) {
                    $channelId = $channelIdArr['id'];
            
                    $client = new Client();
                    $response = $client->request('GET', "https://www.googleapis.com/youtube/v3/channels", [
                        'query' => [
                            'part' => 'statistics',
                            'id' => $channelId,
                            'key' => ''
                        ]
                    ]);
            
                    $result = $response->getBody();
                    $channelData = json_decode($result, true);
            
                    if (isset($channelData['items'][0]['statistics'])) {
                        $statistics = $channelData['items'][0]['statistics'];
            
                        $subscriberCount = $statistics['subscriberCount'];
                        $videoCount = $statistics['videoCount'];
            
                        return [
                            'subscriberCount' => $subscriberCount,
                            'videoCount' => $videoCount
                        ];
                    }
                }
            } elseif (strpos($url, 'youtube.com/@') !== false) {
                Log::info("youtube.com/@ aa rha h");
                $channelname = str_replace('@', '', $channelname);
                Log::info("Username: " . $channelname);
        
                $client = new Client();
                $response = $client->request('GET', "https://www.googleapis.com/youtube/v3/search", [
                    'query' => [
                        'part' => 'snippet',
                        'type' => 'channel',
                        'q' => $channelname,
                        'key' => '' // Replace with your actual API key
                    ]
                ]);
        
                $result = $response->getBody();
                $channelData = json_decode($result, true);
                Log::info("API Response: " . $result);
        
                if (isset($channelData['items'][0]['id']['channelId'])) {
                    $channelId = $channelData['items'][0]['id']['channelId'];
            
                    $response = $client->request('GET', "https://www.googleapis.com/youtube/v3/channels", [
                        'query' => [
                            'part' => 'statistics',
                            'id' => $channelId,
                            'key' => '' // Replace with your actual API key
                        ]
                    ]);
            
                    $result = $response->getBody();
                    $channelData = json_decode($result, true);
                    Log::info("API Response: " . $result);
            
                    if (isset($channelData['items'][0]['statistics'])) {
                        $statistics = $channelData['items'][0]['statistics'];
            
                        $subscriberCount = $statistics['subscriberCount'];
                        $videoCount = $statistics['videoCount'];
            
                        return [
                            'subscriberCount' => $subscriberCount,
                            'videoCount' => $videoCount
                        ];
                    }
                }
            }
            
            return [];

Output :-
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x