wake-up-neo.com

Wie benutze ich YouTube API V3?

Ich versuche herauszufinden, wie ich die neue YouTube-API (Version 3) in meiner iOS-App verwenden kann, aber ich weiß nicht, wie das geht. Ich habe viel darüber recherchiert, aber ich habe alle Beispiele und Codes für ältere APIs gefunden, damit sie nicht gültig sind. Bis jetzt habe ich verstanden, dass Sie für die Verwendung der neuen API ein Projekt in Google Developer Console erstellen müssen (und ich habe es getan) ... aber dann schicken sie Sie auf eine Seite mit etwas Code, aber ich verstehe das wirklich nicht wie man es benutzt Link zur Google-API-Seite Was ich wissen muss, ist, wie man einige Informationen von einer bestimmten URL eines YouTube-Videos abruft. Die Informationen, die ich brauche, sind die Gesamtzahl der "Gefällt mir" und die Gesamtzahl der "Aufrufe" ... Mit API 2 war es sehr einfach zu tun ... aber jetzt weiß ich wirklich nicht wo ich anfangen soll ... Gibt es jemanden, der bitte erklären kann, wie man dies mit einigen Beispielen und etwas Code erreicht? Ich bin mir ziemlich sicher, dass viele Leute davon profitieren werden.

9
Blue

Sie müssen nicht den von Google bereitgestellten iOS-Client verwenden, um solche Anfragen zu stellen.

  1. Navigieren Sie zur API Console und generieren Sie einen neuen Simple API Access-Schlüssel für Ihre iOS-Anwendung. Geben Sie unbedingt die Bundle-ID Ihrer App in das bereitgestellte Fenster ein. Alternativ können Sie einen Server-API-Schlüssel zum Testen mit Basisanforderungen und für das Curl von der Befehlszeile aus erstellen.

  2. Finden Sie den relevanten Endpunkt für Ihre Bedürfnisse. Um Informationen zu einem Video zu erhalten, verwenden Sie die Methode Videos.list .

Richten Sie zuerst Ihre URL ein. Ich werde diese URL als Beispiel verwenden: https://www.youtube.com/watch?v=AKiiekaEHhI

Sie möchten einen Wert für den Parameter part angeben. Aus Ihrer Frage sieht es so aus, als würden Sie die Werte snippet, contentDetails und statistics übergeben (obwohl Sie für Likes und Views wirklich nur den Wert statistics benötigen).

Übergeben Sie dann die id Ihres Videos (in diesem Fall AKiiekaEHhI können Sie bis zu 50 durch Kommas getrennte IDs hinzufügen) und Ihren API-Schlüssel. Ihre URL sollte ungefähr so ​​aussehen:

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

Sie können dies auch im API Explorer tun.

Schnelle Umsetzung:

// 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()

Ziel-C-Implementierung:

(Dieser Beitrag wurde zur Unterstützung von NSURLSession bearbeitet. Für eine Implementierung, die NSURLConnection verwendet, überprüfen Sie den Bearbeitungsverlauf.)

// 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];

Ihr Protokoll sieht ungefähr so ​​aus:

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

Das Objekt für den Schlüssel items ist ein Array mit Informationen für jede Video-ID, die Sie an die Anforderung übergeben haben.

Wenn Sie sich in diese Antwort einarbeiten, erhalten Sie die Informationen, die Sie benötigen. Zum Beispiel:

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

Gibt dir ein Wörterbuch der Statistiken des Videos (wo du die Anzahl der Likes und die Anzahl der Aufrufe bekommst).

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

Der gleiche Ansatz kann bei Live-Events verwendet werden.

20
JAL

// Swift 3

func search() {


   let videoType = "video you want to search"

    // can use any text


    var dataArray = [[String: AnyObject]]()
    // store videoid , thumbnial , Title , Description

    var apiKey = "_________________"

     // create api key from google developer console for youtube



        var urlString = "https://www.googleapis.com/youtube/v3/search?part=snippet&q=\(videoType)&type=video&videoSyndicated=true&chart=mostPopular&maxResults=10&safeSearch=strict&order=relevance&order=viewCount&type=video&relevanceLanguage=en&regionCode=GB&key=\(apiKey)"



        urlString = urlString.addingPercentEncoding( withAllowedCharacters: .urlQueryAllowed)!
        let targetURL = URL(string: urlString)

        let config = URLSessionConfiguration.default // Session Configuration
        let session = URLSession(configuration: config)

        let task = session.dataTask(with: targetURL!) {

            data, response, error in


            if error != nil {

                print(error!.localizedDescription)


                var alert = UIAlertView(title: "alert", message: "No data.", delegate: nil, cancelButtonTitle: "OK")
                alert.show()



                return

            }

            else {




                do {





                    typealias JSONObject = [String:AnyObject]

                    let  json = try JSONSerialization.jsonObject(with: data!, options: []) as! JSONObject
                    let items  = json["items"] as! Array<JSONObject>



                    for i in 0 ..< items.count {

                        let snippetDictionary = items[i]["snippet"] as! JSONObject
                        print(snippetDictionary)
                        // Initialize a new dictionary and store the data of interest.
                        var youVideoDict = JSONObject()

                        youVideoDict["title"] = snippetDictionary["title"]
                        youVideoDict["channelTitle"] = snippetDictionary["channelTitle"]
                        youVideoDict["thumbnail"] = ((snippetDictionary["thumbnails"] as! JSONObject)["high"] as! JSONObject)["url"]
                        youVideoDict["videoID"] = (items[i]["id"] as! JSONObject)["videoId"]






                        dataArray.append(youVideoDict)


                       print(dataArray)



                        // video like can get by videoID.




                    }


                }

                catch {
                    print("json error: \(error)")
                }

            }
        }
        task.resume()









}
4
Hitesh Chauhan

Es ist ziemlich einfach zu benutzen. Sie können es von Javascript verwenden, es gibt ein einfaches Modul in npmjs: https://www.npmjs.com/package/youtube-api-es6

Und seine Referenz fand ich im Internet: https://www.gyanblog.com/gyan/44-youtube-api-nodejs-usage-example

0
Gorav Singal