実現したいこと
https://youtubelive.soraweb.net/?p=1
このようなyoutubeの配信者一覧を取得したい
発生している問題・分からないこと
youtube data apiをつかい、live中のvideoを取得しても最大100件までしか取得できない
101件以上取得したい
該当のソースコード
php
1<?php 2 3namespace App\Services; 4 5use Google_Client; 6use Google_Service_YouTube; 7use GuzzleHttp\Client; 8use App\Models\YoutubeVideo; 9use App\Models\YoutubeComment; 10use Carbon\Carbon; 11class YoutubeApiService 12{ 13 protected $apiKey; 14 protected $youtube; 15 16 public function __construct() 17 { 18 $this->apiKey = config('services.youtube.api_key'); 19 $client = new Google_Client(); 20 $client->setDeveloperKey($this->apiKey); 21 $this->youtube = new Google_Service_YouTube($client); 22 } 23 24 public function getLiveVideos() 25 { 26 $allLiveVideos = []; 27 $pageToken = null; 28 29 do { 30 date_default_timezone_set('Asia/Tokyo'); 31 $beforeDate = Carbon::yesterday(); 32 $afterDate = Carbon::tomorrow(); 33 34 $params = [ 35 'part' => 'snippet', 36 'eventType' => 'live', 37 'type' => 'video', 38 'regionCode' => 'JP', 39 'maxResults' => 50, 40 'q' => 'あ|い|う|え|お|か|き|く|け|こ|さ|し|す|せ|そ|た|ち|つ|て|と|な|に|ぬ|ね|の|は|ひ|ふ|へ|ほ|ま|み|む|め|も|や|ゆ|よ|ら|り|る|れ|ろ|わ|を|ん|ア|イ|ウ|エ|オ|カ|キ|ク|ケ|コ|サ|シ|ス|セ|ソ|タ|チ|ツ|テ|ト|ナ|ニ|ヌ|ネ|ノ|ハ|ヒ|フ|ヘ|ホ|マ|ミ|ム|メ|モ|ヤ|ユ|ヨ|ラ|リ|ル|レ|ロ|ワ|ヲ|ン', 41 ]; 42 43 44 if ($pageToken) { 45 $params['pageToken'] = $pageToken; 46 } 47 48 $response = $this->youtube->search->listSearch('snippet', $params); 49 50 foreach ($response->getItems() as $item) { 51 $allLiveVideos[] = [ 52 'videoId' => $item['id']['videoId'], 53 'title' => $item['snippet']['title'], 54 'channelTitle' => $item['snippet']['channelTitle'], 55 'channelId' => $item['snippet']['channelId'], 56 'publishedAt' => $item['snippet']['publishedAt'], 57 ]; 58 } 59 \Log::debug("liveVideos: ", ['response' => $response["pageInfo"]]); 60 // \Log::info($allLiveVideos); 61 62 $pageToken = $response->getNextPageToken(); 63 usleep(1000000); // 0.1秒待機 64 } while ($pageToken); 65 66 return $allLiveVideos; 67 } 68}
log
1[2025-02-20 08:33:28] local.DEBUG: liveVideos: {"response":{"Google\\Service\\YouTube\\PageInfo":{"resultsPerPage":50,"totalResults":1000000}}} 2[2025-02-20 08:33:29] local.DEBUG: liveVideos: {"response":{"Google\\Service\\YouTube\\PageInfo":{"resultsPerPage":50,"totalResults":1000000}}} 3[2025-02-20 08:33:31] local.DEBUG: liveVideos: {"response":{"Google\\Service\\YouTube\\PageInfo":{"resultsPerPage":0,"totalResults":1000000}}}
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
googleで検索したが、とくに似たような事例が見つからなかった
chatgptにも聞いたがうまくいかなかった
補足
php
laravel
youtube data api

あなたの回答
tips
プレビュー