         lyrics.sort() { $0.position < $1.position }
     }
     
+    init?(metadata: [metadataKey: Any]) {
+        if let lrcURL = metadata[.lyricsURL] as? URL, let lrcContent = try? String(contentsOf: lrcURL) {
+            self.init(lrcContent)
+            self.metadata = metadata
+        }
+        return nil
+    }
+    
     subscript(at position: Double) -> (current:LXLyricsLine?, next:LXLyricsLine?) {
         for (index, line) in lyrics.enumerated() {
             if line.position > position {

    init?(_ lrcContents: String) {
        lyrics = []
        idTags = [:]
        metaData = [:]
        
        guard let regexForIDTag = try? NSRegularExpression(pattern: "\\[[^\\]]+:[^\\]]+\\]") else {
            return

    
    var lyrics: [LXLyricsLine]
    var idTags: [idTagKey: String]
    var metadata: [metadataKey: Any]
    
    var offset: Int {
        get {
