pull/1463/head
gedoor 3 years ago
parent eb9581e655
commit 941a21513a
  1. 88
      app/src/main/java/io/legado/app/service/HttpReadAloudService.kt

@ -18,11 +18,11 @@ import kotlinx.coroutines.*
import kotlinx.coroutines.sync.Mutex
import kotlinx.coroutines.sync.withLock
import okhttp3.Response
import org.mozilla.javascript.WrappedException
import timber.log.Timber
import java.io.File
import java.io.FileDescriptor
import java.io.FileInputStream
import java.io.IOException
import java.net.ConnectException
import java.net.SocketTimeoutException
import java.util.*
@ -123,7 +123,7 @@ class HttpReadAloudService : BaseReadAloudService(),
createSilentSound(fileName)
return@forEachIndexed
} else {
try {
runCatching {
createSpeakCache(fileName)
val analyzeUrl = AnalyzeUrl(
httpTts.url,
@ -162,52 +162,46 @@ class HttpReadAloudService : BaseReadAloudService(),
}
}
downloadErrorNo = 0
} catch (e: CancellationException) {
removeSpeakCache(fileName)
//任务取消,不处理
} catch (e: ConcurrentException) {
removeSpeakCache(fileName)
downloadAudio()
} catch (e: ScriptException) {
AppLog.put("tts接口错误\n${e.localizedMessage}", e)
toastOnUi("js错误\n${e.localizedMessage}")
Timber.e(e)
cancel()
stopSelf()
} catch (e: SocketTimeoutException) {
removeSpeakCache(fileName)
downloadErrorNo++
if (playErrorNo > 5) {
createSilentSound(fileName)
} else {
downloadAudio()
}
} catch (e: ConnectException) {
removeSpeakCache(fileName)
downloadErrorNo++
if (playErrorNo > 5) {
createSilentSound(fileName)
} else {
AppLog.put("tts接口网络错误\n${e.localizedMessage}", e)
toastOnUi("tts接口网络错误\n${e.localizedMessage}")
downloadAudio()
}
} catch (e: IOException) {
removeSpeakCache(fileName)
downloadErrorNo++
if (playErrorNo > 5) {
createSilentSound(fileName)
} else {
AppLog.put("tts下载音频错误\n${e.localizedMessage}", e)
toastOnUi("tts下载音频错误\n${e.localizedMessage}")
downloadAudio()
}.onFailure {
when (it) {
is CancellationException -> removeSpeakCache(fileName)
is ConcurrentException -> {
removeSpeakCache(fileName)
delay(it.waitTime.toLong())
downloadAudio()
}
is ScriptException, is WrappedException -> {
AppLog.put("js错误\n${it.localizedMessage}", it)
toastOnUi("js错误\n${it.localizedMessage}")
Timber.e(it)
cancel()
stopSelf()
}
is SocketTimeoutException, is ConnectException -> {
removeSpeakCache(fileName)
downloadErrorNo++
if (playErrorNo > 5) {
val msg = "tts超时或连接错误超过5次\n${it.localizedMessage}"
AppLog.put(msg, it)
toastOnUi(msg)
createSilentSound(fileName)
if (playErrorNo > 10) {
cancel()
stopSelf()
}
} else {
downloadAudio()
}
}
else -> {
removeSpeakCache(fileName)
createSilentSound(fileName)
val msg = "tts下载错误\n${it.localizedMessage}"
AppLog.put(msg, it)
toastOnUi(msg)
Timber.e(it)
}
}
} catch (e: Exception) {
removeSpeakCache(fileName)
createSilentSound(fileName)
AppLog.put("tts接口错误\n${e.localizedMessage}", e)
toastOnUi("tts接口错误\n${e.localizedMessage}")
Timber.e(e)
}
}
}

Loading…
Cancel
Save