powershell - 获取 YouTube 频道标题列表
问题描述
通过 YouTube API 和 PowerShell 获取 YouTube 频道视频列表的好方法是什么?
有些频道有很多视频,滚动浏览 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
}
我们可以获取 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' }
推荐阅读
- linux - .NET Core 在 Linux 上的运行速度提高 2 倍
- reactjs - 错误:元素类型无效 React Native
- javafx - 使用 Gradle 6.6.1 构建 JavaFXPorts 项目时出错
- docker - 使用容器名称而不是容器 ID 保存 docker 容器日志
- nutch - 获取失败,协议状态:异常(16),lastModified=0:Http code=406,url=https://www.randolphnj.org/
- rust - 使用`flat_map`为结构切片的字段创建迭代器
- mediawiki - Mediawiki 不显示图像
- mongodb - MongoDB向数组的每个元素添加新字段
- python - Json 到带有棉花糖 Python 的对象列表
- java - 如何在java中使用私钥-RSA算法解密消息