Youtube Data API 教学 - 那就从播放清单 playlistItems.list

「鲑鱼均,因为一场鲑鱼之乱被主管称为鲑鱼世代,广义来说以年龄和脸蛋分类的话这应该算是一种 KNN 的机器学习,不正经的数据分析师,毕业後把人生暂停了半年,在 Google 和 AWS 办过几场演讲,缓下脚步的同时找了份跨领域工作。偶而慢跑、爱跟小动物玩耍。曾立过很多志,最近是希望当一个有细节的人。」


Youtube Data API 教学 - 那就从播放清单 playlistItems.list

之前的内容许多都是限制在指定影片的情况下,如果说我今天需要抓取一个变动资料,这时候我们就必须想想是否有新的解决方法跟可能性,这篇是 Python - 数位行销的 Youtube 分析教学系列文章的第 12 篇,也是我参加 2021 iThome 铁人赛中系列文章的第 12 天。

系列文章:Python — 数位行销分析与 Youtube API 教学
昨日回顾:Youtube Data API 教学 - 频道区块分类 channelSections

关於 playlistItems().list( 的功能

在过去的资料 part 种类文章文章中,我们曾经有提到要如何抓取影片内部的相关资讯,但这一切的前提都是在指定影片的情况下,如果说我今天需要抓取一个变动资料,或者是说有新的影片不断地加进来,这时候我们可能就需要使用其他的方法来解决这个问题了 playlistItems().list 的出现就是要解决这样子的问题,俗话说理工男吗就是有问题要解决问题,没问题要创造问题。playlistItems().list 功能包含了播放清单内影片的发布时间(publishedAt)、影片标题(title)、影片描述(description)、影片缩图(url)等等之类的讯息,只要新的影片加入到播放清单中,就能够抓到相关的新影片资讯。

今天找的范例频道是人跟文字都优美又时尚的舍蔺 "Serene Vitale" 来作为这次程序范例的介绍,身为 Serene 的小粉丝,从之前在 Duke 分享纽约时尚实习生时就一直有在 Follow 她,对於美学穿搭都很有自己的想法与概念,是我很喜欢的影音创作者。我们从频道的播放清单中,能看见 Serene 有4个不同的播放清单。

Serene

确定你想抓取的播放清单资料

我们在点进去穿搭影片的播放清单後,能看见影片右边,开启了「穿搭系列」这个播放清单,从网址中得知 list 播放清单的 id 为 "PLxIOMmf0q1jj05_88uNFAqMEmOrwoGLdc",可以把这个资讯记下来,而前面的 v 则代表目前这部影片的 video ID "sUHeGzC0nKs"

PLxIOMmf0q1jj05_88uNFAqMEmOrwoGLdc

在 Python 中使用 playlistItems().list() 方法中,设定参数 part= "snippet", 输入 playlistId,与之前不同的是这边多设定了一个 maxResults 为 50,预设为 5 但我们可以设定其最大值,maxResults 设定可以为 (0-50)。

def youtube_playlistItems():
    request = youtube.playlistItems().list(
        part= "snippet", 
        playlistId= "PLxIOMmf0q1jj05_88uNFAqMEmOrwoGLdc" ,
        maxResults = 50
    )
    response = request.execute()
    
    for i in range(len(response['items'])):
        print(response['items'][i]['snippet']['title']) 

if __name__ == '__main__':
    youtube_playlistItems()

Python-s

从上方可以得知「穿搭系列」这个播放清单中有 12 部影片,但是当我们对照出来後会发现这个播放清单只有 11 部影片,这刚好是个很好的范例,在最底下有一部 (1 unavailable video is hidden),代表就是其中一部影片是隐藏状态,可能是因为设为私人影片了,但是从 API 资料中还是能够看见这部影片,为 "旅游X唇膏|约旦?? 死海、月亮谷沙漠、玫瑰古城 ♥ Dior 俏唇露"

unavailableV

进一步资料了解你想抓取的播放清单资料

在response 的资料取用中,我们可以设定为标题资料 (title)、影片简介(description)或是发布时间(publishedAt) 等等的资料,我们就可以从播放清单中一部部的把影片资料抓取出来。

def youtube_playlistItems():
    request = youtube.playlistItems().list(
        part= "snippet", 
        playlistId= "PLxIOMmf0q1jj05_88uNFAqMEmOrwoGLdc" ,
        maxResults = 50
    )
    response = request.execute()
    #print(response,"\n")
    
    for i in range(len(response['items'])):
        print(response['items'][i]['snippet']['title'])
        print(response['items'][i]['snippet']['description'])
        print(response['items'][i]['snippet']['publishedAt'])    

if __name__ == '__main__':
    youtube_playlistItems()

Python

再次打开影片与影片中的内容对照一下,标题、简介还有发布日期都正确,代表抓取资料是成功的,整体资料没有什麽问题,今天的内容教学很顺利(?)

Video

总结一下今天的结果!

这项功能对於时常需要更新播放清单资料的使用者而言非常的好用,你可以更快速更方便的进行资料的追踪与实践,谢谢你的阅读,以下是其所需要花费的 Quota 数:

  • 清单项目
    playlistItems.list -1
    playlistItems.insert -50
    playlistItems.update-50
    playlistItems.delete -50

如果有时间也欢迎看看我的夥伴们的文章:
lu23770127 — SASS 基础初学三十天
10u1 — 糟了!是世界奇观!
juck30808 — Python — 数位行销分析与 Youtube API 教学
HLD — 浅谈物件导向与Design Pattern介绍
SiQing47 — 前端?後端?你早晚都要全端的,何不从现在开始?

Jerry Chien

【鲑鱼均】 现职是 200 多万订阅 Youtuber 的数据分析师,专长在 Python 的开发与使用,大学虽然是资讯背景但总是斜杠跑到商管行销领域,以工作角度来说的话,待过 FMCG、通讯软件、社群影音产业,也算是个数位行销体系出生的资讯人。这 30 天铁人挑战赛会从数位行销角度去重新切入数据分析这件事情,期待这个资本主义的社会中,每个人能在各个角力间不断冲突而渐能找到一个平衡点回归最初的统计建立最终的初心。

下一篇:Youtube Data API 教学 - 告一个段落


<<:  Day13:今天来聊一下Microsoft Defender for Endpoint的配置警报和检测

>>:  OAuth 2.0

[Day 7] Leetcode 621. Task Scheduler (C++)

前言 今天来分享621. Task Scheduler这一题~ 其实会选到这题本来也是要接续昨天pr...

Android学习笔记14

今天试着在昨天做的dialogfragment中加入progress bar程序码如下 xml: &...

POCO_设定所有Table继承同一个class

因为专案刚好需要用到 所以纪录一下参数在哪边 纪录一下 使用Visual Studio Entity...

【Day 22】JavaScript 的 相等比较

JavaScript 提供三种不同的值比较运算操作: 严格相等 (或称 "三等於"...

[Day - 06 ] - Spring Conditional 运用与原理

Abstract 当每个开发者初始化一套服务时,可能会因不同的系统或不同的Java版本相容性问题进而...