Created
January 21, 2020 02:56
-
-
Save oshimamasara/7a3d4e7059eef90cb479f38bee32e898 to your computer and use it in GitHub Desktop.
YouTube Analytics API How to.ipynb
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"nbformat": 4, | |
"nbformat_minor": 0, | |
"metadata": { | |
"colab": { | |
"name": "YouTube Analytics API How to.ipynb", | |
"provenance": [], | |
"collapsed_sections": [], | |
"authorship_tag": "ABX9TyMhMzeBJOsa7DQ6fXnlEsUu", | |
"include_colab_link": true | |
}, | |
"kernelspec": { | |
"name": "python3", | |
"display_name": "Python 3" | |
} | |
}, | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "view-in-github", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"<a href=\"https://colab.research.google.com/gist/oshimamasara/7a3d4e7059eef90cb479f38bee32e898/youtube-analytics-api-how-to.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "o8yQnwqd3XAb", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"> 参考ドキュメント: [Google 公式 doc](https://developers.google.com/youtube/analytics/reference/reports/query#examples_1)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "feS5pnfM1Fgn", | |
"colab_type": "code", | |
"outputId": "a2153dba-560b-47bc-cda5-8b2fddc04036", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 256 | |
} | |
}, | |
"source": [ | |
"!pip install --upgrade google-api-python-client\n", | |
"!pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2" | |
], | |
"execution_count": 0, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"text": [ | |
"Requirement already up-to-date: google-api-python-client in /usr/local/lib/python3.6/dist-packages (1.7.11)\n", | |
"Requirement already satisfied, skipping upgrade: google-auth-httplib2>=0.0.3 in /usr/local/lib/python3.6/dist-packages (from google-api-python-client) (0.0.3)\n", | |
"Requirement already satisfied, skipping upgrade: httplib2<1dev,>=0.9.2 in /usr/local/lib/python3.6/dist-packages (from google-api-python-client) (0.11.3)\n", | |
"Requirement already satisfied, skipping upgrade: six<2dev,>=1.6.1 in /usr/local/lib/python3.6/dist-packages (from google-api-python-client) (1.12.0)\n", | |
"Requirement already satisfied, skipping upgrade: google-auth>=1.4.1 in /usr/local/lib/python3.6/dist-packages (from google-api-python-client) (1.10.1)\n", | |
"Requirement already satisfied, skipping upgrade: uritemplate<4dev,>=3.0.0 in /usr/local/lib/python3.6/dist-packages (from google-api-python-client) (3.0.1)\n", | |
"Requirement already satisfied, skipping upgrade: setuptools>=40.3.0 in /usr/local/lib/python3.6/dist-packages (from google-auth>=1.4.1->google-api-python-client) (42.0.2)\n", | |
"Requirement already satisfied, skipping upgrade: cachetools<5.0,>=2.0.0 in /usr/local/lib/python3.6/dist-packages (from google-auth>=1.4.1->google-api-python-client) (4.0.0)\n", | |
"Requirement already satisfied, skipping upgrade: pyasn1-modules>=0.2.1 in /usr/local/lib/python3.6/dist-packages (from google-auth>=1.4.1->google-api-python-client) (0.2.7)\n", | |
"Requirement already satisfied, skipping upgrade: rsa<4.1,>=3.1.4 in /usr/local/lib/python3.6/dist-packages (from google-auth>=1.4.1->google-api-python-client) (4.0)\n", | |
"Requirement already satisfied, skipping upgrade: pyasn1<0.5.0,>=0.4.6 in /usr/local/lib/python3.6/dist-packages (from pyasn1-modules>=0.2.1->google-auth>=1.4.1->google-api-python-client) (0.4.8)\n" | |
], | |
"name": "stdout" | |
} | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "Ue749UG-4tc3", | |
"colab_type": "code", | |
"outputId": "7a866501-af8f-4837-a9a0-d5b3afd5f7c0", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 52 | |
} | |
}, | |
"source": [ | |
"!ls" | |
], | |
"execution_count": 0, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"text": [ | |
"client_secret_382784964069-0u3vvubopdb8npbqegfair2fovcncnd7.apps.googleusercontent.com.json\n", | |
"sample_data\n" | |
], | |
"name": "stdout" | |
} | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "NZmiR5021dg8", | |
"colab_type": "code", | |
"colab": {} | |
}, | |
"source": [ | |
"# 公開動画の日毎累計データを取得するコード\n", | |
"# dimensions='day'\n", | |
"\n", | |
"# -*- coding: utf-8 -*-\n", | |
"\n", | |
"import os\n", | |
"import google.oauth2.credentials\n", | |
"import google_auth_oauthlib.flow\n", | |
"from googleapiclient.discovery import build\n", | |
"from googleapiclient.errors import HttpError\n", | |
"from google_auth_oauthlib.flow import InstalledAppFlow\n", | |
"\n", | |
"SCOPES = ['https://www.googleapis.com/auth/yt-analytics.readonly']\n", | |
"\n", | |
"API_SERVICE_NAME = 'youtubeAnalytics'\n", | |
"API_VERSION = 'v2'\n", | |
"CLIENT_SECRETS_FILE = 'client_secret_382784964069-0u3vvubopdb8npbqegfair2fovcncnd7.apps.googleusercontent.com.json'\n", | |
"def get_service():\n", | |
" flow = InstalledAppFlow.from_client_secrets_file(CLIENT_SECRETS_FILE, SCOPES)\n", | |
" credentials = flow.run_console()\n", | |
" return build(API_SERVICE_NAME, API_VERSION, credentials = credentials)\n", | |
"\n", | |
"def execute_api_request(client_library_function, **kwargs):\n", | |
" response = client_library_function(\n", | |
" **kwargs\n", | |
" ).execute()\n", | |
"\n", | |
" print(\"--- response ---\")\n", | |
" print(response)\n", | |
" print(\"\\n--- type(response) ---\")\n", | |
" print(type(response))\n", | |
" print(\"\\n--- response.keys() ---\")\n", | |
" print(response.keys())\n", | |
"\n", | |
" rows = response[u'rows']\n", | |
" header = response[u'columnHeaders']\n", | |
" print(\"\\n--- rows ---\")\n", | |
" print(rows)\n", | |
" print(len(rows))\n", | |
" print(\"\\n--- header ---\")\n", | |
" print(header)\n", | |
" data1 = rows[0][0]\n", | |
" print(\"\\n--- 1日目 ---\")\n", | |
" print(\"1日目の日付: \" + data1 + \", 視聴時間: \" + str(rows[0][1]) + \", View: \" + str(rows[0][2]) + \", likes: \" + str(rows[0][3]) + \", お気に入り登録数: \" + str(rows[0][4]))\n", | |
"\n", | |
"if __name__ == '__main__':\n", | |
" os.environ['OAUTHLIB_INSECURE_TRANSPORT'] = '1'\n", | |
"\n", | |
" youtubeAnalytics = get_service()\n", | |
" execute_api_request(\n", | |
" youtubeAnalytics.reports().query,\n", | |
" ids='channel==MINE',\n", | |
" startDate='2019-01-01',\n", | |
" endDate='2019-12-31',\n", | |
" metrics='estimatedMinutesWatched,views,likes,subscribersGained',\n", | |
" dimensions='day',\n", | |
" sort='day'\n", | |
" )" | |
], | |
"execution_count": 0, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "dB8HR_hj52AQ", | |
"colab_type": "code", | |
"outputId": "0f916e63-d8a6-41a5-f5fa-d7cd1fa716e6", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 367 | |
} | |
}, | |
"source": [ | |
"# 自分が公開してる動画のビデオ毎のデータを収集するコード\n", | |
"\n", | |
"def execute_api_request(client_library_function, **kwargs):\n", | |
" response = client_library_function(\n", | |
" **kwargs\n", | |
" ).execute()\n", | |
"\n", | |
" print(\"--- response ---\")\n", | |
" print(response)\n", | |
" print(\"\\n--- type(response) ---\")\n", | |
" print(type(response))\n", | |
" print(\"\\n--- response.keys() ---\")\n", | |
" print(response.keys())\n", | |
"\n", | |
" rows = response[u'rows']\n", | |
" header = response[u'columnHeaders']\n", | |
" print(\"\\n--- rows ---\")\n", | |
" print(rows)\n", | |
" print(\"\\n--- header ---\")\n", | |
" print(header)\n", | |
" data1 = rows[0][0]\n", | |
" print(\"\\n--- data1 ---\")\n", | |
" print(\"1つめのvideo: \" + data1 + \", 視聴時間: \" + str(rows[0][1]) + \", View: \" + str(rows[0][2]) + \", likes: \" + str(rows[0][3]) + \", お気に入り登録数: \" + str(rows[0][4]) + \", 失ったお気に入り登録数: \" + str(rows[0][5]) )\n", | |
"\n", | |
"if __name__ == '__main__':\n", | |
" os.environ['OAUTHLIB_INSECURE_TRANSPORT'] = '1'\n", | |
"\n", | |
" youtubeAnalytics = get_service()\n", | |
" \n", | |
" execute_api_request(\n", | |
" youtubeAnalytics.reports().query,\n", | |
" ids='channel==MINE',\n", | |
" maxResults = '5',\n", | |
" startDate='2019-01-01',\n", | |
" endDate='2019-12-31',\n", | |
" metrics='estimatedMinutesWatched,views,likes,subscribersGained,subscribersLost',\n", | |
" dimensions='video',\n", | |
" sort='-estimatedMinutesWatched'\n", | |
" )" | |
], | |
"execution_count": 0, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"text": [ | |
"Please visit this URL to authorize this application: https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=382784964069-0u3vvubopdb8npbqegfair2fovcncnd7.apps.googleusercontent.com&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fyt-analytics.readonly&state=A3AsAz81S3da6lYGpAIposN9Be9adW&prompt=consent&access_type=offline\n", | |
"Enter the authorization code: 4/vgFRgz3hKtw8U6xQKcGZSoZoVUEVQ2pbvCTq7ckz6xaoRSG5WlAGgjQ\n", | |
"--- response ---\n", | |
"{'kind': 'youtubeAnalytics#resultTable', 'columnHeaders': [{'name': 'video', 'columnType': 'DIMENSION', 'dataType': 'STRING'}, {'name': 'estimatedMinutesWatched', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'views', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'likes', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersGained', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersLost', 'columnType': 'METRIC', 'dataType': 'INTEGER'}], 'rows': [['6s8rZdeGVi4', 6931, 875, 5, 1, 0], ['te_Z1B_f2R0', 5201, 6452, 5, 0, 0], ['9gTkJa7esTc', 4644, 1832, 13, 8, 0], ['DQsWSoFC5Q4', 3298, 2258, 5, 1, 0], ['uvPIvDFaS_M', 2619, 1045, 12, 6, 0]]}\n", | |
"\n", | |
"--- type(response) ---\n", | |
"<class 'dict'>\n", | |
"\n", | |
"--- response.keys() ---\n", | |
"dict_keys(['kind', 'columnHeaders', 'rows'])\n", | |
"\n", | |
"--- rows ---\n", | |
"[['6s8rZdeGVi4', 6931, 875, 5, 1, 0], ['te_Z1B_f2R0', 5201, 6452, 5, 0, 0], ['9gTkJa7esTc', 4644, 1832, 13, 8, 0], ['DQsWSoFC5Q4', 3298, 2258, 5, 1, 0], ['uvPIvDFaS_M', 2619, 1045, 12, 6, 0]]\n", | |
"\n", | |
"--- header ---\n", | |
"[{'name': 'video', 'columnType': 'DIMENSION', 'dataType': 'STRING'}, {'name': 'estimatedMinutesWatched', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'views', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'likes', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersGained', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersLost', 'columnType': 'METRIC', 'dataType': 'INTEGER'}]\n", | |
"\n", | |
"--- data1 ---\n", | |
"1つめのvideo: 6s8rZdeGVi4, 視聴時間: 6931, View: 875, likes: 5, お気に入り登録数: 1, 失ったお気に入り登録数: 0\n" | |
], | |
"name": "stdout" | |
} | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "0c2sFotP43Yh", | |
"colab_type": "code", | |
"outputId": "dc7fdd87-9c28-4cf0-d127-a95955e9bb8d", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 165 | |
} | |
}, | |
"source": [ | |
"response" | |
], | |
"execution_count": 0, | |
"outputs": [ | |
{ | |
"output_type": "error", | |
"ename": "NameError", | |
"evalue": "ignored", | |
"traceback": [ | |
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", | |
"\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", | |
"\u001b[0;32m<ipython-input-32-ab0153f39f33>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mresponse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", | |
"\u001b[0;31mNameError\u001b[0m: name 'response' is not defined" | |
] | |
} | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "g38ixRQP-0lY", | |
"colab_type": "code", | |
"colab": {} | |
}, | |
"source": [ | |
"# 変数の外部利用 global\n", | |
"def execute_api_request(client_library_function, **kwargs):\n", | |
" global response\n", | |
" response = client_library_function(\n", | |
" **kwargs\n", | |
" ).execute()\n", | |
"\n", | |
" print(\"--- response ---\")\n", | |
" print(response)\n", | |
" print(\"\\n--- type(response) ---\")\n", | |
" print(type(response))\n", | |
" print(\"\\n--- response.keys() ---\")\n", | |
" print(response.keys())\n", | |
"\n", | |
" rows = response[u'rows']\n", | |
" header = response[u'columnHeaders']\n", | |
" print(\"\\n--- rows ---\")\n", | |
" print(rows)\n", | |
" print(\"\\n--- header ---\")\n", | |
" print(header)\n", | |
" data1 = rows[0][0]\n", | |
" print(\"\\n--- data1 ---\")\n", | |
" print(\"1つめのvideo: \" + data1 + \", 視聴時間: \" + str(rows[0][1]) + \", View: \" + str(rows[0][2]) + \", likes: \" + str(rows[0][3]) + \", お気に入り登録数: \" + str(rows[0][4]) + \", 失ったお気に入り登録数: \" + str(rows[0][5]) )\n", | |
"\n", | |
"if __name__ == '__main__':\n", | |
" os.environ['OAUTHLIB_INSECURE_TRANSPORT'] = '1'\n", | |
"\n", | |
" youtubeAnalytics = get_service()\n", | |
" \n", | |
" execute_api_request(\n", | |
" youtubeAnalytics.reports().query,\n", | |
" ids='channel==MINE',\n", | |
" maxResults = '5',\n", | |
" startDate='2019-01-01',\n", | |
" endDate='2019-12-31',\n", | |
" metrics='estimatedMinutesWatched,views,likes,subscribersGained,subscribersLost',\n", | |
" dimensions='video',\n", | |
" sort='-estimatedMinutesWatched'\n", | |
" )\n" | |
], | |
"execution_count": 0, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "NnThOeSJMFoV", | |
"colab_type": "code", | |
"outputId": "26e11ad2-a314-4397-892b-ae708c131ccc", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 295 | |
} | |
}, | |
"source": [ | |
"response" | |
], | |
"execution_count": 0, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"data": { | |
"text/plain": [ | |
"{'columnHeaders': [{'columnType': 'DIMENSION',\n", | |
" 'dataType': 'STRING',\n", | |
" 'name': 'video'},\n", | |
" {'columnType': 'METRIC',\n", | |
" 'dataType': 'INTEGER',\n", | |
" 'name': 'estimatedMinutesWatched'},\n", | |
" {'columnType': 'METRIC', 'dataType': 'INTEGER', 'name': 'views'},\n", | |
" {'columnType': 'METRIC', 'dataType': 'INTEGER', 'name': 'likes'},\n", | |
" {'columnType': 'METRIC', 'dataType': 'INTEGER', 'name': 'subscribersGained'},\n", | |
" {'columnType': 'METRIC', 'dataType': 'INTEGER', 'name': 'subscribersLost'}],\n", | |
" 'kind': 'youtubeAnalytics#resultTable',\n", | |
" 'rows': [['6s8rZdeGVi4', 6931, 875, 5, 1, 0],\n", | |
" ['te_Z1B_f2R0', 5201, 6452, 5, 0, 0],\n", | |
" ['9gTkJa7esTc', 4644, 1832, 13, 8, 0],\n", | |
" ['DQsWSoFC5Q4', 3298, 2258, 5, 1, 0],\n", | |
" ['uvPIvDFaS_M', 2619, 1045, 12, 6, 0]]}" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
}, | |
"execution_count": 35 | |
} | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "27PO5EOdMMCi", | |
"colab_type": "code", | |
"outputId": "fe2c3156-e5f5-45e5-8c27-fae42dc3b35e", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 765 | |
} | |
}, | |
"source": [ | |
"# 定期的に YouTube Analytics データを取得\n", | |
"# 変数の外部利用 global\n", | |
"\n", | |
"import time\n", | |
"\n", | |
"def execute_api_request(client_library_function, **kwargs):\n", | |
" global response\n", | |
" response = client_library_function(\n", | |
" **kwargs\n", | |
" ).execute()\n", | |
"\n", | |
"if __name__ == '__main__':\n", | |
" os.environ['OAUTHLIB_INSECURE_TRANSPORT'] = '1'\n", | |
"\n", | |
" youtubeAnalytics = get_service()\n", | |
" \n", | |
" while True:\n", | |
" try:\n", | |
" execute_api_request(\n", | |
" youtubeAnalytics.reports().query,\n", | |
" ids='channel==MINE',\n", | |
" maxResults = '5',\n", | |
" startDate='2020-01-01',\n", | |
" endDate='2020-01-31',\n", | |
" metrics='estimatedMinutesWatched,views,likes,subscribersGained,subscribersLost',\n", | |
" dimensions='video',\n", | |
" sort='-estimatedMinutesWatched'\n", | |
" )\n", | |
"\n", | |
" print(response)\n", | |
" print(\"YoTube Analytics APIデータ取得OK!\")\n", | |
" time.sleep(120)\n", | |
"\n", | |
" except:\n", | |
" print(\"APIデータ取得エラー\")" | |
], | |
"execution_count": 0, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"text": [ | |
"Please visit this URL to authorize this application: https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=382784964069-0u3vvubopdb8npbqegfair2fovcncnd7.apps.googleusercontent.com&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fyt-analytics.readonly&state=VNd2cZnIh51e7tt9u6ht7vP3RF8Bj1&prompt=consent&access_type=offline\n", | |
"{'kind': 'youtubeAnalytics#resultTable', 'columnHeaders': [{'name': 'video', 'columnType': 'DIMENSION', 'dataType': 'STRING'}, {'name': 'estimatedMinutesWatched', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'views', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'likes', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersGained', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersLost', 'columnType': 'METRIC', 'dataType': 'INTEGER'}], 'rows': [['6s8rZdeGVi4', 1586, 186, 1, 0, 0], ['9gTkJa7esTc', 539, 195, 3, 0, 0], ['QzusdZf--qM', 270, 32, 0, 0, 0], ['M9vIBIoPznE', 209, 42, 0, 1, 0], ['1qDX9SQblo0', 175, 26, 0, 0, 0]]}\n", | |
"YoTube Analytics APIデータ取得OK!\n", | |
"{'kind': 'youtubeAnalytics#resultTable', 'columnHeaders': [{'name': 'video', 'columnType': 'DIMENSION', 'dataType': 'STRING'}, {'name': 'estimatedMinutesWatched', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'views', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'likes', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersGained', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersLost', 'columnType': 'METRIC', 'dataType': 'INTEGER'}], 'rows': [['6s8rZdeGVi4', 1586, 186, 1, 0, 0], ['9gTkJa7esTc', 539, 195, 3, 0, 0], ['QzusdZf--qM', 270, 32, 0, 0, 0], ['M9vIBIoPznE', 209, 42, 0, 1, 0], ['1qDX9SQblo0', 175, 26, 0, 0, 0]]}\n", | |
"YoTube Analytics APIデータ取得OK!\n", | |
"{'kind': 'youtubeAnalytics#resultTable', 'columnHeaders': [{'name': 'video', 'columnType': 'DIMENSION', 'dataType': 'STRING'}, {'name': 'estimatedMinutesWatched', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'views', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'likes', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersGained', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersLost', 'columnType': 'METRIC', 'dataType': 'INTEGER'}], 'rows': [['6s8rZdeGVi4', 1586, 186, 1, 0, 0], ['9gTkJa7esTc', 539, 195, 3, 0, 0], ['QzusdZf--qM', 270, 32, 0, 0, 0], ['M9vIBIoPznE', 209, 42, 0, 1, 0], ['1qDX9SQblo0', 175, 26, 0, 0, 0]]}\n", | |
"YoTube Analytics APIデータ取得OK!\n", | |
"{'kind': 'youtubeAnalytics#resultTable', 'columnHeaders': [{'name': 'video', 'columnType': 'DIMENSION', 'dataType': 'STRING'}, {'name': 'estimatedMinutesWatched', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'views', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'likes', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersGained', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersLost', 'columnType': 'METRIC', 'dataType': 'INTEGER'}], 'rows': [['6s8rZdeGVi4', 1586, 186, 1, 0, 0], ['9gTkJa7esTc', 539, 195, 3, 0, 0], ['QzusdZf--qM', 270, 32, 0, 0, 0], ['M9vIBIoPznE', 209, 42, 0, 1, 0], ['1qDX9SQblo0', 175, 26, 0, 0, 0]]}\n", | |
"YoTube Analytics APIデータ取得OK!\n", | |
"APIデータ取得エラー\n", | |
"{'kind': 'youtubeAnalytics#resultTable', 'columnHeaders': [{'name': 'video', 'columnType': 'DIMENSION', 'dataType': 'STRING'}, {'name': 'estimatedMinutesWatched', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'views', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'likes', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersGained', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersLost', 'columnType': 'METRIC', 'dataType': 'INTEGER'}], 'rows': [['6s8rZdeGVi4', 1586, 186, 1, 0, 0], ['9gTkJa7esTc', 539, 195, 3, 0, 0], ['QzusdZf--qM', 270, 32, 0, 0, 0], ['M9vIBIoPznE', 209, 42, 0, 1, 0], ['1qDX9SQblo0', 175, 26, 0, 0, 0]]}\n", | |
"YoTube Analytics APIデータ取得OK!\n", | |
"APIデータ取得エラー\n", | |
"{'kind': 'youtubeAnalytics#resultTable', 'columnHeaders': [{'name': 'video', 'columnType': 'DIMENSION', 'dataType': 'STRING'}, {'name': 'estimatedMinutesWatched', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'views', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'likes', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersGained', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersLost', 'columnType': 'METRIC', 'dataType': 'INTEGER'}], 'rows': [['6s8rZdeGVi4', 1586, 186, 1, 0, 0], ['9gTkJa7esTc', 539, 195, 3, 0, 0], ['QzusdZf--qM', 270, 32, 0, 0, 0], ['M9vIBIoPznE', 209, 42, 0, 1, 0], ['1qDX9SQblo0', 175, 26, 0, 0, 0]]}\n", | |
"YoTube Analytics APIデータ取得OK!\n", | |
"APIデータ取得エラー\n", | |
"{'kind': 'youtubeAnalytics#resultTable', 'columnHeaders': [{'name': 'video', 'columnType': 'DIMENSION', 'dataType': 'STRING'}, {'name': 'estimatedMinutesWatched', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'views', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'likes', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersGained', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersLost', 'columnType': 'METRIC', 'dataType': 'INTEGER'}], 'rows': [['6s8rZdeGVi4', 1586, 186, 1, 0, 0], ['9gTkJa7esTc', 539, 195, 3, 0, 0], ['QzusdZf--qM', 270, 32, 0, 0, 0], ['M9vIBIoPznE', 209, 42, 0, 1, 0], ['1qDX9SQblo0', 175, 26, 0, 0, 0]]}\n", | |
"YoTube Analytics APIデータ取得OK!\n", | |
"{'kind': 'youtubeAnalytics#resultTable', 'columnHeaders': [{'name': 'video', 'columnType': 'DIMENSION', 'dataType': 'STRING'}, {'name': 'estimatedMinutesWatched', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'views', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'likes', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersGained', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersLost', 'columnType': 'METRIC', 'dataType': 'INTEGER'}], 'rows': [['6s8rZdeGVi4', 1586, 186, 1, 0, 0], ['9gTkJa7esTc', 539, 195, 3, 0, 0], ['QzusdZf--qM', 270, 32, 0, 0, 0], ['M9vIBIoPznE', 209, 42, 0, 1, 0], ['1qDX9SQblo0', 175, 26, 0, 0, 0]]}\n", | |
"YoTube Analytics APIデータ取得OK!\n", | |
"{'kind': 'youtubeAnalytics#resultTable', 'columnHeaders': [{'name': 'video', 'columnType': 'DIMENSION', 'dataType': 'STRING'}, {'name': 'estimatedMinutesWatched', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'views', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'likes', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersGained', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersLost', 'columnType': 'METRIC', 'dataType': 'INTEGER'}], 'rows': [['6s8rZdeGVi4', 1586, 186, 1, 0, 0], ['9gTkJa7esTc', 539, 195, 3, 0, 0], ['QzusdZf--qM', 270, 32, 0, 0, 0], ['M9vIBIoPznE', 209, 42, 0, 1, 0], ['1qDX9SQblo0', 175, 26, 0, 0, 0]]}\n", | |
"YoTube Analytics APIデータ取得OK!\n", | |
"{'kind': 'youtubeAnalytics#resultTable', 'columnHeaders': [{'name': 'video', 'columnType': 'DIMENSION', 'dataType': 'STRING'}, {'name': 'estimatedMinutesWatched', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'views', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'likes', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersGained', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersLost', 'columnType': 'METRIC', 'dataType': 'INTEGER'}], 'rows': [['6s8rZdeGVi4', 1586, 186, 1, 0, 0], ['9gTkJa7esTc', 539, 195, 3, 0, 0], ['QzusdZf--qM', 270, 32, 0, 0, 0], ['M9vIBIoPznE', 209, 42, 0, 1, 0], ['1qDX9SQblo0', 175, 26, 0, 0, 0]]}\n", | |
"YoTube Analytics APIデータ取得OK!\n", | |
"{'kind': 'youtubeAnalytics#resultTable', 'columnHeaders': [{'name': 'video', 'columnType': 'DIMENSION', 'dataType': 'STRING'}, {'name': 'estimatedMinutesWatched', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'views', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'likes', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersGained', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersLost', 'columnType': 'METRIC', 'dataType': 'INTEGER'}], 'rows': [['6s8rZdeGVi4', 1586, 186, 1, 0, 0], ['9gTkJa7esTc', 539, 195, 3, 0, 0], ['QzusdZf--qM', 270, 32, 0, 0, 0], ['M9vIBIoPznE', 209, 42, 0, 1, 0], ['1qDX9SQblo0', 175, 26, 0, 0, 0]]}\n", | |
"YoTube Analytics APIデータ取得OK!\n", | |
"{'kind': 'youtubeAnalytics#resultTable', 'columnHeaders': [{'name': 'video', 'columnType': 'DIMENSION', 'dataType': 'STRING'}, {'name': 'estimatedMinutesWatched', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'views', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'likes', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersGained', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersLost', 'columnType': 'METRIC', 'dataType': 'INTEGER'}], 'rows': [['6s8rZdeGVi4', 1586, 186, 1, 0, 0], ['9gTkJa7esTc', 539, 195, 3, 0, 0], ['QzusdZf--qM', 270, 32, 0, 0, 0], ['M9vIBIoPznE', 209, 42, 0, 1, 0], ['1qDX9SQblo0', 175, 26, 0, 0, 0]]}\n", | |
"YoTube Analytics APIデータ取得OK!\n", | |
"{'kind': 'youtubeAnalytics#resultTable', 'columnHeaders': [{'name': 'video', 'columnType': 'DIMENSION', 'dataType': 'STRING'}, {'name': 'estimatedMinutesWatched', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'views', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'likes', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersGained', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersLost', 'columnType': 'METRIC', 'dataType': 'INTEGER'}], 'rows': [['6s8rZdeGVi4', 1586, 186, 1, 0, 0], ['9gTkJa7esTc', 539, 195, 3, 0, 0], ['QzusdZf--qM', 270, 32, 0, 0, 0], ['M9vIBIoPznE', 209, 42, 0, 1, 0], ['1qDX9SQblo0', 175, 26, 0, 0, 0]]}\n", | |
"YoTube Analytics APIデータ取得OK!\n", | |
"{'kind': 'youtubeAnalytics#resultTable', 'columnHeaders': [{'name': 'video', 'columnType': 'DIMENSION', 'dataType': 'STRING'}, {'name': 'estimatedMinutesWatched', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'views', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'likes', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersGained', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersLost', 'columnType': 'METRIC', 'dataType': 'INTEGER'}], 'rows': [['6s8rZdeGVi4', 1586, 186, 1, 0, 0], ['9gTkJa7esTc', 539, 195, 3, 0, 0], ['QzusdZf--qM', 270, 32, 0, 0, 0], ['M9vIBIoPznE', 209, 42, 0, 1, 0], ['1qDX9SQblo0', 175, 26, 0, 0, 0]]}\n", | |
"YoTube Analytics APIデータ取得OK!\n", | |
"{'kind': 'youtubeAnalytics#resultTable', 'columnHeaders': [{'name': 'video', 'columnType': 'DIMENSION', 'dataType': 'STRING'}, {'name': 'estimatedMinutesWatched', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'views', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'likes', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersGained', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersLost', 'columnType': 'METRIC', 'dataType': 'INTEGER'}], 'rows': [['6s8rZdeGVi4', 1586, 186, 1, 0, 0], ['9gTkJa7esTc', 539, 195, 3, 0, 0], ['QzusdZf--qM', 270, 32, 0, 0, 0], ['M9vIBIoPznE', 209, 42, 0, 1, 0], ['1qDX9SQblo0', 175, 26, 0, 0, 0]]}\n", | |
"YoTube Analytics APIデータ取得OK!\n", | |
"{'kind': 'youtubeAnalytics#resultTable', 'columnHeaders': [{'name': 'video', 'columnType': 'DIMENSION', 'dataType': 'STRING'}, {'name': 'estimatedMinutesWatched', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'views', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'likes', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersGained', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersLost', 'columnType': 'METRIC', 'dataType': 'INTEGER'}], 'rows': [['6s8rZdeGVi4', 1586, 186, 1, 0, 0], ['9gTkJa7esTc', 539, 195, 3, 0, 0], ['QzusdZf--qM', 270, 32, 0, 0, 0], ['M9vIBIoPznE', 209, 42, 0, 1, 0], ['1qDX9SQblo0', 175, 26, 0, 0, 0]]}\n", | |
"YoTube Analytics APIデータ取得OK!\n", | |
"{'kind': 'youtubeAnalytics#resultTable', 'columnHeaders': [{'name': 'video', 'columnType': 'DIMENSION', 'dataType': 'STRING'}, {'name': 'estimatedMinutesWatched', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'views', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'likes', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersGained', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersLost', 'columnType': 'METRIC', 'dataType': 'INTEGER'}], 'rows': [['6s8rZdeGVi4', 1586, 186, 1, 0, 0], ['9gTkJa7esTc', 539, 195, 3, 0, 0], ['QzusdZf--qM', 270, 32, 0, 0, 0], ['M9vIBIoPznE', 209, 42, 0, 1, 0], ['1qDX9SQblo0', 175, 26, 0, 0, 0]]}\n", | |
"YoTube Analytics APIデータ取得OK!\n", | |
"{'kind': 'youtubeAnalytics#resultTable', 'columnHeaders': [{'name': 'video', 'columnType': 'DIMENSION', 'dataType': 'STRING'}, {'name': 'estimatedMinutesWatched', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'views', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'likes', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersGained', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersLost', 'columnType': 'METRIC', 'dataType': 'INTEGER'}], 'rows': [['6s8rZdeGVi4', 1586, 186, 1, 0, 0], ['9gTkJa7esTc', 539, 195, 3, 0, 0], ['QzusdZf--qM', 270, 32, 0, 0, 0], ['M9vIBIoPznE', 209, 42, 0, 1, 0], ['1qDX9SQblo0', 175, 26, 0, 0, 0]]}\n", | |
"YoTube Analytics APIデータ取得OK!\n", | |
"{'kind': 'youtubeAnalytics#resultTable', 'columnHeaders': [{'name': 'video', 'columnType': 'DIMENSION', 'dataType': 'STRING'}, {'name': 'estimatedMinutesWatched', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'views', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'likes', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersGained', 'columnType': 'METRIC', 'dataType': 'INTEGER'}, {'name': 'subscribersLost', 'columnType': 'METRIC', 'dataType': 'INTEGER'}], 'rows': [['6s8rZdeGVi4', 1586, 186, 1, 0, 0], ['9gTkJa7esTc', 539, 195, 3, 0, 0], ['QzusdZf--qM', 270, 32, 0, 0, 0], ['M9vIBIoPznE', 209, 42, 0, 1, 0], ['1qDX9SQblo0', 175, 26, 0, 0, 0]]}\n", | |
"YoTube Analytics APIデータ取得OK!\n" | |
], | |
"name": "stdout" | |
} | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "NEvgrwWTOean", | |
"colab_type": "code", | |
"colab": {} | |
}, | |
"source": [ | |
"" | |
], | |
"execution_count": 0, | |
"outputs": [] | |
} | |
] | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment