BBQ*_*BQ. 3 php youtube parsing youtube-api youtube-data-api
好的,基于这个视频; https://www.youtube.com/watch?v=7tjfeEAdY0I
我很好奇是否可以创建一个PHP脚本,它将自动获取某个YouTube频道上的所有视频(在此示例中为https://www.youtube.com/user/whitehouse/videos),抓取所有视频,检查输出特定行或单词的成绩单,然后使用正确的时间戳保存视频,以便将所有这些视频合并为一个.
我知道有一个API可用于获取特定用户的所有YouTube视频网址,并且您可以获得每个视频的成绩单,但扫描所有视频会非常耗费资源.如果你们对如何创建这样的脚本有任何想法,我很好奇.
小智 5
可以使用YouTube V3 API捕获与特定YouTube频道的视频相关的所有信息.
YouTube的API的文档可以发现这里
的相关的API功能,可以发现这里
的步骤来检索从API调用JSON响应视频的记录将不会是资源密集型的,并且可以在代码行的JSON解析来实现是一种标准程序,大多数语言都支持PHP,包括PHP.
使用PHP包装器,可以通过几行代码实现.
过程:
首先,发送在频道下列出频道的请求以接收关于由频道ID表示的特定YouTube频道的所有内容细节.相关的代码段是:
$channelsResponse = $service->channels->listChannels('contentDetails', array('forUsername' => $channelId));
Run Code Online (Sandbox Code Playgroud)
第二步是解析每个视频项,这些视频项使用for循环方便地完成,如:
foreach ($channelsResponse['items'] as $channel) {}
Run Code Online (Sandbox Code Playgroud)
第三步是从当前项获取上传列表ID,并使用参数'snippet'向API发送另一个请求.
此时,您将获得json格式的所有内容相关数据,您需要解析并获取所需的信息.
整个代码段是:
$channelsResponse = $service->channels->listChannels('contentDetails', array('forUsername' => $channelId));
$data = [];
foreach ($channelsResponse['items'] as $channel)
{
$uploadsListId = $channel['contentDetails']['relatedPlaylists']['uploads'];
$playlistItemsResponse = $service->playlistItems->listPlaylistItems(
'snippet', array(
'playlistId' => $uploadsListId,
'maxResults' => 50
)
);
foreach ($playlistItemsResponse['items'] as $playlistItem)
{
$data[] = $playlistItem['snippet'];
}
}
Run Code Online (Sandbox Code Playgroud)