diff --git a/app/src/main/java/com/skyd/imomoe/model/DataSourceManager.kt b/app/src/main/java/com/skyd/imomoe/model/DataSourceManager.kt index 5e0d8adf..be95d866 100644 --- a/app/src/main/java/com/skyd/imomoe/model/DataSourceManager.kt +++ b/app/src/main/java/com/skyd/imomoe/model/DataSourceManager.kt @@ -3,11 +3,10 @@ package com.skyd.imomoe.model import android.util.Log import android.util.LruCache import com.skyd.imomoe.App -import com.skyd.imomoe.R +import com.skyd.imomoe.BuildConfig import com.skyd.imomoe.model.interfaces.IConst import com.skyd.imomoe.model.interfaces.IRouteProcessor import com.skyd.imomoe.model.interfaces.IUtil -import com.skyd.imomoe.util.Util.showToastOnIOThread import com.skyd.imomoe.util.editor import com.skyd.imomoe.util.sharedPreferences import dalvik.system.DexClassLoader @@ -91,7 +90,7 @@ object DataSourceManager { val jarFile = File(getJarPath()) if (!jarFile.exists() || !jarFile.isFile) { Log.e("DataSourceManager", "useCustomDataSource but jar doesn't exist") - return null + if (!BuildConfig.DEBUG) return null } val optimizedDirectory = File(App.context.getExternalFilesDir(null).toString() + "/DataSourceDex") diff --git a/app/src/main/java/com/skyd/imomoe/util/update/AppUpdateHelper.kt b/app/src/main/java/com/skyd/imomoe/util/update/AppUpdateHelper.kt index 15c59ce3..75e13416 100644 --- a/app/src/main/java/com/skyd/imomoe/util/update/AppUpdateHelper.kt +++ b/app/src/main/java/com/skyd/imomoe/util/update/AppUpdateHelper.kt @@ -49,6 +49,7 @@ class AppUpdateHelper private constructor() { try { val format = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.getDefault()) + format.timeZone = TimeZone.getTimeZone("UTC") val date = format.parse(updatedAt) val s: String = if (date != null) { SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.getDefault()).format(date) diff --git a/app/src/main/res/values-night/colors.xml b/app/src/main/res/values-night/colors.xml new file mode 100644 index 00000000..18364c55 --- /dev/null +++ b/app/src/main/res/values-night/colors.xml @@ -0,0 +1,9 @@ + + + #000000 + #000000 + #B5B5B5 + #B5B5B5 + #B5B5B5 + + \ No newline at end of file diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes_skin.xml similarity index 100% rename from app/src/main/res/values/themes.xml rename to app/src/main/res/values/themes_skin.xml diff --git a/doc/customdatasource/README.md b/doc/customdatasource/README.md index 61622e59..dca54b63 100644 --- a/doc/customdatasource/README.md +++ b/doc/customdatasource/README.md @@ -105,7 +105,7 @@ kotlinx.** 数据源:https://www.yhdmp.net -详细代码和Jar包见下方链接内容。注:此Jar包可直接放入手机相应文件夹(步骤7)供APP使用。 +详细代码和Jar包见下方链接内容。注:此Jar包可直接放入手机相应文件夹(步骤7)供APP使用。**请自行在此仓库检查Jar包更新**。 [自定义数据源示例代码和Jar包](sample/custom) diff --git a/doc/customdatasource/sample/custom/CustomConst.kt b/doc/customdatasource/sample/custom/CustomConst.kt index 3f37510b..b3a3c69b 100644 --- a/doc/customdatasource/sample/custom/CustomConst.kt +++ b/doc/customdatasource/sample/custom/CustomConst.kt @@ -15,9 +15,9 @@ class CustomConst : IConst { override fun MAIN_URL(): String = "https://www.yhdmp.net" - override fun versionName(): String = "1.0.0" + override fun versionName(): String = "1.0.1" - override fun versionCode(): Int = 1 + override fun versionCode(): Int = 2 override fun about(): String { return "数据来源:${MAIN_URL()}" diff --git a/doc/customdatasource/sample/custom/CustomDataSource.jar b/doc/customdatasource/sample/custom/CustomDataSource.jar index 8502efbb..ab629301 100644 Binary files a/doc/customdatasource/sample/custom/CustomDataSource.jar and b/doc/customdatasource/sample/custom/CustomDataSource.jar differ diff --git a/doc/customdatasource/sample/custom/CustomPlayModel.kt b/doc/customdatasource/sample/custom/CustomPlayModel.kt index ba3b6d63..47281216 100644 --- a/doc/customdatasource/sample/custom/CustomPlayModel.kt +++ b/doc/customdatasource/sample/custom/CustomPlayModel.kt @@ -14,6 +14,7 @@ import kotlinx.coroutines.suspendCancellableCoroutine import org.jsoup.Jsoup import org.jsoup.select.Elements import java.lang.ref.SoftReference +import java.net.URLDecoder import kotlin.coroutines.resume import kotlin.coroutines.resumeWithException @@ -61,7 +62,7 @@ class CustomPlayModel : IPlayModel { GettingUtil.instance.activity(activity) .url(url).start(object : GettingCallback { override fun onGettingSuccess(webView: View?, html: String) { - GettingUtil.instance.release() + GettingUtil.instance.release() val document = Jsoup.parse(html) val children: Elements = document.body().children() for (i in children.indices) { @@ -70,7 +71,22 @@ class CustomPlayModel : IPlayModel { var iframeSrc = children[i] .select("[class=bofang]") .select("iframe")[0].attr("src") - if (iframeSrc.startsWith("/")) iframeSrc = + if (iframeSrc.startsWith("/yxsf/player/ckx1")) { + val videoUrl = URLDecoder.decode( + iframeSrc.substringAfter("url=") + .substringBefore("&"), "UTF-8" + ) + animeEpisodeDataBean.videoUrl = videoUrl + resultVideoUrl = true + if (resultData) cancellableContinuation.resume( + Triple( + playBeanDataList, + episodesList, + playBean + ) + ) + continue + } else if (iframeSrc.startsWith("/")) iframeSrc = MAIN_URL + iframeSrc getVideoUrl(iframeSrc, object : GettingCallback { override fun onGettingSuccess( @@ -230,7 +246,7 @@ class CustomPlayModel : IPlayModel { GettingUtil.instance.activity(activity) .url(url).start(object : GettingCallback { override fun onGettingSuccess(webView: View?, html: String) { - GettingUtil.instance.release() + GettingUtil.instance.release() val document = Jsoup.parse(html) val children: Elements = document.body().children() for (i in children.indices) { @@ -348,7 +364,9 @@ class CustomPlayModel : IPlayModel { webView: View?, url: String?, errorCode: Int ) { GettingUtil.instance.release() - cancellableContinuation.resumeWithException(Exception("onGettingError,url:$url,errorCode:$errorCode")) + cancellableContinuation.resumeWithException( + Exception("onGettingError,url:$url,errorCode:$errorCode") + ) } })