Necesito descargar y guardar videos de sitios de videos como youtube. Quiero guardarlos en la biblioteca de videos del iPhone. ¿Cómo puedo detectar los videos y guardarlos en la biblioteca? Ya revisé algunos códigos fuente disponibles. Esto es lo que hice en la acción de descarga, pero no está funcionando.detectando enlaces de video de YouTube programáticamente en el objetivo c
- (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];
}
}
también necesito lo mismo porque youtube contiene javascript en lugar de HTTP o HTTPS reqeust – dark
Cuando dice "No está funcionando", puede ser más específico? – Abizern
@alpz ¿Alguna actualización? –