download une video youtube au format mp3 dans iOS Swift

Est-il possible d'get des liens .mp3 pour les videos de YouTube? J'ai essayé plusieurs sites de conversion de youtube en mp3 mais il télécharge simplement le file dans le système et ne donne aucun lien mp3.

Ou

Est-il possible que je peux download des files à partir d'un lien, alors disons qu'il ya un lien comme www.somesongdownloader.com, sur le chargement de ce lien dans le file mp3 du browser est téléchargé. mais si j'essaye de download le même de mon code d'ios son téléchargement juste le dossier de php pas le file mp3. ci-dessous est mon code –

Ci-dessous le code fonctionne bien pour les liens mp3 que je ne suis pas en mesure d'get pour les videos YouTube, mais ce code ne fonctionne pas pour toute URL qui donne un file mp3 à download sur le browser –

class func loadFileAsync(url: NSURL, completion:(path:Ssortingng, error:NSError!) -> Void) { print("Inside loadFileAsync") let documentsUrl = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask).first! let destinationUrl = documentsUrl.URLByAppendingPathComponent(url.lastPathComponent!) if NSFileManager().fileExistsAtPath(destinationUrl.path!) { print("file already exists [\(destinationUrl.path!)]") completion(path: destinationUrl.path!, error:nil) } else { let sessionConfig = NSURLSessionConfiguration.defaultSessionConfiguration() let session = NSURLSession(configuration: sessionConfig, delegate: nil, delegateQueue: nil) let request = NSMutableURLRequest(URL: url) request.HTTPMethod = "GET" let task = session.dataTaskWithRequest(request, completionHandler: { (data: NSData?, response: NSURLResponse?, error: NSError?) -> Void in if (error == nil) { if let response = response as? NSHTTPURLResponse { print("response=\(response)") if response.statusCode == 200 { if data!.writeToURL(destinationUrl, atomically: true) { print("file saved [\(destinationUrl.path!)]") completion(path: destinationUrl.path!, error:error) } else { print("error saving file") let error = NSError(domain:"Error saving file", code:1001, userInfo:nil) completion(path: destinationUrl.path!, error:error) } } } } else { print("Failure: \(error!.localizedDescription)"); completion(path: destinationUrl.path!, error:error) } }) task.resume() } } 

Comme suggéré dans mes commentaires, en utilisant http://www.youtubeinmp3.com/api/ vous pouvez le faire.

  let videoURL = "http://www.youtube.com/watch?v=KMU0tzLwhbE" let url = NSURL(ssortingng: "http://www.youtubeinmp3.com/fetch/?format=JSON&video=\(videoURL)") let sessionConfig = NSURLSessionConfiguration.defaultSessionConfiguration() let session = NSURLSession(configuration: sessionConfig, delegate: nil, delegateQueue: nil) let request = NSMutableURLRequest(URL: url!) request.HTTPMethod = "GET" let task = session.dataTaskWithRequest(request, completionHandler: { (data: NSData?, response: NSURLResponse?, error: NSError?) -> Void in if (error == nil) { if let response = response as? NSHTTPURLResponse { print("response=\(response)") if response.statusCode == 200 { if data != nil { do { let responseJSON = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.AllowFragments) as! NSDictionary; let urlSsortingng = responseJSON["link"] as! Ssortingng let directDownloadURL = NSURL(ssortingng: urlSsortingng) // Call your method loadFileAsync YourClass.loadFileAsync(directDownloadURL!, completion: { (path, error) -> Void in print(path) }) } catch let JSONError as NSError { print("\(JSONError)") } catch { print("unknown error in JSON Parsing"); } } } } } else { print("Failure: \(error!.localizedDescription)"); } }) task.resume() } 

Je n'ai pas fait de gestion des erreurs, donc vous devez affiner ce code. Mais cela fonctionnera sûrement. Je l'ai testé.