mirror of
https://gitlab.futo.org/videostreaming/grayjay.git
synced 2025-09-25 10:48:59 +00:00
Merge branch 'master' of gitlab.futo.org:videostreaming/grayjay
This commit is contained in:
commit
100e98a960
12 changed files with 59 additions and 18 deletions
|
@ -179,8 +179,8 @@ dependencies {
|
||||||
implementation 'com.google.code.gson:gson:2.10.1' //Used for complex/anonymous cases like during development conversions (eg. V8RemoteObject)
|
implementation 'com.google.code.gson:gson:2.10.1' //Used for complex/anonymous cases like during development conversions (eg. V8RemoteObject)
|
||||||
|
|
||||||
//JS
|
//JS
|
||||||
//implementation("com.caoccao.javet:javet-android:3.0.2")
|
implementation("com.caoccao.javet:javet-android:3.0.2")
|
||||||
implementation 'com.caoccao.javet:javet-v8-android:4.1.4'
|
//implementation 'com.caoccao.javet:javet-v8-android:4.1.4' //Change after extensive testing the freezing edge cases are solved.
|
||||||
|
|
||||||
//Exoplayer
|
//Exoplayer
|
||||||
implementation 'androidx.media3:media3-exoplayer:1.2.1'
|
implementation 'androidx.media3:media3-exoplayer:1.2.1'
|
||||||
|
|
|
@ -98,16 +98,14 @@ inline fun <reified T> V8ValueArray.expectV8Variants(config: IV8PluginConfig, co
|
||||||
inline fun V8Plugin.ensureIsBusy() {
|
inline fun V8Plugin.ensureIsBusy() {
|
||||||
this.let {
|
this.let {
|
||||||
if (!it.isThreadAlreadyBusy()) {
|
if (!it.isThreadAlreadyBusy()) {
|
||||||
throw IllegalStateException("Tried to access V8Plugin without busy");
|
//throw IllegalStateException("Tried to access V8Plugin without busy");
|
||||||
/*
|
|
||||||
val stacktrace = Thread.currentThread().stackTrace;
|
val stacktrace = Thread.currentThread().stackTrace;
|
||||||
Logger.w("Extensions_V8",
|
Logger.w("Extensions_V8",
|
||||||
"V8 USE OUTSIDE BUSY: " + stacktrace.drop(3)?.firstOrNull().toString() +
|
"V8 USE OUTSIDE BUSY: " + stacktrace.drop(3)?.firstOrNull().toString() +
|
||||||
", " + stacktrace.drop(4)?.firstOrNull().toString() +
|
", " + stacktrace.drop(4)?.firstOrNull().toString() +
|
||||||
", " + stacktrace.drop(5)?.firstOrNull()?.toString() +
|
", " + stacktrace.drop(5)?.firstOrNull()?.toString() +
|
||||||
", " + stacktrace.drop(6)?.firstOrNull()?.toString()
|
", " + stacktrace.drop(6)?.firstOrNull()?.toString()
|
||||||
)
|
);
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -118,7 +116,7 @@ inline fun V8Value.ensureIsBusy() {
|
||||||
}
|
}
|
||||||
|
|
||||||
inline fun <reified T> V8Value.expectV8Variant(config: IV8PluginConfig, contextName: String): T {
|
inline fun <reified T> V8Value.expectV8Variant(config: IV8PluginConfig, contextName: String): T {
|
||||||
if(true)
|
if(false)
|
||||||
ensureIsBusy();
|
ensureIsBusy();
|
||||||
return when(T::class) {
|
return when(T::class) {
|
||||||
String::class -> this.expectOrThrow<V8ValueString>(config, contextName).value as T;
|
String::class -> this.expectOrThrow<V8ValueString>(config, contextName).value as T;
|
||||||
|
|
|
@ -4,7 +4,6 @@ import android.content.Context
|
||||||
import com.caoccao.javet.exceptions.JavetCompilationException
|
import com.caoccao.javet.exceptions.JavetCompilationException
|
||||||
import com.caoccao.javet.exceptions.JavetException
|
import com.caoccao.javet.exceptions.JavetException
|
||||||
import com.caoccao.javet.exceptions.JavetExecutionException
|
import com.caoccao.javet.exceptions.JavetExecutionException
|
||||||
import com.caoccao.javet.interfaces.IJavetEntityError
|
|
||||||
import com.caoccao.javet.interop.V8Host
|
import com.caoccao.javet.interop.V8Host
|
||||||
import com.caoccao.javet.interop.V8Runtime
|
import com.caoccao.javet.interop.V8Runtime
|
||||||
import com.caoccao.javet.values.V8Value
|
import com.caoccao.javet.values.V8Value
|
||||||
|
@ -321,6 +320,37 @@ class V8Plugin {
|
||||||
throw ScriptCompilationException(config, "Compilation: [${context}]: ${scriptEx.message}\n(${scriptEx.scriptingError.lineNumber})[${scriptEx.scriptingError.startColumn}-${scriptEx.scriptingError.endColumn}]: ${scriptEx.scriptingError.sourceLine}", null, codeStripped);
|
throw ScriptCompilationException(config, "Compilation: [${context}]: ${scriptEx.message}\n(${scriptEx.scriptingError.lineNumber})[${scriptEx.scriptingError.startColumn}-${scriptEx.scriptingError.endColumn}]: ${scriptEx.scriptingError.sourceLine}", null, codeStripped);
|
||||||
}
|
}
|
||||||
catch(executeEx: JavetExecutionException) {
|
catch(executeEx: JavetExecutionException) {
|
||||||
|
val obj = executeEx.scriptingError?.context
|
||||||
|
if(obj != null && obj.containsKey("plugin_type") == true) {
|
||||||
|
val pluginType = obj["plugin_type"].toString();
|
||||||
|
|
||||||
|
//Captcha
|
||||||
|
if (pluginType == "CaptchaRequiredException") {
|
||||||
|
throw ScriptCaptchaRequiredException(config,
|
||||||
|
obj["url"]?.toString(),
|
||||||
|
obj["body"]?.toString(),
|
||||||
|
executeEx, executeEx.scriptingError?.stack, codeStripped);
|
||||||
|
}
|
||||||
|
|
||||||
|
//Reload Required
|
||||||
|
if (pluginType == "ReloadRequiredException") {
|
||||||
|
throw ScriptReloadRequiredException(config,
|
||||||
|
obj["msg"]?.toString(),
|
||||||
|
obj["reloadData"]?.toString(),
|
||||||
|
executeEx, executeEx.scriptingError?.stack, codeStripped);
|
||||||
|
}
|
||||||
|
|
||||||
|
//Others
|
||||||
|
throwExceptionFromV8(
|
||||||
|
config,
|
||||||
|
pluginType,
|
||||||
|
(extractJSExceptionMessage(executeEx) ?: ""),
|
||||||
|
executeEx,
|
||||||
|
executeEx.scriptingError?.stack,
|
||||||
|
codeStripped
|
||||||
|
);
|
||||||
|
}
|
||||||
|
/* //Required for newer V8 versions
|
||||||
if(executeEx.scriptingError?.context is IJavetEntityError) {
|
if(executeEx.scriptingError?.context is IJavetEntityError) {
|
||||||
val obj = executeEx.scriptingError?.context as IJavetEntityError
|
val obj = executeEx.scriptingError?.context as IJavetEntityError
|
||||||
if(obj.context.containsKey("plugin_type") == true) {
|
if(obj.context.containsKey("plugin_type") == true) {
|
||||||
|
@ -354,6 +384,7 @@ class V8Plugin {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
throw ScriptExecutionException(config, extractJSExceptionMessage(executeEx) ?: "", null, executeEx.scriptingError?.stack, codeStripped);
|
throw ScriptExecutionException(config, extractJSExceptionMessage(executeEx) ?: "", null, executeEx.scriptingError?.stack, codeStripped);
|
||||||
}
|
}
|
||||||
catch(ex: Exception) {
|
catch(ex: Exception) {
|
||||||
|
|
|
@ -958,7 +958,7 @@ class StatePlatform {
|
||||||
//Comments
|
//Comments
|
||||||
fun getComments(content: IPlatformContentDetails): IPager<IPlatformComment> {
|
fun getComments(content: IPlatformContentDetails): IPager<IPlatformComment> {
|
||||||
val client = getContentClient(content.url);
|
val client = getContentClient(content.url);
|
||||||
val pager = null;//content.getComments(client);
|
val pager = content.getComments(client);
|
||||||
|
|
||||||
return pager ?: getComments(content.url);
|
return pager ?: getComments(content.url);
|
||||||
}
|
}
|
||||||
|
|
|
@ -95,7 +95,13 @@ class VideoListEditorViewHolder : ViewHolder {
|
||||||
.into(_imageThumbnail);
|
.into(_imageThumbnail);
|
||||||
_textName.text = v.name;
|
_textName.text = v.name;
|
||||||
_textAuthor.text = v.author.name;
|
_textAuthor.text = v.author.name;
|
||||||
_textVideoDuration.text = v.duration.toHumanTime(false);
|
|
||||||
|
if(v.duration > 0) {
|
||||||
|
_textVideoDuration.text = v.duration.toHumanTime(false);
|
||||||
|
_textVideoDuration.visibility = View.VISIBLE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
_textVideoDuration.visibility = View.GONE;
|
||||||
|
|
||||||
val historyPosition = StateHistory.instance.getHistoryPosition(v.url)
|
val historyPosition = StateHistory.instance.getHistoryPosition(v.url)
|
||||||
_timeBar.progress = historyPosition.toFloat() / v.duration.toFloat();
|
_timeBar.progress = historyPosition.toFloat() / v.duration.toFloat();
|
||||||
|
|
|
@ -204,8 +204,14 @@ open class PreviewVideoView : LinearLayout {
|
||||||
.into(_imageVideo);
|
.into(_imageVideo);
|
||||||
};
|
};
|
||||||
|
|
||||||
if(!isPlanned)
|
if(!isPlanned) {
|
||||||
_textVideoDuration.text = video.duration.toHumanTime(false);
|
if(video.duration > 0) {
|
||||||
|
_textVideoDuration.text = video.duration.toHumanTime(false);
|
||||||
|
_textVideoDuration.visibility = View.VISIBLE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
_textVideoDuration.visibility = View.GONE;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
_textVideoDuration.text = context.getString(R.string.planned);
|
_textVideoDuration.text = context.getString(R.string.planned);
|
||||||
|
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Subproject commit ffdf4cda380e5e4e9e370412f014e704bd14c09e
|
Subproject commit b7173f1538a8259ace0c606dfc3441426a659536
|
|
@ -1 +1 @@
|
||||||
Subproject commit d98c7f8aee36101d60a0c671d16a0800d5d715d0
|
Subproject commit b811f8bdfbbff73cf0d7581c9d7596911cb132b6
|
|
@ -1 +1 @@
|
||||||
Subproject commit 54564312683a0ae06d7085405478f96cade325e3
|
Subproject commit 048acef152823d2621da177d3b4e1535cf4ca8ac
|
|
@ -1 +1 @@
|
||||||
Subproject commit 0167dfb471e6f90ab08e997ac7151072576c42db
|
Subproject commit 568d560520d6eff77d710aeac66057c76aedd9c0
|
|
@ -1 +1 @@
|
||||||
Subproject commit ffdf4cda380e5e4e9e370412f014e704bd14c09e
|
Subproject commit b7173f1538a8259ace0c606dfc3441426a659536
|
|
@ -1 +1 @@
|
||||||
Subproject commit 0167dfb471e6f90ab08e997ac7151072576c42db
|
Subproject commit 568d560520d6eff77d710aeac66057c76aedd9c0
|
Loading…
Add table
Add a link
Reference in a new issue