如何获取 MPMediaItem(歌曲)收听时间(日期)

Posted

技术标签:

【中文标题】如何获取 MPMediaItem(歌曲)收听时间(日期)【英文标题】:How to get MPMediaItem (song) listening times (dates) 【发布时间】:2014-04-30 21:44:58 【问题描述】:

我想获取某段时间内歌曲的收听时间。使用MPMediaItemPropertyLastPlayedDate,我只得到最后一次播放歌曲的日期,所以如果我每天多次播放歌曲,只有最后一次才算。 基本上,我想做的是在某个时期(例如最后两天)获取用户的收听历史。 还有MPMediaItemPropertyPlayCount,我得到了总的播放次数。

有什么想法吗?

谢谢。

【问题讨论】:

【参考方案1】:

我现在正在处理这个问题。我的(Swift 代码)是:

func getPlaysSince(since:NSDate, onSuccess: (tracks: [MediaItem])->(), onFail: (error: NSError?)->()) 

    var rValue = [MediaItem]()
    let timeInterval = since.timeIntervalSince1970
    let query = MPMediaQuery.songsQuery()
    let songs = query.items
    Logger.logMessage(domain: "Data", level: .Minor, "Checking \(songs.count) songs for those since \(since)")
    let then = NSDate()
    for song in songs 
        if let lastPlayedDate = song.lastPlayedDate 
            if lastPlayedDate != nil 
                if lastPlayedDate.timeIntervalSince1970 > timeInterval 
                    Logger.logMessage(domain: "Data", level: .Minor, "\(song.title) at \(lastPlayedDate)")
                    let item:MediaItem = MediaItem(mediaItem: song as! MPMediaItem)
                    rValue.append(item)
                
            
        
    
    let taken = NSDate().timeIntervalSinceDate(then)
    Logger.logMessage(domain: "Data", level: .Minor, "scanned in \(taken) seconds")

    onSuccess(tracks: rValue)


我已经包含了我的整个函数,尽管关键行是查询、歌曲和歌曲的分配,然后是 lastPlayedDate 的检查。 lastPlayedDate 可以为零(以前从未播放过这首歌)。

此代码正在对我的整个库 5K 歌曲进行全面检查,大约需要 3 秒。就我而言,我只对“自从”以来的游戏历史感兴趣

【讨论】:

附言。抱歉,我的回复晚了大约一年,但我今天才开始处理这个问题。您可能已经自己弄清楚了。我没有在网上找到很多方法,所以这可能仍然对某人有所帮助【参考方案2】:

使用它来获取 MPMediaItem 的持续时间。

MPMediaItem *song;
NSNumber *duration= [song valueForProperty:MPMediaItemPropertyPlaybackDuration];

【讨论】:

我对持续时间不感兴趣......而只是每个歌曲项目的播放时间和日期

以上是关于如何获取 MPMediaItem(歌曲)收听时间(日期)的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SwiftUI 列表中显示 MPMediaItem 图稿?

MPMediaItem 到 AVAsset 到 .MP3

如何从 Facebook/Spotify 获取音乐收听数据?

从 iOS 上的音乐库中获取所有歌曲

获取 MPMediaItem 的 iTunes URL

将 MPMediaItem 添加到 MPMediaItemCollectino