feat: 添加 SourceRegistry 注册中心
This commit is contained in:
56
app/src/main/java/com/videoapp/tv/engine/SourceRegistry.kt
Normal file
56
app/src/main/java/com/videoapp/tv/engine/SourceRegistry.kt
Normal file
@@ -0,0 +1,56 @@
|
||||
package com.videoapp.tv.engine
|
||||
|
||||
import android.content.Context
|
||||
import com.videoapp.tv.data.ConfigRepository
|
||||
import com.videoapp.tv.data.SiteConfig
|
||||
import com.videoapp.tv.engine.tvcat.TvcatHandler
|
||||
import com.videoapp.tv.engine.xb6v.Xb6vHandler
|
||||
|
||||
object SourceRegistry {
|
||||
|
||||
private val handlers = mutableMapOf<String, SourceHandler>()
|
||||
|
||||
fun register(handler: SourceHandler) {
|
||||
handlers[handler.id] = handler
|
||||
}
|
||||
|
||||
fun get(id: String): SourceHandler = handlers[id]
|
||||
?: throw IllegalArgumentException("Unknown source: $id")
|
||||
|
||||
fun getOrDefault(id: String): SourceHandler? = handlers[id]
|
||||
|
||||
fun getAll(): List<SourceHandler> = handlers.values.toList()
|
||||
|
||||
fun init(context: Context) {
|
||||
val configRepo = ConfigRepository(context)
|
||||
val savedConfig = configRepo.getConfig()
|
||||
val xb6vConfig = xb6vConfig()
|
||||
register(Xb6vHandler(xb6vConfig))
|
||||
register(TvcatHandler())
|
||||
}
|
||||
|
||||
private fun xb6vConfig() = SiteConfig(
|
||||
baseUrl = "https://www.xb6v.com",
|
||||
searchPath = "/e/search/11index.php",
|
||||
searchMethod = "POST",
|
||||
keywordParam = "keyboard",
|
||||
extraParams = mapOf(
|
||||
"show" to "title",
|
||||
"tempid" to "1",
|
||||
"tbname" to "article",
|
||||
"mid" to "1",
|
||||
"dopost" to "search"
|
||||
),
|
||||
resultSelector = "li.post",
|
||||
titleSelector = "h2 a",
|
||||
coverSelector = ".thumbnail img",
|
||||
linkSelector = ".thumbnail a",
|
||||
categorySelector = ".info_category a",
|
||||
dateSelector = ".info_date",
|
||||
episodeSelector = "a.lBtn",
|
||||
sourceSelector = ".playfrom a, .play_source a, .source-list a",
|
||||
sourceEpisodeGroupSelector = ".playlist > ul, .play_list > ul, .episode-list",
|
||||
iframeSelector = ".video iframe",
|
||||
videoSelector = "video source, video[src]"
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user