Youtube Analytics API 教学 - 告一个段落

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


Youtube Analytics API 教学 - 告一个段落

Youtube Analytics API 能找到的资料非常少,尤其在中文语系中更甚,相较於 Data API 的自由性,Analytics 的隐私注重较高设定也更为复杂,今天以影片资讯说明,抓取你在创作者工作室 Youtube Studio 中的资讯,他需要具有高度的验证与安全性,但也同时给予了影音串流和数位行销的工作者,有了更加多元的资料运用方式,更灵活的追踪每 Youtube 影片的影片资讯。这篇是 Python - 数位行销的 Youtube 分析教学系列文章的第 26 篇,也是我参加 2021 iThome 铁人赛中系列文章的第 26 天。另外因为 Youtube Analytics API 牵涉到私人资讯,所以我就直接拿我没什麽在经营的个人帐号来 demo 测试。

系列文章:Python — 数位行销分析与 Youtube API 教学
昨日回顾:Youtube Analytics API 教学 - 内容管理员

确认你拥有内容管理员权限了

在开始之前需要先确定你的身份类别,上一个章节已经有提及到内容管理员的意思以及他和一般的使用者帐户有何不同,我们在开始前必须要先确定自己的身份右方的帐户图示中,可以看见一个绿色房子的图案,那个 Content Manager 即是所谓的内容管理员

Content

定义你的 google_auth_oauthlib

内容管理员身份的取用大致与先前的相同,但这边做个总复习顺便把整体流程顺一次给大家看一遍,关於 google_auth_oauthlib ,是用於 Google API Python 端的 Library。这个 Library 是由 Google 官方进行持续性维护。首先先在 GCP 找到你的 client_secret,我们有介绍过要将 client_secret 的 Json 档案下载下来,之前我们根据 Google Cloud Platform 获得你的 client_secret (通行证) ,我们接下来需要使用到这个通行证,通行证是隐私基本上不能随意露出,在未来抓取 Youtube Analytics API 资料时,就会需要这组 Json 档通行证来进行。

google_auth_oauthlib

  • 设定 scopes 和 client_secrets,该 Python 程序档案要与 client_secrets_file 的 Json 档案放在同一个资料夹,设定 api_service_name 和 api_version
import os,sys,time,csv
import google_auth_oauthlib.flow
import googleapiclient.discovery
import googleapiclient.errors

scopes = ["https://www.googleapis.com/auth/yt-analytics-monetary.readonly"]

# Get credentials and create an API client
# Disable OAuthlib's HTTPS verification when running locally.
# *DO NOT* leave this option enabled in production.
os.environ["OAUTHLIB_INSECURE_TRANSPORT"] = "1"
api_service_name = "youtubeAnalytics"
api_version = "v2"
client_secrets_file = "client_secret_.....你的金钥.........ent.com.json"

flow = google_auth_oauthlib.flow.InstalledAppFlow.from_client_secrets_file(
client_secrets_file, scopes)
credentials = flow.run_console()
youtube_analytics = googleapiclient.discovery.build(
    api_service_name, api_version, credentials=credentials)

scopes

  • 访问 URL 授权应用程序时,选择我们上次所设定的 OAuth consent screen 画面,从通知中可以得知 incbot 这个开发程序想要取用帐户资料,在此点选你的 Youtube Content Manager 帐号。

consent

  • 因为是测试阶段 所以会得到个 Google hasn’t verified this app 的警告,点选 Contiue 继续,後续会告知 incbot 这个开发程序的相关使用资讯,并且询问你是否允许他储存与使用你的资料,因为我们是测试自己的资料,所以点选 Continue 继续

verified

  • 最後会获得一组临时金钥,请将这段金钥复制下来,把金钥贴回 authorization code ,接下来我们就会拥有 Youtube_Analytics_API 的使用权限了。

authorization

  • 一切都完成後,我们利用 ids 设定你的 contentOwner,并且设定 filters 为你所想要的频道名称,完整写法如下呈现,可以使用回圈的方式,撰写你的频道 id 参数,并且陆续将你的参数加入进去,这样即可完成 ContentOwner 的所有子频道资料抓取。
def main(dt,dt2):
    var = 0
    while var <1:
        var = var +1
        try:
            request = youtube_analytics.reports().query(
                startDate = str('2021-10-01'),
                endDate= str('2021-10-02'),
                maxResults = 10,
                dimensions= dt, 
                metrics= dt2, 
                ids = 'contentOwner==yTp...............Q',
                filters= 'channel==UC..................w',
                sort = '-views'
            )
            response = request.execute()
            print(response)
        except:
            print("Error")

def crocodile():
    while True:
        dt = 'video'
        dt2 = input('metrics:')
        if dt =="exit":
            break
        main(dt,dt2)
        
if __name__ == "__main__":
    crocodile()

crocodile

Youtube Analyst API 的完美 Ending

今天的内容偏向於过去内容的统整,将 Youtube Analyst API 做完美的总结,也使用了 Content Owner 和 user 两种角色身份来介绍 API 的使用,如果对於今天这篇内容不太清楚的小夥伴可以看看前几天的 Youtube Analyst API 系列文章唷!如果有时间也欢迎看看我的夥伴们的文章

lu23770127 — SASS 基础初学三十天
10u1 — 糟了!是世界奇观!
juck30808 — Python — 数位行销分析与 Youtube API 教学
HLD — 浅谈物件导向与Design Pattern介绍
SiQing47 — 前端?後端?你早晚都要全端的,何不从现在开始?

Jerry Chien

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

下一篇:Youtube Reports API 教学 - 最後一次做 OAuth2.0 授权


<<:  【Day 25】React 与 Immutible

>>:  Vaadin Pro Components 图表初探 - day26

Day.13 Hash map

任何语言都会提供这一种资料结构,像Golang的map ex. var hash map[strin...

JavaScript基本功修练:Day26 - Promise的语法糖:async/await

除了Promise之外,还有async/await语法来处理非同步程序,它背後的操作原理与Promi...

Microsoft Azure Machine Learning - Day 3

Chap.I Practical drill 实战演练 以下内容来自这里 Prat4. Run Ex...

Python 练习

今天也是跟昨天一样,要来练习比较难的题目,就是APCS啦,今天要来练习的题目是APCS 106年3月...

第二十天:在 TeamCity 上执行 Build Scan

昨天介绍了 Gradle 的 Build Scan 功能,让我们可以清楚的了解 Build 过程中的...