ID3 tags with Swift

后端 未结 1 1349
旧巷少年郎
旧巷少年郎 2020-12-29 09:23

I\'m looking for a way to modify ID3 tags with Swift. More specifically, I want to write the Album Art image to an mp3/m4a file.

A Swift library would be the best,

相关标签:
1条回答
  • 2020-12-29 10:20

    I was faced with this same problem over and over so I decided to make a swift framework for it. You can find it here: https://github.com/philiphardy/ID3Edit

    Add it into your Xcode project and then make sure to embed it by going to your project settings > General > Embedded Binaries

    Here is how to implement it in your code:

    import ID3Edit
    ...
    do
    {
       // Open the file
       let mp3File = try MP3File(path: "/Users/Example/Music/example.mp3")
       // Use MP3File(data: data) data being an NSData object
       // to load an MP3 file from memory
       // NOTE: If you use the MP3File(data: NSData?) initializer make
       //       sure to set the path before calling writeTag() or an
       //       exception will be thrown
    
       // Get song information
       print("Title:\t\(mp3File.getTitle())")
       print("Artist:\t\(mp3File.getArtist())")
       print("Album:\t\(mp3File.getAlbum())")
       print("Lyrics:\n\(mp3File.getLyrics())")
    
       let artwork = mp3File.getArtwork()
    
       // Write song information
       mp3File.setTitle("The new song title")
       mp3File.setArtist("The new artist")
       mp3File.setAlbum("The new album")
       mp3File.setLyrics("Yeah Yeah new lyrics")
    
       if let newArt = NSImage(contentsOfFile: "/Users/Example/Pictures/example.png")
       {
              mp3File.setArtwork(newArt, isPNG: true)
       }
       else
       {
              print("The artwork referenced does not exist.")
       }
    
       // Save the information to the mp3 file
       mp3File.writeTag() // or mp3.getMP3Data() returns the NSData
                          // of the mp3 file
    }
    catch ID3EditErrors.FileDoesNotExist
    {
       print("The file does not exist.")
    }
    catch ID3EditErrors.NotAnMP3
    {
       print("The file you attempted to open was not an mp3 file.")
    }
    catch {}
    
    0 讨论(0)
提交回复
热议问题