2009-11-12 66 views
0

沒有人有從標準的youtube鏈接返回的頁面提取直接電影網址的方式嗎?Youtube和iphone sdk

+0

我想我已經看到了FireFox的擴展。您可以通過源擴展到擴展。 – wkw 2009-11-12 19:01:08

回答

2

NSString *pageString = @"www.youtube.com/watch?v=MOST VIDEOS ARE SUPPORTED"; NSString *agentString = @"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1"; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL: [NSURL URLWithString:pageString]]; [request setValue:agentString forHTTPHeaderField:@"User-Agent"]; NSData *data = [ NSURLConnection sendSynchronousRequest:request returningResponse: nil error: nil ];

NSString *page = [[NSString alloc] initWithBytes: [data bytes] length:[data length] encoding: NSUTF8StringEncoding]; 

NSRange range1 = [page rangeOfString:@"ajax?v="]; 
NSRange range2 = [page rangeOfString:@"&action_get_comments"]; 


NSUInteger lok = range1.location + range1.length; 
NSRange finRange = NSMakeRange(lok, range2.location - lok); 
NSString *subString3 = [page substringWithRange:finRange]; 


range1 = [page rangeOfString:@"\"t\": \""];// "t":" 
range2 = [page rangeOfString:@"\", \"rv.6.id\":"];// ", "rv.6.id": 

lok = range1.location + range1.length; 
finRange = NSMakeRange(lok, range2.location - lok); 
NSString *subString4 = [page substringWithRange:finRange]; 


NSString *demoURL = [NSString stringWithFormat:@"http://www.youtube.com/get_video?video_id=%@&t=%@&fmt=18",subString3,subString4]; 

player = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:demoURL]]; 
[[NSNotificationCenter defaultCenter] 
addObserver: self 
selector: @selector(myMovieFinishedCallback:) 
name: MPMoviePlayerPlaybackDidFinishNotification 
object: player]; 

[player play]; 

0

如果沒有標準支持的API,您可以嘗試通過查看衆多網站中的一個(例如kipvid)是如何實現的。但是這當然會隨着時間而改變。