You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
现在是通过最后访问时间来决定删除的权重,但问题是那些我听过一次就不再听的歌呢
A 歌我在昨天听了一次,是心动模式刷到的,往后可能就不听了
B 歌是在我歌单里的,之前就听过很多次,上次听正好也是昨天
那么这两首歌的权重一致,这显然不好
我参考 AUR 的 Popularity 和 Zoxide 的 Score 设计出了缓存歌曲的一种新的缓存删除权重:「缓存价值」
文件缓存价值 = 歌曲缓存价值 * 文件大小权重歌曲缓存价值 = 歌曲播放权重 * 歌曲歌单权重歌曲播放权重 = 播放次数因子 * 播放时间权重一个文件的缓存价值越低,就越被优先删除
一个歌曲会产生多个缓存文件,有音乐本身,也有歌词封面什么的
因为这是同一首歌,它们都共享着同一个歌曲缓存价值
我不太擅长数值策划,下面的一些常数的设计可能不是很好,在此仅提供基本思路
当然,这里我考虑的东西确实有点多了,可能会有点复杂
下面我会解释这里的每一个值
文件大小权重
非常容易理解,文件大小越大,其缓存价值越低
文件大小权重 = 1 / log2(文件大小/MB + 1)歌曲歌单权重
非常容易理解,伪代码如下
播放时间权重
由最后一次播放的时间决定(其实我感觉这部分好像不太必要了,因为下面的播放次数因子已经会随时间衰减了)
播放次数因子
歌曲播放因子拥有初始值
0每次开始播放,递增
1单次播放时长达到全歌 60%,递增
1同时,这个数值会随着时间衰减,每过 1 天,这个数值就要
* 0.95这会使得之前的播放因子指数级衰减,同时新的播放还是递增
1,这提高了新播放的权重Beta Was this translation helpful? Give feedback.
All reactions