diff --git a/app/src/main/java/com/deniscerri/ytdl/core/stream/StreamProcessExtractor.kt b/app/src/main/java/com/deniscerri/ytdl/core/stream/StreamProcessExtractor.kt index 539393ba..d00d17ed 100644 --- a/app/src/main/java/com/deniscerri/ytdl/core/stream/StreamProcessExtractor.kt +++ b/app/src/main/java/com/deniscerri/ytdl/core/stream/StreamProcessExtractor.kt @@ -13,9 +13,13 @@ internal class StreamProcessExtractor( private val stream: InputStream, private val callback: ((Float, Long, String) -> Unit)? ) : Thread() { - private val p = Pattern.compile("\\[download\\]\\s+(\\d+\\.\\d)% .* ETA (\\d+):(\\d+)") - private val pAria2c = Pattern.compile("\\[#\\w{6}.*\\((\\d*\\.*\\d+)%\\).*?((\\d+)m)*((\\d+)s)*]") - private val pFFmpeg = Pattern.compile("size=.*") + + companion object { + private val PATTERN_DEFAULT = Pattern.compile("\\[download\\]\\s+(\\d+\\.\\d)% .* ETA (\\d+):(\\d+)") + private val PATTERN_ARIA2C = Pattern.compile("\\[#\\w{6}.*\\((\\d*\\.*\\d+)%\\).*?((\\d+)m)*((\\d+)s)*]") + private val PATTERN_FFMPEG = Pattern.compile("size=.*") + } + private var progress = PERCENT private var eta = ETA @@ -61,17 +65,17 @@ internal class StreamProcessExtractor( } private fun getProgress(line: String): Float { - val matcher = p.matcher(line) + val matcher = PATTERN_DEFAULT.matcher(line) if (matcher.find()) { return matcher.group(GROUP_PERCENT)!!.toFloat().also { progress = it } } - val mAria2c = pAria2c.matcher(line) + val mAria2c = PATTERN_ARIA2C.matcher(line) if (mAria2c.find()) { return mAria2c.group(1)!!.toFloat().also { progress = it } } - val mFFmpeg = pFFmpeg.matcher(line) + val mFFmpeg = PATTERN_FFMPEG.matcher(line) if (mFFmpeg.find()) { return 99f.also { progress = it } } @@ -80,12 +84,12 @@ internal class StreamProcessExtractor( } private fun getEta(line: String): Long { - val matcher = p.matcher(line) + val matcher = PATTERN_DEFAULT.matcher(line) if (matcher.find()) return convertToSeconds( matcher.group(GROUP_MINUTES), matcher.group(GROUP_SECONDS) ).also { eta = it.toLong() }.toLong() else { - val mAria2c = pAria2c.matcher(line) + val mAria2c = PATTERN_ARIA2C.matcher(line) if (mAria2c.find()) return convertToSeconds( mAria2c.group(3), mAria2c.group(5) @@ -107,4 +111,4 @@ internal class StreamProcessExtractor( private const val GROUP_MINUTES = 2 private const val GROUP_SECONDS = 3 } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/deniscerri/ytdl/util/Extensions.kt b/app/src/main/java/com/deniscerri/ytdl/util/Extensions.kt index 19824f2b..b399e84f 100644 --- a/app/src/main/java/com/deniscerri/ytdl/util/Extensions.kt +++ b/app/src/main/java/com/deniscerri/ytdl/util/Extensions.kt @@ -363,7 +363,6 @@ object Extensions { fun String.appendLineToLog(line: String = ""): String { val lines = this.lines().toMutableList() - val finishingProgressLinesRegex = Pattern.compile("\\[download]\\h+(100%|[a-zA-Z])") if (line.isNotBlank()) { var newline = "" @@ -380,13 +379,13 @@ object Extensions { return lines.distinct().filterNot { - ((it.contains("[download") || it.contains(") CN:")) && !finishingProgressLinesRegex.matcher(it).find()) + ((it.contains("[download") || it.contains(") CN:")) && !FINISHING_PROGRESS_LINES_REGEX.matcher(it).find()) || it.contains("does not pass filter (id") }.joinToString("\n") + newline } return lines.filterNot { - ((it.contains("[download") || it.contains(") CN:")) && !finishingProgressLinesRegex.matcher(it).find()) + ((it.contains("[download") || it.contains(") CN:")) && !FINISHING_PROGRESS_LINES_REGEX.matcher(it).find()) || it.contains("does not pass filter (id") }.joinToString("\n") }