首页 > 解决方案 > 获取 YouTube 频道标题列表

问题描述

通过 YouTube API 和 PowerShell 获取 YouTube 频道视频列表的好方法是什么?

有些频道有很多视频,滚动浏览 YouTube 应用程序以查看所有视频有点麻烦。

标签: powershell

解决方案


鉴于这两个功能:

$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' }

在此处输入图像描述


推荐阅读