مهم: درخواستهای API برای این روش اکنون نیاز به دسترسی به https://www.googleapis.com/auth/youtube.readonly
دامنه دارند.
این روش به شما امکان می دهد بسیاری از گزارش های مختلف Analytics را بازیابی کنید. هر درخواست از پارامترهای پرس و جو برای تعیین شناسه کانال یا مالک محتوا، تاریخ شروع، تاریخ پایان و حداقل یک معیار استفاده می کند. همچنین می توانید پارامترهای پرس و جو اضافی مانند ابعاد، فیلترها و دستورالعمل های مرتب سازی را ارائه دهید.
- معیارها اندازهگیریهای فردی فعالیت کاربر، مانند بازدیدها یا رتبهبندی ویدیوها (پسندیدن و نپسندیدن) هستند.
- ابعاد معیارهای رایجی هستند که برای جمعآوری دادهها استفاده میشوند، مانند تاریخی که فعالیت کاربر در آن اتفاق افتاده یا کشوری که کاربران در آن قرار داشتهاند. در یک گزارش، هر ردیف از داده ها دارای ترکیبی منحصر به فرد از مقادیر ابعاد است.
- فیلترها مقادیر ابعادی هستند که داده های بازیابی را مشخص می کنند. برای مثال، میتوانید دادههای یک کشور خاص، یک ویدیوی خاص یا گروهی از ویدیوها را بازیابی کنید.
توجه: گزارشهای مالک محتوا فقط برای شرکای محتوای YouTube که در برنامه شریک YouTube شرکت میکنند قابل دسترسی است.
موارد استفاده رایج
درخواست
درخواست HTTP
GET https://youtubeanalytics.googleapis.com/v2/reports
همه درخواستهای YouTube Analytics API باید مجاز باشند. راهنمای مجوز نحوه استفاده از پروتکل OAuth 2.0 برای بازیابی نشانه های مجوز را توضیح می دهد.
درخواستهای YouTube Analytics API از حوزههای مجوز زیر استفاده میکنند:
محدوده ها | |
---|---|
https://www.googleapis.com/auth/yt-analytics.readonly | گزارشهای YouTube Analytics را برای محتوای YouTube خود مشاهده کنید. این محدوده دسترسی به معیارهای فعالیت کاربر مانند تعداد بازدید و تعداد رتبهبندی را فراهم میکند. |
https://www.googleapis.com/auth/yt-analytics-monetary.readonly | گزارش های پولی YouTube Analytics را برای محتوای YouTube خود مشاهده کنید. این محدوده دسترسی به معیارهای فعالیت کاربر و معیارهای درآمد تخمینی و عملکرد تبلیغات را فراهم می کند. |
https://www.googleapis.com/auth/youtube | حساب YouTube خود را مدیریت کنید. در YouTube Analytics API، صاحبان کانال از این محدوده برای مدیریت گروهها و موارد گروه YouTube Analytics استفاده میکنند. |
https://www.googleapis.com/auth/youtubepartner | داراییهای YouTube و محتوای مرتبط را در YouTube مشاهده و مدیریت کنید. در YouTube Analytics API، صاحبان محتوا از این محدوده برای مدیریت گروهها و موارد گروه YouTube Analytics استفاده میکنند. |
مولفه های
جداول زیر پارامترهای پرس و جوی مورد نیاز و اختیاری را برای درخواست های API برای بازیابی گزارش های پرس و جو فهرست می کند. پارامترهای پرس و جوی استاندارد فهرست شده در جدول نیز اختیاری هستند و توسط بسیاری از API های Google پشتیبانی می شوند.
مولفه های | ||
---|---|---|
پارامترهای مورد نیاز | ||
endDate | string تاریخ پایان واکشی داده های YouTube Analytics . مقدار باید در قالب YYYY-MM-DD باشد.پاسخ API حاوی دادههایی تا آخرین روز است که تمام معیارهای پرسوجو در زمان درخواست در دسترس هستند. بنابراین، برای مثال، اگر درخواست تاریخ پایان 5 ژوئیه 2017 را مشخص کند، و مقادیر برای همه معیارهای درخواستی فقط تا 3 ژوئیه 2017 در دسترس باشد، این آخرین تاریخی است که دادهها در پاسخ گنجانده شده است. (این درست است حتی اگر داده های برخی از معیارهای درخواستی برای 4 ژوئیه 2017 در دسترس باشد.) توجه: در نسخه 1 API، این پارامتر نامگذاری شده است end-date . | |
ids | string کانال YouTube یا مالک محتوایی را که دادههای YouTube Analytics برای آن بازیابی میکنید، شناسایی میکند.
| |
metrics | string فهرستی از معیارهای YouTube Analytics جدا شده با کاما، مانند views یا likes,dislikes . برای فهرستی از گزارشهایی که میتوانید بازیابی کنید و معیارهای موجود در هر گزارش، به مستندات گزارشهای کانال یا گزارشهای مالک محتوا مراجعه کنید. (سند متریک شامل تعاریفی برای همه معیارها است.) | |
startDate | string تاریخ شروع واکشی داده های YouTube Analytics . مقدار باید در قالب YYYY-MM-DD باشد. توجه: در نسخه 1 API، این پارامتر نامگذاری شده است start-date . | |
پارامترهای اختیاری | ||
currency | string ارزی که API برای تعیین معیارهای درآمد تخمینی زیر استفاده میکند: برآورد درآمد ، تخمین زده درآمد ، تخمین زده شدهRedPartnerRevenue ، درآمد ناخالص ، cpm ، playbackBasedCpm . مقادیری که API برای این معیارها برمیگرداند، تخمینهایی هستند که با استفاده از نرخهای مبادلهای که به صورت روزانه تغییر میکنند محاسبه میشوند. اگر هیچ یک از آن معیارها درخواست نشود، پارامتر نادیده گرفته می شود. مقدار پارامتر یک کد ارز سه حرفی ISO 4217 از لیست ارزهای زیر است. اگر ارز پشتیبانینشده مشخص شده باشد، API یک خطا برمیگرداند. مقدار پیش فرض USD است. | |
dimensions | string فهرستی از ابعاد YouTube Analytics جدا شده با کاما، مانند video یا ageGroup,gender . برای فهرستی از گزارشهایی که میتوانید بازیابی کنید و ابعاد استفادهشده برای آن گزارشها، به مستندات گزارشهای کانال یا گزارشهای مالک محتوا مراجعه کنید. (سند ابعاد شامل تعاریفی برای همه ابعاد است.) | |
filters | string فهرستی از فیلترهایی که باید هنگام بازیابی داده های YouTube Analytics اعمال شوند. مستندات گزارشهای کانال و گزارشهای مالک محتوا ، ابعادی را که میتوان برای فیلتر کردن هر گزارش استفاده کرد، مشخص میکند و سند ابعاد آن ابعاد را تعریف میکند. اگر درخواستی از چندین فیلتر استفاده می کند، آنها را با یک نقطه ویرگول ( ; ) به یکدیگر بپیوندید و جدول نتیجه برگشتی هر دو فیلتر را برآورده می کند. به عنوان مثال، مقدار پارامتر filters video==dMH0bHeiRNg;country==IT فیلتر میکند که مجموعه نتایج را محدود میکند تا شامل دادههای ویدیوی داده شده در ایتالیا باشد.تعیین چندین مقدار برای یک فیلتر API از توانایی تعیین چندین مقدار برای فیلترهای video ، playlist و channel پشتیبانی می کند. برای انجام این کار، یک لیست جدا از ویدیو، لیست پخش یا شناسه کانال مشخص کنید که پاسخ API باید فیلتر شود. به عنوان مثال، مقدار پارامتر video==pd1FJh59zxQ,Zhawgd0REhA;country==IT فیلتر filters کند تا مجموعه نتایج شامل داده های ویدیوهای داده شده در ایتالیا باشد. مقدار پارامتر می تواند تا 500 شناسه را مشخص کند.هنگامی که چندین مقدار را برای یک فیلتر مشخص می کنید، می توانید آن فیلتر را به لیست ابعادی که برای درخواست تعیین می کنید نیز اضافه کنید. این درست است حتی اگر فیلتر به عنوان یک بعد پشتیبانی شده برای یک گزارش خاص فهرست نشده باشد. اگر فیلتر را به لیست ابعاد اضافه کنید، API نیز از مقادیر فیلتر برای گروه بندی نتایج استفاده می کند. برای مثال، فرض کنید گزارش منبع ترافیک یک کانال را بازیابی میکنید، که آمار بازدید را بر اساس روشی که بینندگان به محتوای ویدیوی کانال رسیدهاند، جمعآوری میکند. همچنین فرض کنید درخواست پارامتر filters درخواست شما فهرستی از 10 ویدیو را مشخص می کند که داده ها باید برای آنها بازگردانده شود.
| |
includeHistoricalChannelData | boolean توجه: این پارامتر فقط برای گزارشهای مالک محتوا اعمال میشود. نشان میدهد که آیا پاسخ API باید شامل زمان تماشای کانال و دادههای مشاهده از دوره زمانی قبل از پیوند کانالها به مالک محتوا باشد یا خیر. مقدار پارامتر پیشفرض false است، به این معنی که پاسخ API فقط شامل زمان تماشا و دادههای مشاهده از تاریخهایی است که کانالها به مالک محتوا پیوند داده شدهاند.مهم است به خاطر داشته باشید که کانال های مختلف ممکن است در تاریخ های مختلف به صاحب محتوا پیوند داده شده باشند. اگر درخواست API دادهها را برای چندین کانال بازیابی میکند و مقدار پارامتر false است، پاسخ API حاوی دادههایی بر اساس تاریخ پیوند برای هر کانال مربوطه است. اگر مقدار پارامتر true باشد، پاسخ API حاوی داده هایی است که با تاریخ های مشخص شده در درخواست API مطابقت دارند. توجه: در نسخه 1 API، این پارامتر نامگذاری شده است include-historical-channel-data . | |
maxResults | integer حداکثر تعداد ردیف هایی که باید در پاسخ گنجانده شود. توجه: در نسخه 1 API، این پارامتر نامگذاری شده است max-results | |
sort | string فهرستی از ابعاد یا معیارهای جدا شده با کاما که ترتیب مرتبسازی دادههای YouTube Analytics را تعیین میکند. به طور پیش فرض ترتیب مرتب سازی صعودی است. پیشوند - باعث ترتیب مرتب سازی نزولی می شود. | |
startIndex | integer شاخص مبتنی بر 1 اولین موجودی که بازیابی می شود. (مقدار پیش فرض 1 است.) از این پارامتر به عنوان مکانیزم صفحه بندی به همراه پارامتر max-results استفاده کنید. توجه: در نسخه 1 API، این پارامتر نامگذاری شده است start-index | |
پارامترهای استاندارد | ||
access_token | نشانه OAuth 2.0 برای کاربر فعلی.
| |
alt | این پارامتر در نسخه 2 API که فقط از پاسخ های JSON پشتیبانی می کند پشتیبانی نمی شود. قالب داده برای پاسخ API.
| |
callback | عملکرد برگشت به تماس
| |
prettyPrint | پاسخ را با تورفتگی و شکستگی برمیگرداند.
| |
quotaUser | این پارامتر در نسخه 1 API پشتیبانی می شد که اکنون منسوخ شده است. این پارامتر در نسخه 2 API پشتیبانی نمی شود. | |
userIp | این پارامتر در نسخه 1 API پشتیبانی می شد که اکنون منسوخ شده است. این پارامتر در نسخه 2 API پشتیبانی نمی شود. |
درخواست بدن
هنگام فراخوانی این روش، یک بدنه درخواست ارسال نکنید.
واکنش
همانطور که در تعریف پارامتر alt
اشاره شد، API می تواند پاسخ ها را در قالب JSON یا CSV برگرداند. اطلاعات مربوط به بدنه پاسخ برای هر نوع در زیر نشان داده شده است:
{ "kind": "youtubeAnalytics#resultTable", "columnHeaders": [ { "name": string, "dataType": string, "columnType": string }, ... more headers ... ], "rows": [ [ {value}, {value}, ... ] ] }
خواص | |
---|---|
kind | string این مقدار نوع داده های موجود در پاسخ API را مشخص می کند. برای روش query ، مقدار ویژگی kind youtubeAnalytics#resultTable خواهد بود. با این حال، اگر API پشتیبانی از روشهای دیگر را اضافه کند، پاسخهای API برای آن روشها ممکن است مقادیر ویژگیهای kind دیگری را معرفی کنند. |
columnHeaders[] | list این مقدار اطلاعات مربوط به داده های بازگردانده شده در فیلدهای rows را مشخص می کند. هر مورد در لیست columnHeaders ، فیلدی را که در مقدار rows بازگردانده شده است، مشخص میکند که حاوی لیستی از دادههای محدود شده با کاما است.فهرست columnHeaders با ابعاد مشخصشده در درخواست API شروع میشود که با معیارهای مشخصشده در درخواست API دنبال میشود. ترتیب ابعاد و معیارها با ترتیب در درخواست API مطابقت دارد.به عنوان مثال، اگر درخواست API شامل پارامترهای dimensions=ageGroup,gender&metrics=viewerPercentage ، پاسخ API ستونها را به ترتیب برمیگرداند: ageGroup ، gender ، viewerPercentage . |
columnHeaders[]. name | string نام بعد یا متریک. |
columnHeaders[]. columnType | string نوع ستون ( DIMENSION یا METRIC ). |
columnHeaders[]. dataType | string نوع داده در ستون ( STRING ، INTEGER ، FLOAT و غیره). |
rows[] | list لیست شامل تمام ردیف های جدول نتیجه است. هر آیتم در لیست آرایه ای است که حاوی داده های محدود شده با کاما مربوط به یک ردیف از داده ها است. ترتیب فیلدهای داده محدود شده با کاما با ترتیب ستون های فهرست شده در قسمت columnHeaders مطابقت دارد.اگر هیچ داده ای برای پرس و جو داده شده در دسترس نباشد، عنصر rows از پاسخ حذف می شود.پاسخ درخواستی با بعد day حاوی ردیفهایی برای روزهای اخیر نخواهد بود. |
day, views, likes, ... "2012-01-01", 12.0, 3, ... "2012-01-02", 16.0, 2, ... "2012-01-03", 18.0, 8, ... ...
مثال ها
توجه: نمونه کد زیر ممکن است نشان دهنده همه زبان های برنامه نویسی پشتیبانی شده نباشد. برای فهرستی از زبان های پشتیبانی شده، به مستندات کتابخانه های سرویس گیرنده مراجعه کنید.
جاوا اسکریپت
این مثال YouTube Analytics API را برای بازیابی بازدیدهای روزانه و سایر معیارهای کانال کاربر مجاز برای سال تقویم 2017 فراخوانی میکند. نمونه از کتابخانه سرویس گیرنده Google APIs JavaScript استفاده می کند.قبل از اجرای این نمونه به صورت محلی برای اولین بار، باید اعتبارنامه مجوز را برای پروژه خود تنظیم کنید:
- پروژه ای را در Google API Console ایجاد یا انتخاب کنید.
- YouTube Analytics API را برای پروژه خود فعال کنید.
- در بالای صفحه اعتبارنامه ، برگه صفحه رضایت OAuth را انتخاب کنید. یک آدرس ایمیل انتخاب کنید، نام محصول را در صورتی که قبلا تنظیم نشده است وارد کنید و روی دکمه ذخیره کلیک کنید.
- در صفحه Credentials ، روی دکمه Create credentials کلیک کنید و Oauth client ID را انتخاب کنید.
- نوع برنامه کاربردی Web application را انتخاب کنید.
- در قسمت Authorized JavaScript origins، URL را وارد کنید که نمونه کد را از آن ارائه خواهید کرد. برای مثال، میتوانید از چیزی مانند
http://localhost:8000
یاhttp://yourserver.example.com
استفاده کنید. می توانید قسمت Authorized Redirect URIs را خالی بگذارید. - روی دکمه Create کلیک کنید تا ایجاد اعتبارنامه شما به پایان برسد.
- قبل از بستن کادر محاوره ای، شناسه مشتری را کپی کنید، که باید آن را در نمونه کد قرار دهید.
سپس، نمونه را در یک فایل محلی ذخیره کنید. در نمونه، خط زیر را بیابید و YOUR_CLIENT_ID با شناسه مشتری که هنگام تنظیم اعتبار مجوز خود به دست آوردید جایگزین کنید.
gapi.auth2.init({client_id: 'YOUR_CLIENT_ID'});
اکنون، شما برای آزمایش نمونه آماده هستید:
- فایل محلی را از یک مرورگر وب باز کنید و کنسول اشکال زدایی را در مرورگر باز کنید. شما باید صفحه ای را ببینید که دو دکمه را نمایش می دهد.
- برای راه اندازی جریان مجوز کاربر، روی دکمه مجوز و بارگذاری کلیک کنید. اگر به برنامه اجازه بازیابی داده های کانال خود را بدهید، باید خطوط زیر را روی کنسول در مرورگر مشاهده کنید:
Sign-in successful GAPI client loaded for API
- اگر به جای خطوط بالا پیام خطا مشاهده کردید، تأیید کنید که اسکریپت را از URI تغییر مسیر مجاز که برای پروژه خود تنظیم کرده اید بارگیری می کنید و شناسه مشتری خود را همانطور که در بالا توضیح داده شد در کد قرار داده اید.
- برای فراخوانی API روی دکمه اجرا کلیک کنید. در مرورگر باید یک شیء
response
را در کنسول مشاهده کنید. در آن شیء، ویژگیresult
به یک شی نگاشت می شود که حاوی داده های API است.
<script src="https://apis.google.com/js/api.js"></script> <script> function authenticate() { return gapi.auth2.getAuthInstance() .signIn({scope: "https://www.googleapis.com/auth/yt-analytics.readonly"}) .then(function() { console.log("Sign-in successful"); }, function(err) { console.error("Error signing in", err); }); } function loadClient() { return gapi.client.load("https://youtubeanalytics.googleapis.com/$discovery/rest?version=v2") .then(function() { console.log("GAPI client loaded for API"); }, function(err) { console.error("Error loading GAPI client for API", err); }); } // Make sure the client is loaded and sign-in is complete before calling this method. function execute() { return gapi.client.youtubeAnalytics.reports.query({ "ids": "channel==MINE", "startDate": "2017-01-01", "endDate": "2017-12-31", "metrics": "views,estimatedMinutesWatched,averageViewDuration,averageViewPercentage,subscribersGained", "dimensions": "day", "sort": "day" }) .then(function(response) { // Handle the results here (response.result has the parsed body). console.log("Response", response); }, function(err) { console.error("Execute error", err); }); } gapi.load("client:auth2", function() { gapi.auth2.init({client_id: 'YOUR_CLIENT_ID'}); }); </script> <button onclick="authenticate().then(loadClient)">authorize and load</button> <button onclick="execute()">execute</button>
پایتون
این مثال YouTube Analytics API را برای بازیابی بازدیدهای روزانه و سایر معیارهای کانال کاربر مجاز برای سال تقویم 2017 فراخوانی میکند. نمونه از کتابخانه سرویس گیرنده Google APIs Python استفاده می کند.قبل از اجرای این نمونه به صورت محلی برای اولین بار، باید اعتبارنامه مجوز را برای پروژه خود تنظیم کنید:
- پروژه ای را در Google API Console ایجاد یا انتخاب کنید.
- YouTube Analytics API را برای پروژه خود فعال کنید.
- در بالای صفحه اعتبارنامه ، برگه صفحه رضایت OAuth را انتخاب کنید. یک آدرس ایمیل انتخاب کنید، نام محصول را در صورتی که قبلا تنظیم نشده است وارد کنید و روی دکمه ذخیره کلیک کنید.
- در صفحه Credentials ، روی دکمه Create credentials کلیک کنید و Oauth client ID را انتخاب کنید.
- نوع برنامه دیگر را انتخاب کنید، نام "YouTube Analytics API Quickstart" را وارد کنید و روی دکمه ایجاد کلیک کنید.
- برای رد کردن گفتگوی به دست آمده، روی OK کلیک کنید.
- روی دکمه (دانلود JSON) در سمت راست شناسه مشتری کلیک کنید.
- فایل دانلود شده را به دایرکتوری کاری خود منتقل کنید.
همچنین باید Google APIs Client Library را برای Python و چند کتابخانه اضافی نصب کنید:
pip install --upgrade google-api-python-client pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
اکنون، شما برای آزمایش نمونه آماده هستید:
- نمونه کد زیر را در پوشه کاری خود کپی کنید.
- در نمونه، مقدار متغیر
CLIENT_SECRETS_FILE
را بهروزرسانی کنید تا با مکان فایلی که پس از تنظیم اعتبار مجوز دانلود کردهاید مطابقت داشته باشد. - کد نمونه را در یک پنجره ترمینال اجرا کنید:
python yt_analytics_v2.py
- از جریان مجوز عبور کنید. ممکن است جریان احراز هویت به طور خودکار در مرورگر شما بارگیری شود، یا ممکن است لازم باشد URL احراز هویت را در پنجره مرورگر کپی کنید. در پایان جریان مجوز، در صورت لزوم، کد مجوز نمایش داده شده در مرورگر را در پنجره ترمینال خود قرار دهید و روی [بازگشت] کلیک کنید.
- کوئری API اجرا می شود و پاسخ JSON به پنجره ترمینال خروجی می شود.
# -*- coding: utf-8 -*- import os import google.oauth2.credentials import google_auth_oauthlib.flow from googleapiclient.discovery import build from googleapiclient.errors import HttpError from google_auth_oauthlib.flow import InstalledAppFlow SCOPES = ['https://www.googleapis.com/auth/yt-analytics.readonly'] API_SERVICE_NAME = 'youtubeAnalytics' API_VERSION = 'v2' CLIENT_SECRETS_FILE = 'YOUR_CLIENT_SECRET_FILE.json' def get_service(): flow = InstalledAppFlow.from_client_secrets_file(CLIENT_SECRETS_FILE, SCOPES) credentials = flow.run_console() return build(API_SERVICE_NAME, API_VERSION, credentials = credentials) def execute_api_request(client_library_function, **kwargs): response = client_library_function( **kwargs ).execute() print(response) if __name__ == '__main__': # Disable OAuthlib's HTTPs verification when running locally. # *DO NOT* leave this option enabled when running in production. os.environ['OAUTHLIB_INSECURE_TRANSPORT'] = '1' youtubeAnalytics = get_service() execute_api_request( youtubeAnalytics.reports().query, ids='channel==MINE', startDate='2017-01-01', endDate='2017-12-31', metrics='estimatedMinutesWatched,views,likes,subscribersGained' dimensions='day', sort='day' )
آن را امتحان کنید!
از APIs Explorer برای فراخوانی این API و مشاهده درخواست و پاسخ API استفاده کنید.