【发布时间】:2010-12-16 00:01:00
【问题描述】:
有没有人可以从标准 youtube 链接返回的页面中提取直接电影 url?
【问题讨论】:
-
我想我已经看到了一个 FireFox 扩展。您可以挖掘扩展程序的源代码。
有没有人可以从标准 youtube 链接返回的页面中提取直接电影 url?
【问题讨论】:
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];
【讨论】:
如果没有标准支持的 API,您可以通过查看众多网站之一(例如 kipvid)的方式来尝试找出它。但这当然会随着时间而改变。
【讨论】: