This commit is contained in:
kodjomoustapha 2024-02-09 15:40:30 +01:00
parent 00841d98b6
commit c2c18af20b
7 changed files with 40 additions and 7 deletions

View file

@ -655,6 +655,16 @@ class $MProvider extends MProvider with $Bridge<MProvider> {
false),
]),
),
'unpackJsAndCombine': BridgeMethodDef(
BridgeFunctionDef(
returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
params: [
BridgeParameter(
'code',
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
false),
]),
),
'evalJs': BridgeMethodDef(
BridgeFunctionDef(
returns: BridgeTypeAnnotation(BridgeTypeRef(
@ -880,7 +890,7 @@ class $MProvider extends MProvider with $Bridge<MProvider> {
}),
///////////////////////////////////////////////////////////////////////
"unpackJsAndCombine" => MBridge.unpackJsAndCombine,
"unpackJs" => MBridge.unpackJs,
"regExp" => $Function((_, __, List<$Value?> args) {
return $String(MBridge.regExp(args[0]!.$value, args[1]!.$value,

View file

@ -6,6 +6,7 @@ import 'package:flutter/material.dart';
import 'package:html/dom.dart';
import 'package:intl/date_symbol_data_local.dart';
import 'package:intl/intl.dart';
import 'package:js_packer/js_packer.dart';
import 'package:json_path/json_path.dart';
import 'package:mangayomi/eval/model/document.dart';
import 'package:mangayomi/models/manga.dart';
@ -122,6 +123,19 @@ class MBridge {
static const $Function unpackJs = $Function(_unpackJs);
static $Value? _unpackJs(_, __, List<$Value?> args) {
String code = args[0]!.$reified;
try {
final jsPacker = JSPacker(code);
return $String(jsPacker.unpack() ?? "");
} catch (_) {
return $String("");
}
}
///Unpack a JS code
static const $Function unpackJsAndCombine = $Function(_unpackJsAndCombine);
static $Value? _unpackJsAndCombine(_, __, List<$Value?> args) {
String code = args[0]!.$reified;
try {
return $String(JsUnpacker.unpackAndCombine(code) ?? "");

View file

@ -1,7 +1,7 @@
import 'package:http_interceptor/http_interceptor.dart';
import 'package:js_packer/js_packer.dart';
import 'package:mangayomi/models/video.dart';
import 'package:mangayomi/services/http/interceptor.dart';
import 'package:mangayomi/utils/cryptoaes/js_unpacker.dart';
import 'package:mangayomi/utils/extensions/string_extensions.dart';
import 'package:mangayomi/utils/xpath_selector.dart';
@ -18,7 +18,7 @@ class FilemoonExtractor {
.queryXPath('//script[contains(text(), "eval")]/text()')
.attr;
final unpacked = JsUnpacker.unpackAndCombine(jsEval!) ?? "";
final unpacked = JSPacker(jsEval!).unpack() ?? "";
final masterUrl = unpacked.isNotEmpty
? unpacked.substringAfter('{file:"').substringBefore('"}')

View file

@ -1,7 +1,7 @@
import 'package:http_interceptor/http_interceptor.dart';
import 'package:js_packer/js_packer.dart';
import 'package:mangayomi/models/video.dart';
import 'package:mangayomi/services/http/interceptor.dart';
import 'package:mangayomi/utils/cryptoaes/js_unpacker.dart';
import 'package:mangayomi/utils/extensions/string_extensions.dart';
import 'package:mangayomi/utils/xpath_selector.dart';
@ -23,7 +23,7 @@ class Mp4uploadExtractor {
.attrs;
if (scriptElementWithEval.isNotEmpty) {
script = JsUnpacker.unpackAndCombine(script) ?? "";
script = JSPacker(script).unpack() ?? "";
} else {
final scriptElementWithSrc = xpathSelector(response.body)
.queryXPath('//script[contains(text(), "player.src")]/text()')

View file

@ -1,7 +1,7 @@
import 'package:http_interceptor/http_interceptor.dart';
import 'package:js_packer/js_packer.dart';
import 'package:mangayomi/models/video.dart';
import 'package:mangayomi/services/http/interceptor.dart';
import 'package:mangayomi/utils/cryptoaes/js_unpacker.dart';
import 'package:mangayomi/utils/extensions/others.dart';
import 'package:mangayomi/utils/extensions/string_extensions.dart';
import 'package:mangayomi/utils/xpath_selector.dart';
@ -26,7 +26,7 @@ class StreamWishExtractor {
.let(
(script) {
if (script.contains("function(p,a,c")) {
return JsUnpacker.unpackAndCombine(script) ?? "";
return JSPacker(script).unpack() ?? "";
}
return script;
},

View file

@ -734,6 +734,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "0.6.7"
js_packer:
dependency: "direct main"
description:
name: js_packer
sha256: f45ffa90165a810d7134f0b96b54068e4aac9d80a8b181eafa3978ec6dbc66a3
url: "https://pub.dev"
source: hosted
version: "0.0.5"
json_annotation:
dependency: transitive
description:

View file

@ -66,6 +66,7 @@ dependencies:
ffi: ^2.1.0
ffigen: ^11.0.0
http_interceptor: ^2.0.0-beta.8
js_packer: ^0.0.5
flutter_windows_webview:
git:
url: https://github.com/wgh136/flutter_windows_webview