Update HttpReadAloudService.kt
This commit is contained in:
1 parent
a0cc30f914
commit
beb95b6203
1 file changed
+22
-7
@@ -29,7 +29,6 @@ import io.legado.app.R
|
|||||||
import io.legado.app.constant.AppLog
|
import io.legado.app.constant.AppLog
|
||||||
import io.legado.app.constant.AppPattern
|
import io.legado.app.constant.AppPattern
|
||||||
import io.legado.app.data.appDb
|
import io.legado.app.data.appDb
|
||||||
// 核心引用,缺了它构建会挂
|
|
||||||
import io.legado.app.data.entities.Book
|
import io.legado.app.data.entities.Book
|
||||||
import io.legado.app.data.entities.BookChapter
|
import io.legado.app.data.entities.BookChapter
|
||||||
import io.legado.app.data.entities.HttpTTS
|
import io.legado.app.data.entities.HttpTTS
|
||||||
@@ -70,7 +69,7 @@ import kotlin.coroutines.coroutineContext
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 在线朗读
|
* 在线朗读
|
||||||
* (完美匹配版:修复文件名MD5不一致导致的重复下载 + 修复缓存不可见)
|
* (完美匹配版:修复文件名MD5不一致 + 修复缓存不可见 + 修复0分钟不彻底清理)
|
||||||
*/
|
*/
|
||||||
@SuppressLint("UnsafeOptInUsageError")
|
@SuppressLint("UnsafeOptInUsageError")
|
||||||
class HttpReadAloudService : BaseReadAloudService(),
|
class HttpReadAloudService : BaseReadAloudService(),
|
||||||
@@ -493,15 +492,31 @@ class HttpReadAloudService : BaseReadAloudService(),
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 移除缓存文件
|
* 移除缓存文件
|
||||||
|
* 修复逻辑:如果时间设置为0,则不再保护当前章节,退出即全删。
|
||||||
*/
|
*/
|
||||||
private fun removeCacheFile() {
|
private fun removeCacheFile() {
|
||||||
val titleMd5 = MD5Utils.md5Encode16(this.textChapter?.chapter?.title ?: "")
|
val keepTime = AppConfig.audioCacheCleanTime
|
||||||
|
// 只有当时间大于0时,才需要保护当前章节。如果为0,说明用户想彻底不留缓存。
|
||||||
|
val protectCurrentChapter = keepTime > 0
|
||||||
|
val titleMd5 = if (protectCurrentChapter) MD5Utils.md5Encode16(this.textChapter?.chapter?.title ?: "") else ""
|
||||||
|
|
||||||
FileUtils.listDirsAndFiles(ttsFolderPath)?.forEach {
|
FileUtils.listDirsAndFiles(ttsFolderPath)?.forEach {
|
||||||
val isSilentSound = it.length() == 2160L
|
val isSilentSound = it.length() == 2160L
|
||||||
if ((!it.name.startsWith(titleMd5)
|
|
||||||
&& System.currentTimeMillis() - it.lastModified() > AppConfig.audioCacheCleanTime)
|
// 判断逻辑:
|
||||||
|| isSilentSound
|
// 1. 如果是无声文件 -> 删
|
||||||
) {
|
// 2. 如果保留时间设为0 -> 删 (不管是不是当前章节)
|
||||||
|
// 3. 如果保留时间>0 -> 保护当前章节,且只删过期的
|
||||||
|
val shouldDelete = if (keepTime == 0L) {
|
||||||
|
// 模式:即听即焚 (保留时间0)
|
||||||
|
true
|
||||||
|
} else {
|
||||||
|
// 模式:保留一段时间
|
||||||
|
// 条件:(不是当前章节) 且 (时间过期了)
|
||||||
|
!it.name.startsWith(titleMd5) && (System.currentTimeMillis() - it.lastModified() > keepTime)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (shouldDelete || isSilentSound) {
|
||||||
FileUtils.delete(it.absolutePath)
|
FileUtils.delete(it.absolutePath)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user