Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 6 additions & 2 deletions app/src/main/java/me/iacn/biliroaming/BiliBiliPackage.kt
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import java.lang.reflect.Constructor
import java.lang.reflect.Method
import java.lang.reflect.Modifier
import java.lang.reflect.ParameterizedType
import java.util.Objects
import kotlin.math.max
import kotlin.system.measureTimeMillis
import kotlin.time.ExperimentalTime
Expand Down Expand Up @@ -97,8 +98,8 @@ class BiliBiliPackage constructor(private val mClassLoader: ClassLoader, mContex
val chronosSwitchClass by Weak { mHookInfo.chronosSwitch from mClassLoader }
val biliSpaceClass by Weak { "com.bilibili.app.authorspace.api.BiliSpace" from mClassLoader }
val biliVideoDetailClass by Weak {
"tv.danmaku.bili.ui.video.api.BiliVideoDetail" from mClassLoader
?: "tv.danmaku.bili.videopage.data.view.model.BiliVideoDetail" from mClassLoader
("tv.danmaku.bili.ui.video.api.BiliVideoDetail" from mClassLoader)
?: ("tv.danmaku.bili.videopage.data.view.model.BiliVideoDetail" from mClassLoader)
}
val commentSpanTextViewClass by Weak { mHookInfo.commentSpan from mClassLoader }
val commentSpanEllipsisTextViewClass by Weak { "com.bilibili.app.comm.comment2.widget.CommentSpanEllipsisTextView" from mClassLoader }
Expand Down Expand Up @@ -179,6 +180,9 @@ class BiliBiliPackage constructor(private val mClassLoader: ClassLoader, mContex
it.name == "executeRelatesFeed"
} ?: false

private val unitedVideoActivity by Weak { "com.bilibili.ship.theseus.detail.UnitedBizDetailsActivity" from mClassLoader }
val hasUnitedVideoActivity = !Objects.isNull(unitedVideoActivity)

val ids: Map<String, Int> by lazy {
mHookInfo.mapIds.idsMap
}
Expand Down
18 changes: 17 additions & 1 deletion app/src/main/java/me/iacn/biliroaming/hook/PegasusHook.kt
Original file line number Diff line number Diff line change
Expand Up @@ -567,12 +567,28 @@ class PegasusHook(classLoader: ClassLoader) : BaseHook(classLoader) {
}
}
}
// rcmd_reason 推荐理由
if (av.callMethodAs("hasRcmdReason")) {
av.callMethodAs<Any>("getRcmdReason").let { rcmd ->
if (kwdFilterReasonList.isNotEmpty()) {
val reason = rcmd.callMethodAs<String>("getText")
if (kwdFilterReasonRegexMode && reason.isNotEmpty()) {
if (kwdFilterReasonRegexes.any { reason.contains(it) })
shouldFiltered = true
return@let
} else if (reason.isNotEmpty()) {
if (kwdFilterReasonList.any { reason.contains(it) })
shouldFiltered = true
return@let
}
}
}
}
}
if (isContainsBlockKwdUnite(it)) {
shouldFiltered = true
}
}
// todo: support rcmd
}
removeRelateNothing || it.callMethodAs("getRelateCardTypeValue") !in allowTypeList || shouldFiltered
}
Expand Down
65 changes: 38 additions & 27 deletions app/src/main/java/me/iacn/biliroaming/hook/StartActivityHook.kt
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ import android.content.ComponentName
import android.content.Intent
import android.net.Uri
import android.os.Bundle
import me.iacn.biliroaming.BiliBiliPackage
import me.iacn.biliroaming.BiliBiliPackage.Companion.instance
import me.iacn.biliroaming.utils.Log
import me.iacn.biliroaming.utils.hookBeforeAllMethods
import me.iacn.biliroaming.utils.hookBeforeMethod
Expand Down Expand Up @@ -40,35 +42,44 @@ class StartActivityHook(classLoader: ClassLoader) : BaseHook(classLoader) {
false
) && uri.startsWith("bilibili://story/")
) {
intent.data?.let {
try {
val cid = intent.data?.getQueryParameter("player_preload").toJSONObject().getLong("cid")
intent.data = fixIntentUri(Uri.parse(intent.dataString))
// fix extra
val pre = Uri.parse(intent.dataString).buildUpon().clearQuery().build().toString()
val aid = pre.split("/").last().toLong()
intent.removeExtra("player_preload")
intent.putExtra("player_preload", floor(Math.random()*1000000000).toInt().toString())
intent.putExtra("blrouter.targeturl", pre)
intent.putExtra("blrouter.pagename", "bilibili://united_video/")
intent.putExtra("jumpFrom", 7)
intent.putExtra("", aid)
intent.putExtra("aid", aid)
intent.putExtra("cid", cid)
intent.putExtra("bvid", "")
intent.putExtra("from", 7)
intent.putExtra("blrouter.targeturl", pre)
intent.putExtra("blrouter.matchrule", "bilibili://united_video/")
// fix component
intent.component = ComponentName(
intent.component?.packageName ?: packageName,
"com.bilibili.ship.theseus.detail.UnitedBizDetailsActivity"
)
} catch (e: Exception) {
Log.e("replaceStoryVideo fix intent failed!!!")
Log.e(e)
if (instance.hasUnitedVideoActivity) {
intent.data?.let {
try {
val cid = intent.data?.getQueryParameter("player_preload").toJSONObject().getLong("cid")
intent.data = fixIntentUri(Uri.parse(intent.dataString))
// fix extra
val pre = Uri.parse(intent.dataString).buildUpon().clearQuery().build().toString()
val aid = pre.split("/").last().toLong()
intent.removeExtra("player_preload")
intent.putExtra("player_preload", floor(Math.random()*1000000000).toInt().toString())
intent.putExtra("blrouter.targeturl", pre)
intent.putExtra("blrouter.pagename", "bilibili://united_video/")
intent.putExtra("jumpFrom", 7)
intent.putExtra("", aid)
intent.putExtra("aid", aid)
intent.putExtra("cid", cid)
intent.putExtra("bvid", "")
intent.putExtra("from", 7)
intent.putExtra("blrouter.targeturl", pre)
intent.putExtra("blrouter.matchrule", "bilibili://united_video/")
// fix component
intent.component = ComponentName(
intent.component?.packageName ?: packageName,
"com.bilibili.ship.theseus.detail.UnitedBizDetailsActivity"
)
} catch (e: Exception) {
Log.e("replaceStoryVideo fix intent failed!!!")
Log.e(e)
}
}
return@hookBeforeAllMethods
}
// 兼容旧版
intent.component = ComponentName(
intent.component?.packageName ?: packageName,
"com.bilibili.video.videodetail.VideoDetailsActivity"
)
intent.data = Uri.parse(uri.replace("bilibili://story/", "bilibili://video/"))
}
if (sPrefs.getBoolean("force_browser", false)) {
if (intent.component?.className?.endsWith("MWebActivity") == true &&
Expand Down