gpt4 book ai didi

iphone - 在 Objective-C 中以编程方式检测 youtube 视频链接

转载 作者:太空狗 更新时间:2023-10-30 03:37:50 24 4
gpt4 key购买 nike

我需要从 youtube 等视频网站下载并保存视频。我想将它们保存到 iPhone 的视频库中。如何检测视频并将它们保存到库中?我已经检查了一些可用的源代码。这是我在下载操作中所做的,但没有用。

- (IBAction)download {
[downloadButton setEnabled:NO];

[webView setUserInteractionEnabled:NO];

UIUserInterfaceIdiom userInterfaceIdiom = [UIDevice currentDevice].userInterfaceIdiom;

NSString *getURL = @"";

if (userInterfaceIdiom == UIUserInterfaceIdiomPhone) {
getURL = [webView stringByEvaluatingJavaScriptFromString:@"function getURL() {var player = document.getElementById('player'); var video = player.getElementsByTagName('video')[0]; return video.getAttribute('src');} getURL();"];
} else {
getURL = [webView stringByEvaluatingJavaScriptFromString:@"function getURL() {var bh = document.getElementsByClassName('bh'); if (bh.length) {return bh[0].getAttribute('src');} else {var zq = document.getElementsByClassName('zq')[0]; return zq.getAttribute('src');}} getURL();"];
}

NSString *getTitle = [webView stringByEvaluatingJavaScriptFromString:@"function getTitle() {var jm = document.getElementsByClassName('jm'); if (jm.length) {return jm[0].innerHTML;} else {var lp = document.getElementsByClassName('lp')[0]; return lp.childNodes[0].innerHTML;}} getTitle();"];

NSString *getTitleFromChannel = [webView stringByEvaluatingJavaScriptFromString:@"function getTitleFromChannel() {var video_title = document.getElementById('video_title'); return video_title.childNodes[0].innerHTML;} getTitleFromChannel();"];

NSLog(@"%@, %@, %@", getURL, getTitle, getTitleFromChannel);

[webView setUserInteractionEnabled:YES];

NSArray *components = [getTitle componentsSeparatedByCharactersInSet:[[NSCharacterSet alphanumericCharacterSet] invertedSet]];
getTitle = [components componentsJoinedByString:@" "];

if ([getURL length] > 0) {
if ([getTitle length] > 0) {
videoTitle = [getTitle retain];

bar = [[UIDownloadBar alloc] initWithURL:[NSURL URLWithString:getURL]
progressBarFrame:CGRectMake(85.0, 17.0, 150.0, 11.0)
timeout:15
delegate:self];

[bar setProgressViewStyle:UIProgressViewStyleBar];

[toolbar addSubview:bar];
} else {
NSArray *components = [getTitleFromChannel componentsSeparatedByCharactersInSet:[[NSCharacterSet alphanumericCharacterSet] invertedSet]];
getTitleFromChannel = [components componentsJoinedByString:@" "];

if ([getTitleFromChannel length] > 0) {
videoTitle = [getTitleFromChannel retain];

bar = [[UIDownloadBar alloc] initWithURL:[NSURL URLWithString:getURL]
progressBarFrame:CGRectMake(85.0, 17.0, 150.0, 11.0)
timeout:15
delegate:self];

[bar setProgressViewStyle:UIProgressViewStyleBar];

[toolbar addSubview:bar];
} else {
//NSLog(@"%@", [webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('html')[0].innerHTML;"]);

UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"MyTube" message:@"Couldn't get video title." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];

[alertView show];
[alertView release];

[downloadButton setEnabled:YES];
}
}
} else {
//NSLog(@"%@", [webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('html')[0].innerHTML;"]);

UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"MyTube" message:@"Couldn't get MP4 URL." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];

[alertView show];
[alertView release];

[downloadButton setEnabled:YES];
}
}

最佳答案

如果您一直希望它们采用 < object > 格式,这将获取视频 ID。如果它在 iframe 中,则显然需要更改正则表达式。

NSError *error = nil;
NSRegularExpression *regex =
[NSRegularExpression regularExpressionWithPattern:@"<object .*name=\"movie\" value=\"[a-zA-z:\\/]*.com\\/\\w*\\/([A-Za-z0-9\\_-]*).*<\\/object>"
options:NSRegularExpressionCaseInsensitive
error:&error];

[regex enumerateMatchesInString:pageSource options:0 range:NSMakeRange(0, [string length]) usingBlock:^(NSTextCheckingResult *match, NSMatchingFlags flags, BOOL *stop){
NSString *videoID = [pageSource substringWithRange:[match rangeAtIndex:1]];
}];

关于iphone - 在 Objective-C 中以编程方式检测 youtube 视频链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11538207/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com