Google APIをつかってみる(初歩の初歩編)


ふとしたことからYouTubeAPIを使う必要が出てきたので、Google APIを久々に触ってみる。

作りたいものはYouTubeで自分がアップロードした動画のリストなどを取得するC#.NETで開発したスタンドアロンアプリ。

一気に解説するのは大変そうなのと、このあたりを解説している日本語ページがまったくなかったで、まずは導入編から。

〔参考資料〕

Google APIs Client Library for .NET (本家)
developers.google.com/api-client-library/dotnet/get_started

書いてあるとおりで動くなら問題ないのだけど、動かないので。

ちなみに以下、開発環境はVisual Studio 2010です。

具体的にはスレッド周りのコードが動きません、たぶん.NETが古いからコンパイルできない。

www.atmarkit.co.jp/ait/articles/1109/30/news126.html

以下、実際に動いたソース。コンソールアプリの新規プロジェクト作成ウィザードからべたっとはりつけてしまっても動くはずです。

using System;
using Google.Apis.Discovery.v1;
using Google.Apis.Discovery.v1.Data;
using Google.Apis.Services;

namespace Discovery.ListAPIs
{
    class Program
    {
        [STAThread]
        static void Main(string[] args)
        {
            Console.WriteLine("Discovery API Sample");
            Console.WriteLine("====================");
            try
            {
//                new Program().Run().Wait();
                new Program().Run();
            }
            catch (AggregateException ex)
            {
                foreach (var e in ex.InnerExceptions)
                {
                    Console.WriteLine("ERROR: " + e.Message);
                }
            }
            Console.WriteLine("Press any key to continue...");
            Console.ReadKey();
        }

//        private async Task Run()
        private void Run()
        {
            // Create the service.
            var service = new DiscoveryService(new BaseClientService.Initializer
            {
                ApplicationName = "Discovery Sample"
                //,
                //                    APIKey = "[API Key]", //今回は必要ない
            });

            // Run the request.
            Console.WriteLine("Executing a list request...");
            //            var result = await service.Apis.List().ExecuteAsync();
            var result = service.Apis.List().ExecuteAsync();

            // Display the results.
            if (result.Result.Items != null)
            {
                foreach (DirectoryList.ItemsData api in result.Result.Items)
                {
                    Console.WriteLine(api.Id + " - " + api.Title);
                }
            }
        }
    }
}

コメントアウトしているところは、本家GoogleAPIのサイトでは非同期関数で実装しているところを、わかりやすく普通の関数で実装しなおしている部分です。

なお、ビルドを通すためにはNuGetを使って必要なライブラリを追加していく必要があります。
NuGetのVisual Studioへのインストールはこちらをご参考。
www.atmarkit.co.jp/fdotnet/chushin/nuget_01/nuget_01_01.html
NuGetで管理できるGoogle APIでどんなライブラリが存在するかはこちらのリンクがわかりやすいです。
NuGetでパッケージ管理できるGoogleAPI一覧

具体的にはNuGetのパッケージマネージャで、以下のコマンドを使ってパッケージをインストールします。

PM> Install-Package Google.Apis
PM> Install-Package Google.Apis.Tasks.v1
PM> Install-Package Google.Apis.Discovery.v1

無事ビルドがとおり、実行すると、利用できるGoogle APIの一覧が表示できます。

Discovery API Sample
====================
Executing a list request...
adexchangebuyer:v1 - Ad Exchange Buyer API
adexchangebuyer:v1.1 - Ad Exchange Buyer API
adexchangebuyer:v1.2 - Ad Exchange Buyer API
adexchangebuyer:v1.3 - Ad Exchange Buyer API
adexchangeseller:v1 - Ad Exchange Seller API
adexchangeseller:v1.1 - Ad Exchange Seller API
adexchangeseller:v2.0 - Ad Exchange Seller API
admin:directory_v1 - Admin Directory API
admin:email_migration_v2 - Email Migration API v2
admin:reports_v1 - Admin Reports API
adsense:v1.2 - AdSense Management API
adsense:v1.3 - AdSense Management API
adsense:v1.4 - AdSense Management API
adsensehost:v4.1 - AdSense Host API
analytics:v2.4 - Google Analytics API
analytics:v3 - Google Analytics API
androidpublisher:v1 - Google Play Android Developer API
androidpublisher:v1.1 - Google Play Android Developer API
androidpublisher:v2 - Google Play Android Developer API
appsactivity:v1 - Google Apps Activity API
appstate:v1 - Google App State API
audit:v1 - Enterprise Audit API
autoscaler:v1beta2 - Google Compute Engine Autoscaler API
bigquery:v2 - BigQuery API
blogger:v2 - Blogger API
blogger:v3 - Blogger API
books:v1 - Books API
calendar:v3 - Calendar API
civicinfo:us_v1 - Google Civic Information API
civicinfo:v1 - Google Civic Information API
civicinfo:v2 - Google Civic Information API
cloudmonitoring:v2beta1 - Cloud Monitoring API
compute:v1 - Compute Engine API
content:v2 - Content API for Shopping
coordinate:v1 - Google Maps Coordinate API
customsearch:v1 - CustomSearch API
datastore:v1beta1 - Google Cloud Datastore API
datastore:v1beta2 - Google Cloud Datastore API
dfareporting:v1 - DFA Reporting API
dfareporting:v1.1 - DFA Reporting API
dfareporting:v1.2 - DFA Reporting API
dfareporting:v1.3 - DFA Reporting API
discovery:v1 - APIs Discovery Service
dns:v1beta1 - Google Cloud DNS API
doubleclickbidmanager:v1 - DoubleClick Bid Manager API
doubleclicksearch:v2 - DoubleClick Search API
drive:v1 - Drive API
drive:v2 - Drive API
freebase:v1-sandbox - Freebase Search
freebase:v1sandbox - Freebase Search
freebase:v1 - Freebase Search
fusiontables:v1 - Fusion Tables API
games:v1 - Google Play Game Services API
gamesManagement:v1management - Google Play Game Services Management API
gan:v1beta1 - Google Affiliate Network API
genomics:v1beta - Genomics API
gmail:v1 - Gmail API
groupsmigration:v1 - Groups Migration API
groupssettings:v1 - Groups Settings API
identitytoolkit:v3 - Google Identity Toolkit API
licensing:v1 - Enterprise License Manager API
manager:v1beta2 - Deployment Manager API
mapsengine:exp2 - Google Maps Engine API
mapsengine:v1 - Google Maps Engine API
mirror:v1 - Google Mirror API
oauth2:v1 - Google OAuth2 API
oauth2:v2 - Google OAuth2 API
pagespeedonline:v1 - PageSpeed Insights API
plus:v1 - Google+ API
plusDomains:v1 - Google+ Domains API
prediction:v1.2 - Prediction API
prediction:v1.3 - Prediction API
prediction:v1.4 - Prediction API
prediction:v1.5 - Prediction API
prediction:v1.6 - Prediction API
pubsub:v1beta1 - Cloud Pub/Sub API
qpxExpress:v1 - QPX Express API
replicapool:v1beta1 - Replica Pool API
reseller:v1sandbox - Enterprise Apps Reseller API
reseller:v1 - Enterprise Apps Reseller API
resourceviews:v1beta1 - Resource Views API
resourceviews:v1beta2 - Resource Views API
siteVerification:v1 - Google Site Verification API
spectrum:v1explorer - Google Spectrum Database API
sqladmin:v1beta1 - Cloud SQL Administration API
sqladmin:v1beta3 - Cloud SQL Administration API
storage:v1 - Cloud Storage API
storage:v1beta1 - Cloud Storage API
storage:v1beta2 - Cloud Storage API
taskqueue:v1beta1 - TaskQueue API
taskqueue:v1beta2 - TaskQueue API
tasks:v1 - Tasks API
translate:v2 - Translate API
urlshortener:v1 - URL Shortener API
webfonts:v1 - Google Fonts Developer API
webmasters:v3 - Webmaster Tools API
youtube:v3 - YouTube Data API
youtubeAnalytics:v1 - YouTube Analytics API
youtubeAnalytics:v1beta1 - YouTube Analytics API
Press any key to continue...

さてこれでYouTube Data API v3.0が利用できますね。

このあたりはまた今度。

 

追記:プロジェクトはGithubでも公開しておきましたので、ご活用ください。

github.com/kaitas/ShiraiLabOpen/tree/master/GoogleAPIs/GoogleAPIsListing