iT邦幫忙

2021 iThome 鐵人賽

DAY 28
1

「鮭魚均,因為一場鮭魚之亂被主管稱為鮭魚世代,廣義來說以年齡和臉蛋分類的話這應該算是一種 KNN 的機器學習,不正經的數據分析師,畢業後把人生暫停了半年,在 Google 和 AWS 辦過幾場演講,緩下腳步的同時找了份跨領域工作。偶而慢跑、愛跟小動物玩耍。曾立過很多志,最近是希望當一個有細節的人。」


Youtube Reports API 教學 - 頻道中出報表

YouTube Reports API 能夠使開發人員安排報告的排程,並且批量下載生成報告。對於 YouTube Reports API 而言, API 支持預先所以定義好的報告內容,並且每個報告都包含一組針對頻道使用者或內容管理員 YouTube 資訊。靈活的追蹤每 Youtube 影片的影片資訊,也有了更加彈性的資料運用方式。這篇是 Python - 數位行銷的 Youtube 分析教學系列文章的第 28 篇,也是我參加 2021 iThome 鐵人賽中系列文章的第 28 天。

系列文章:Python — 數位行銷分析與 Youtube API 教學
昨日回顧:Youtube Reports API 教學 - 最後一次做 OAuth2.0 授權

關於 YouTube Reports API

Reports

YouTube Reports API 的目的在於,讓開發人員與使用者可以快速生成報告,並且對於報告進行取用和分析,對於 YouTube Reports API 的使用來說我們大致上分為幾個步驟。

  • 呼叫 reportTypes.list() 方法以搜尋頻道或內容管理員可以檢索的報告列表。
  • 呼叫 jobs.create() 方法來確定應該為頻道或內容管理員生成報告。隨後使用 API 的 jobs.list() 和 jobs.delete() 來檢索或更改正在生成的報告列表。
  • 呼叫 jobs.reports.list() 方法為特定作業生成的報告列表。響應中的每個資源都包含一個 downloadUrl 屬性,該屬性指定可以從中下載報告的 URL。
  • 發送授權的 GET 請求下載 URL 檢索報告。

呼叫 reportTypes.list() 方法以搜尋頻道

def list_report_types(youtube_reporting, **kwargs):
    kwargs = remove_empty_kwargs(**kwargs)
    results = youtube_reporting.reportTypes().list(**kwargs).execute()
    reportTypes = results['reportTypes']

    if 'reportTypes' in results and results['reportTypes']:
        reportTypes = results['reportTypes']
        for reportType in reportTypes:
            print ('Report type id: %s\n name: %s\n' % (reportType['id'], reportType['name']))
    else:
        print ('No report types found')
        return False
    return True

True

呼叫 jobs.create() 方法來確定內容管理員。

def create_reporting_job(youtube_reporting, report_type_id, **kwargs):
    kwargs = remove_empty_kwargs(**kwargs)

    reporting_job = youtube_reporting.jobs().create(
        body=dict(
            reportTypeId=args.report_type,
            name=args.name
        ),
        **kwargs
    ).execute()

    print('Reporting job "%s" created for reporting type "%s" at "%s"'
          % (reporting_job['name'], reporting_job['reportTypeId'],
             reporting_job['createTime']))

create

呼叫 jobs.reports.list() 方法為特定工作生成報告列表

def retrieve_reports(youtube_reporting, **kwargs):
    kwargs = remove_empty_kwargs(**kwargs)
    results = youtube_reporting.jobs().reports().list(
        **kwargs
    ).execute()
    if 'reports' in results and results['reports']:
        reports = results['reports']
        for report in reports:
            print('Report dates: %s \n       download URL: %s\n'
                  % (report['startTime'], report['downloadUrl']))

startTime

發送授權的 GET 請求下載 URL

def download_report(youtube_reporting, report_url, local_file):
    request = youtube_reporting.media().download(
        resourceName=' '
    )
    request.uri = report_url
    fh = FileIO(local_file, mode='wb')
    downloader = MediaIoBaseDownload(fh, request, chunksize=-1)
    done = False
    while done is False:
        status, done = downloader.next_chunk()
        if status:
            print('Download %d%%.' % int(status.progress() * 100))
    print('Download Complete!')

Download

執行檔案做測試

在介紹完上方的步驟後,我們完成 OAuth2.0 驗證,並且完成身分驗證後,回傳得到 Report dates 的資料列表,資料列表雖非按照日期排序,辦事可以得到該有的日期都擁有,完成本次測試

OAuth2

今天說明了 Reporting API 的 OAuth2.0 開放授權

終於邁入 Reporting API 了,等於我們的挑戰賽到達了賽末點,還蠻高興的,如果有時間也歡迎看看我的夥伴們的文章

lu23770127 — SASS 基礎初學三十天
10u1 — 糟了!是世界奇觀!
juck30808 — Python — 數位行銷分析與 Youtube API 教學
HLD — 淺談物件導向與Design Pattern介紹
SiQing47 — 前端?後端?你早晚都要全端的,何不從現在開始?

Jerry Chien

【鮭魚均】 現職是 200 多萬訂閱 Youtuber 的數據分析師,專長在 Python 的開發與使用,大學雖然是資訊背景但總是斜槓跑到商管行銷領域,以工作角度來說的話,待過 FMCG、通訊軟體、社群影音產業,也算是個數位行銷體系出生的資訊人。這 30 天鐵人挑戰賽會從數位行銷角度去重新切入數據分析這件事情,期待這個社會中,每個人能在各個角力間不斷沖突而漸能找到一個平衡點回歸最初的統計建立最終的初心。

下一篇:Youtube Reports API 教學 - 告一個段落


上一篇
Youtube Reports API 教學 - 最後一次做 OAuth2.0 授權
下一篇
Youtube Reports API 教學 - 告一個段落
系列文
Python - 數位行銷分析與 Youtube API 教學30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 則留言

0
juck30808
iT邦研究生 1 級 ‧ 2021-10-14 11:25:09

--- 10/14完賽前重新更新錯字與圖片 ---

我要留言

立即登入留言