Какой хороший способ получить список видео на канале YouTube через API YouTube и PowerShell?
В некоторых каналах есть много видео, и для просмотра их всех достаточно просто пролистать приложение YouTube.
С учетом этих двух функций:
$api_key = 'YOUR API KEY' function get-channel-uploads ($channel_id) { $result = Invoke-RestMethod ` "https://www.googleapis.com/youtube/v3/channels?id=$channel_id&key=$api_key&part=contentDetails" $result.items[0].contentDetails.relatedPlaylists.uploads } function get-playlist-videos ($id) { $items = @() $ls = '' while ($true) { if ($ls.nextPageToken -eq $null) { $ls = Invoke-RestMethod ` ('https://www.googleapis.com/youtube/v3/playlistItems?playlistId={0}&key={1}&part=snippet&maxResults=50' -f $id, $api_key) $items = $items + $ls.items } else { $ls = Invoke-RestMethod ` ('https://www.googleapis.com/youtube/v3/playlistItems?playlistId={0}&key={1}&part=snippet&maxResults=50&pageToken={2}' -f $id, $api_key, $ls.nextPageToken) $items = $items + $ls.items } Write-Host -ForegroundColor Yellow ('totalResults = {0} Count = {1}' -f $ls.pageInfo.totalResults, $items.Count) Start-Sleep -Seconds 1 if ($items.Count -ge $ls.pageInfo.totalResults) { break } } $items }
Мы можем получить список видео для канала Джо Рогана:
$items = get-playlist-videos (get-channel-uploads 'UCzQUP1qoWDoEbmsQxvdjxgQ') # Joe Rogan
Будет показан ход поиска:
Теперь мы можем перечислить названия видеороликов:
$items | ForEach-Object { $_.snippet.title }
Показать заголовки, содержащие определенный текст:
$items | ForEach-Object { $_.snippet.title } | Where-Object { $_ -match 'MMA' }