11

iOS アプリで新しい YouTube API (バージョン 3) を使用する方法を理解しようとしていますが、その方法がわかりません。私はそれについて多くの調査を行いましたが、私が見つけたのは古い API のすべての例とコードであるため、有効ではありません。今までは、新しい API を使用するには、Google Developer Console でプロジェクトを作成する必要があることを理解していました (そして私はそれを行いました)...しかし、コードが記載されたページに送られますが、私は本当に理解していませんそれの使い方。Google API ページへのリンク 私が知る必要があるのは、YouTube ビデオの特定の URL からいくつかの情報を取得する方法です。必要な情報は、「いいね」の総数と「ビュー」の総数です... API 2 を使用すると、非常に簡単に実行できました。それ...しかし、どこから始めればいいのか本当にわかりません...おそらくいくつかの例といくつかのコードでこれを達成する方法を説明できる人はいますか? 多くの人がこの恩恵を受けると確信しています。

4

3 に答える 3

23

この種のリクエストを行うために、Google が提供する iOS クライアントを使用する必要はありません。

  1. API コンソールに移動し、iOS アプリケーション用の新しいシンプル API アクセス キーを生成します。表示されたウィンドウにアプリのバンドル ID を必ず入力してください。または、コマンド ラインから基本的なリクエストと curl を使用してテストするためのサーバー API キーを作成することもできます。

  2. ニーズに合ったエンドポイントを見つけてください。ビデオに関する情報を検索するには、Videos.listメソッドを使用します。

まず、URL を設定します。この URL を例として使用します: https://www.youtube.com/watch?v=AKiiekaEHhI

パラメータの値を指定する必要がありpartます。snippetあなたの質問から、 、contentDetails、および値を渡したいようですstatistics(ただし、いいね! とビューの場合は、実際にはstatistics値のみが必要です)。

次にid、動画 (この場合AKiiekaEHhI、最大 50 個のコンマ区切り ID を追加できます) と API キーを渡します。URL は次のようになります。

https://www.googleapis.com/youtube/v3/videos?part=contentDetails%2C+snippet%2C+statistics&id=AKiiekaEHhI&key={YOUR_API_KEY}

これはAPI Explorerで行うこともできます。

迅速な実装:

// Set up your URL
let youtubeApi = "https://www.googleapis.com/youtube/v3/videos?part=contentDetails%2C+snippet%2C+statistics&id=AKiiekaEHhI&key={YOUR_API_KEY}"
let url = NSURL(string: youtubeApi)

// Create your request
let task = NSURLSession.sharedSession().dataTaskWithURL(url!, completionHandler: { (data, response, error) -> Void in
    do {
        if let jsonResult = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.AllowFragments) as? [String : AnyObject] {

            print("Response from YouTube: \(jsonResult)")
        }
    }
    catch {
        print("json error: \(error)")
    }

})

// Start the request
task.resume()

Objective-C の実装:

(この投稿は をサポートするように編集されていNSURLSessionます。 を使用する実装についてはNSURLConnection、編集履歴を確認してください)

// Set up your URL
NSString *youtubeApi = @"https://www.googleapis.com/youtube/v3/videos?part=contentDetails%2C+snippet%2C+statistics&id=AKiiekaEHhI&key={YOUR_API_KEY}";
NSURL *url = [[NSURL alloc] initWithString:youtubeApi];

// Create your request
NSURLRequest *request = [NSURLRequest requestWithURL:url];

// Send the request asynchronously
[[[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *connectionError) {

    // Callback, parse the data and check for errors
    if (data && !connectionError) {
        NSError *jsonError;
        NSDictionary *jsonResult = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&jsonError];

        if (!jsonError) {
            NSLog(@"Response from YouTube: %@", jsonResult);
        }
    }
}] resume];

ログは次のようになります。

Response from YouTube: {
    etag = "\"NO6QTeg0-3ShswIeqLchQ_mzWJs/AAjIATmVK_8ySsAWwEuNfdZdjW4\"";
    items =     (
                {
            contentDetails =             {
                caption = false;
                definition = hd;
                dimension = 2d;
                duration = PT17M30S;
                licensedContent = 1;
            };
            etag = "\"NO6QTeg0-3ShswIeqLchQ_mzWJs/8v8ee5uPZQa1-ucVdjBdAVXzcZk\"";
            id = AKiiekaEHhI;
            kind = "youtube#video";
            snippet =             {
                categoryId = 20;
                channelId = UCkvdZX3SVgfDW8ghtP1L2Ug;
                channelTitle = "Swordless Link";
                description = "Follow me on Twitter! http://twitter.com/swordlesslink\n\nFollow me on TwitchTV for live video game streaming! http://twitch.tv/swordlesslink";
                liveBroadcastContent = none;
                localized =                 {
                    description = "Follow me on Twitter! http://twitter.com/swordlesslink\n\nFollow me on TwitchTV for live video game streaming! http://twitch.tv/swordlesslink";
                    title = "The Legend of Zelda: Majora's Mask With Glitches - Part 17: Going Against the Flow";
                };
                publishedAt = "2015-05-04T10:01:43.000Z";
                thumbnails =                 {
                    default =                     {
                        height = 90;
                        url = "https://i.ytimg.com/vi/AKiiekaEHhI/default.jpg";
                        width = 120;
                    };
                    high =                     {
                        height = 360;
                        url = "https://i.ytimg.com/vi/AKiiekaEHhI/hqdefault.jpg";
                        width = 480;
                    };
                    medium =                     {
                        height = 180;
                        url = "https://i.ytimg.com/vi/AKiiekaEHhI/mqdefault.jpg";
                        width = 320;
                    };
                    standard =                     {
                        height = 480;
                        url = "https://i.ytimg.com/vi/AKiiekaEHhI/sddefault.jpg";
                        width = 640;
                    };
                };
                title = "The Legend of Zelda: Majora's Mask With Glitches - Part 17: Going Against the Flow";
            };
            statistics =             {
                commentCount = 54;
                dislikeCount = 3;
                favoriteCount = 0;
                likeCount = 265;
                viewCount = 6356;
            };
        }
    );
    kind = "youtube#videoListResponse";
    pageInfo =     {
        resultsPerPage = 1;
        totalResults = 1;
    };
} with error: nil

キーのオブジェクトはitems、リクエストに渡した各動画 ID の情報の配列になります。

この回答を掘り下げることで、必要な情報を得ることができます。例えば:

if let items = jsonResult["items"] as? [AnyObject]? {
    println(items?[0]["statistics"])
}

ビデオの統計の辞書を提供します (ここで、いいねの数とビューの数を取得できます)。

{
    commentCount = 54;
    dislikeCount = 3;
    favoriteCount = 0;
    likeCount = 265;
    viewCount = 6356;
}

これと同じアプローチは、ライブ イベントでも使用できます。

于 2015-05-23T23:25:48.083 に答える