                     );
                     break;
                 }
-                //metas
-                let songTitle = args["song.title"] as? String //can be null
-                let songArtist = args["song.artist"] as? String //can be null
-                let songAlbum = args["song.album"] as? String //can be null
-                let songImage = args["song.image"] as? String //can be null
-                let songImageType = args["song.imageType"] as? String //can be null
-                let songImagePackage = args["song.imagePackage"] as? String //can be null
-                
-                //end-metas
+
                 let respectSilentMode = args["respectSilentMode"] as? Bool ?? false
                 let displayNotification = args["displayNotification"] as? Bool ?? false
                 
-                let audioMetas = AudioMetas(
-                    title: songTitle,
-                    artist: songArtist,
-                    album: songAlbum,
-                    image: songImage,
-                    imageType: songImageType,
-                    imagePackage: songImagePackage
-                )
+                let audioMetas = fetchAudioMetas(from: args)
                 
                 let notifSettings = notificationSettings(from: args)
                 

    
    func onAudioUpdated(path: String, audioMetas: AudioMetas) {
        if(_playingPath == path || (_playingPath == nil && _lastOpenedPath == path)){
            self.audioMetas = audioMetas
            #if os(iOS)
            updateNotif()
            #endif
        }
    }
    
    var currentSongDuration : Float64 = Float64(0.0)

    var nowPlayingInfo = [String: Any]()
    #endif
    
    func updateNotifStatus(playing: Bool, stopped: Bool, rate: Float?) {
        if(self.displayMediaPlayerNotification){
            #if os(iOS)
            if #available(iOS 13.0, *) {
                if(stopped) {
                    MPNowPlayingInfoCenter.default().playbackState = .stopped
                } else {
                    if(playing){
                        MPNowPlayingInfoCenter.default().playbackState = .playing
                    } else {
                        MPNowPlayingInfoCenter.default().playbackState = .paused
                    }
                }
            }
            if(!playing){
                self.nowPlayingInfo[MPNowPlayingInfoPropertyPlaybackRate] = 0
            } else {
                self.nowPlayingInfo[MPNowPlayingInfoPropertyPlaybackRate] = rate
            }
            MPNowPlayingInfoCenter.default().nowPlayingInfo = self.nowPlayingInfo
            #endif
        }
    }
    
    #if os(iOS)
    func updateNotif(audioMetas: AudioMetas?, isPlaying: Bool) {
        self.audioMetas = audioMetas

        if(!self.displayMediaPlayerNotification){
            return
        }
                
        self.nowPlayingInfo.removeAll()
        
        if let t = audioMetas?.title {
