2009-11-12 65 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)是如何实现的。但是这当然会随着时间而改变。