2016-03-25 9 views
0

Gibt es eine Möglichkeit, .mp3 Links für Youtube-Videos zu bekommen? Ich habe versucht, mehrere Online-Youtube zu MP3-Konverter-Sites, aber es alles nur lädt die Datei im System und gibt keine MP3-Link.herunterladen youtube video im mp3 format in iOS Swift

Oder

Gibt es eine Möglichkeit i-Dateien von einem Link herunterladen kann, kann so sagen, es gibt einige Links wie www.somesongdownloader.com, auf Last dieses Link in Browser MP3-Datei heruntergeladen zu werden. aber wenn ich versuche, dasselbe von meinem ios-code herunterzuladen, lade ich einfach die php-datei und nicht die mp3-datei herunter. unten ist mein Code -

Below Code funktioniert für mp3 Links fein, die ich nicht in der Lage bin für YouTube-Videos zu bekommen, aber dieser Code ist nicht für jede URL arbeiten, die auf Browser herunterladen mp3-Datei gibt -

class func loadFileAsync(url: NSURL, completion:(path:String, 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() 
    } 
} 
+0

Sie müssen die direkte Download-URL von konvertierten mp3 erhalten. Dazu müssen Sie mit dem HTML auf der Webseite der verwendeten URL spielen (um Video in MP3 zu konvertieren). Überprüfen Sie diese http://www.codeproject.com/Tips/587931/YouTube-to-mp .. Dies ist nicht in iOS, aber Sie müssen möglicherweise in ähnlicher Weise arbeiten. – san

+0

Gibt es eine andere Möglichkeit, den direkten Download-Link von konvertierten mp3 zu bekommen? –

+0

Nicht sicher, überprüfen Sie dies einmal http://www.youtubeinmp3.com/api/. – san

Antwort

0

Wie in meinen Kommentaren mit http://www.youtubeinmp3.com/api/ vorgeschlagen, können Sie dies tun.

let videoURL = "http://www.youtube.com/watch?v=KMU0tzLwhbE" 
    let url = NSURL(string: "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 urlString = responseJSON["link"] as! String 
          let directDownloadURL = NSURL(string: urlString) 

          // 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() 

} 

Ich habe keine Fehlerbehandlung durchgeführt, daher müssen Sie diesen Code weiter verfeinern. Aber das wird sicherlich funktionieren. Ich habe es getestet.

+0

Lassen Sie mich wissen, ob dies für Sie funktioniert. – san

+0

Ich habe es bereits versucht und Nein, es hat nicht funktioniert :(, es ist eine Datei herunterladen nicht mp3-Datei. Auch die URL, was wir von http://www.youtubeinmp3.com/api/ erhalten, ist keine mp3-Datei. –

+0

Speichern Sie Ihre Datei mit der Endung als .mp3. Es funktioniert. Sie können es testen, indem Sie die Datei get mit der Endung als .mp3 umbenennen. – san

Verwandte Themen