Fix: extract date from episode text (14.04.2026 클라이맥스 10화), rollback spinner timeout

This commit is contained in:
tvmon-dev
2026-04-15 21:17:26 +09:00
parent aa48060630
commit 211b4740ba
2 changed files with 27 additions and 27 deletions

View File

@@ -444,7 +444,28 @@ class TvmonScraper {
.replace("NEW", "") .replace("NEW", "")
.trim() .trim()
val episodeNumMatch = Pattern.compile("(\\d+)\\s*화|(\\d+)\\s*회|EP\\.?(\\d+)|제\\s*(\\d+)\\s*부").matcher(linkText) val datePattern = Pattern.compile("^(\\d{2})[./](\\d{2})[./](\\d{2,4})\\s+(.+)$|^(\\d{2})[./](\\d{2})[./](\\d{2,4})(.+)$")
val dateMatch = datePattern.matcher(linkText)
var dateStr = ""
var titleStr = cleanLinkText
if (dateMatch.find()) {
val day = dateMatch.group(1) ?: dateMatch.group(5)
val month = dateMatch.group(2) ?: dateMatch.group(6)
val year = dateMatch.group(3) ?: dateMatch.group(7)
val titlePart = dateMatch.group(4) ?: dateMatch.group(8)
if (day != null && month != null && year != null) {
dateStr = if (year.length == 2) {
"20$year/$month/$day"
} else {
"$year/$month/$day"
}
titleStr = titlePart?.trim() ?: cleanLinkText
}
}
val episodeNumMatch = Pattern.compile("(\\d+)\\s*화|(\\d+)\\s*회|EP\\.?(\\d+)|제\\s*(\\d+)\\s*부").matcher(titleStr)
val episodeTitle = if (episodeNumMatch.find()) { val episodeTitle = if (episodeNumMatch.find()) {
episodeNumMatch.group(1) ?: episodeNumMatch.group(2) ?: episodeNumMatch.group(3) ?: episodeNumMatch.group(4) episodeNumMatch.group(1) ?: episodeNumMatch.group(2) ?: episodeNumMatch.group(3) ?: episodeNumMatch.group(4)
} else { } else {
@@ -457,26 +478,9 @@ class TvmonScraper {
episodeIndex++.toString() episodeIndex++.toString()
} }
val dateEl = link.parent()?.parent()?.selectFirst("td, div, span")
var dateStr = ""
if (dateEl != null) {
val dateText = dateEl.text().trim()
val dateMatch = Pattern.compile("(\\d{2})[./](\\d{2})[./](\\d{2,4})").matcher(dateText)
if (dateMatch.find()) {
val day = dateMatch.group(1)
val month = dateMatch.group(2)
val year = dateMatch.group(3)
dateStr = if (year.length == 2) {
"20$year/$month/$day"
} else {
"$year/$month/$day"
}
}
}
episodes.add(Episode( episodes.add(Episode(
number = finalNumber, number = finalNumber,
title = cleanLinkText.ifBlank { finalNumber }, title = titleStr.ifBlank { finalNumber },
url = fullUrl, url = fullUrl,
type = "webview", type = "webview",
date = dateStr date = dateStr

View File

@@ -290,17 +290,13 @@ class PlaybackActivity : AppCompatActivity() {
handler.postDelayed({ handler.postDelayed({
injectEnhancedAutoPlayScript() injectEnhancedAutoPlayScript()
android.util.Log.i("PlaybackActivity", "Enhanced AutoPlay script injected (first)") android.util.Log.i("PlaybackActivity", "Enhanced AutoPlay script injected")
}, 800) }, 800)
handler.postDelayed({ handler.postDelayed({
injectEnhancedAutoPlayScript() runOnUiThread {
android.util.Log.i("PlaybackActivity", "Enhanced AutoPlay script injected (second)") loadingOverlay.visibility = View.GONE
}, 2000) }
handler.postDelayed({
injectEnhancedAutoPlayScript()
android.util.Log.i("PlaybackActivity", "Enhanced AutoPlay script injected (third)")
}, 1500) }, 1500)
} }
} }