通过YouTube API和PowerShell获取YouTube频道视频列表的好方法是什么?
某些频道上有很多视频,滚动浏览YouTube应用程序以查看全部视频有点麻烦。
答案 0 :(得分:1)
提供以下两个功能:
$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
}
我们可以获取Joe Rogan频道的视频列表:
$items = get-playlist-videos (get-channel-uploads 'UCzQUP1qoWDoEbmsQxvdjxgQ') # Joe Rogan
检索进度将显示:
现在我们可以列出视频的标题:
$items | ForEach-Object { $_.snippet.title }
显示包含某些文本的标题:
$items | ForEach-Object { $_.snippet.title } | Where-Object { $_ -match 'MMA' }