3 Stimmen

YouTube GData-Feed für ein einzelnes Video nach ID laden

Ich versuche, ein Youtube-Video in einem UIWebView abzuspielen, anstatt meine Anwendung zu verlassen.

Google denkt, dass es einfach ist, Erbsen zu essen. http://apiblog.youtube.com/2009/02/youtube-apis-iphone-cool-mobile-apps.html

Ich habe also das GData-Framework und die Header, die gut funktionieren, und ich habe kein Problem damit, Abfragen zu machen, die Video-Feeds der Benutzer zu laden usw.

Was ich aber nicht kann, ist den Feed eines bestimmten Videos zu laden. Ich kenne die IDs der Videos, für die ich die Feeds benötige, im Voraus . Wie lade ich den Feed eines bestimmten Videos?

Ich werde dann der Anweisung von Google folgen:

Grab the video url from the media tag in the API response with the application/x-shockwave-flash type.  

und betten Sie es dann so ein:

// webView is a UIWebView, either initialized programmatically or loaded as part of a xib.

NSString *htmlString = @"<html><head>
<meta name = \"viewport\" content = \"initial-scale = 1.0, user-scalable = no, width = 212\"/></head>
<body style=\"background:#F00;margin-top:0px;margin-left:0px\">
<div><object width=\"212\" height=\"172\">
<param name=\"movie\" value=\"http://www.youtube.com/v/oHg5SJYRHA0&f=gdata_videos&c=ytapi-my-clientID&d=nGF83uyVrg8eD4rfEkk22mDOl3qUImVMV6ramM\"></param>
<param name=\"wmode\" value=\"transparent\"></param>
<embed src=\"http://www.youtube.com/v/oHg5SJYRHA0&f=gdata_videos&c=ytapi-my-clientID&d=nGF83uyVrg8eD4rfEkk22mDOl3qUImVMV6ramM\"
type=\"application/x-shockwave-flash\" wmode=\"transparent\" width=\"212\" height=\"172\"></embed>
</object></div></body></html>";

[webView loadHTMLString:htmlString baseURL:[NSURL URLWithString:@"http://www.your-url.com"]];

Für jede Hilfe wären wir dankbar!

6voto

grobbins Punkte 1564

Wenn Sie einen Feed mit YouTube-Videoeinträgen haben, können Sie auf diese Weise die IDs und Flash-URLs der einzelnen Einträge abrufen:

for (GDataEntryYouTubeVideo *videoEntry in [feed entries]) {
  GDataYouTubeMediaGroup *mediaGroup = [videoEntry mediaGroup];
  NSString *videoID = [mediaGroup videoID];

  NSArray *mediaContents = [mediaGroup mediaContents];
  GDataMediaContent *flashContent =
    [GDataUtilities firstObjectFromArray:mediaContents
                               withValue:@"application/x-shockwave-flash"
                              forKeyPath:@"type"];

  NSLog(@"video ID = %@, flash content URL = %@",
        videoID, [flashContent URLString]);   
}

2voto

Chris Hatton Punkte 771

In genau der gleichen Situation habe ich gerade die Antwort gefunden. Typisch für viele große APIs, gemeinsame Nutzung Anweisungen gehen verloren in der Erklärung der höheren Ebene Zeug - kann frustrierend sein. Zum Glück ist die Info da...

http://code.google.com/apis/youtube/2.0/developers_guide_protocol_video_entries.html

Wir sollten also in der Lage sein, den zurückgegebenen ATOM-Feed an die GData-Bibliothek anzuschließen und die richtige Inhalts-URL für die Verwendung im UIWebView"-ähnlichen Player-Code zu analysieren.

...Grobbins, lesen Sie das nächste Mal die Frage richtig!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X