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.lequgo.LequgoHandler import com.videoapp.tv.engine.xb6v.Xb6vHandler object SourceRegistry { private val handlers = mutableMapOf() 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 = handlers.values.toList() fun init(context: Context) { val configRepo = ConfigRepository(context) val savedConfig = configRepo.getConfig() val xb6vConfig = xb6vConfig() register(Xb6vHandler(xb6vConfig)) register(LequgoHandler()) } 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]" ) }