From b21a9409afb4edd9016c19dff857f020f77d0ab6 Mon Sep 17 00:00:00 2001 From: kodjomoustapha <107993382+kodjodevf@users.noreply.github.com> Date: Sun, 30 Jul 2023 21:10:44 +0100 Subject: [PATCH] added new anime servers extractors --- lib/eval/m_bridge.dart | 257 +++++++++++++----- lib/eval/runtime/runtime.dart | 10 + lib/models/source.dart | 1 + lib/modules/manga/home/manga_home_screen.dart | 2 +- lib/modules/more/more_screen.dart | 59 +++- lib/modules/webview/webview.dart | 2 +- ..._extractor.dart => gogocdn_extractor.dart} | 0 ...xtractor.dart => mp4upload_extractor.dart} | 0 ..._tv_extractor.dart => mytv_extractor.dart} | 0 .../anime_extractors/okru_extractor.dart | 50 ++++ ..._extractor.dart => sendvid_extractor.dart} | 0 .../streamlare_extractor.dart | 75 +++++ ...tractor.dart => streamtape_extractor.dart} | 0 .../anime_extractors/vidbom_extractor.dart | 28 ++ .../anime_extractors/voe_extractor.dart | 30 ++ .../your_upload_extractor.dart | 31 +++ .../cloudflare/cloudflare_bypass.dart | 2 +- lib/utils/extensions.dart | 8 +- pubspec.lock | 8 +- 19 files changed, 479 insertions(+), 84 deletions(-) rename lib/services/anime_extractors/{gogo_cdn_extractor.dart => gogocdn_extractor.dart} (100%) rename lib/services/anime_extractors/{mp4_upload_extractor.dart => mp4upload_extractor.dart} (100%) rename lib/services/anime_extractors/{my_tv_extractor.dart => mytv_extractor.dart} (100%) create mode 100644 lib/services/anime_extractors/okru_extractor.dart rename lib/services/anime_extractors/{send_vid_extractor.dart => sendvid_extractor.dart} (100%) create mode 100644 lib/services/anime_extractors/streamlare_extractor.dart rename lib/services/anime_extractors/{stream_tape_extractor.dart => streamtape_extractor.dart} (100%) create mode 100644 lib/services/anime_extractors/vidbom_extractor.dart create mode 100644 lib/services/anime_extractors/voe_extractor.dart create mode 100644 lib/services/anime_extractors/your_upload_extractor.dart diff --git a/lib/eval/m_bridge.dart b/lib/eval/m_bridge.dart index f77122b..03c0661 100644 --- a/lib/eval/m_bridge.dart +++ b/lib/eval/m_bridge.dart @@ -14,18 +14,24 @@ import 'package:json_path/json_path.dart'; import 'package:mangayomi/eval/bridge_class/model.dart'; import 'package:mangayomi/eval/bridge_class/video_model.dart'; import 'package:mangayomi/services/anime_extractors/dood_extractor.dart'; -import 'package:mangayomi/services/anime_extractors/gogo_cdn_extractor.dart'; -import 'package:mangayomi/services/anime_extractors/mp4_upload_extractor.dart'; -import 'package:mangayomi/services/anime_extractors/my_tv_extractor.dart'; -import 'package:mangayomi/services/anime_extractors/send_vid_extractor.dart'; +import 'package:mangayomi/services/anime_extractors/gogocdn_extractor.dart'; +import 'package:mangayomi/services/anime_extractors/mp4upload_extractor.dart'; +import 'package:mangayomi/services/anime_extractors/mytv_extractor.dart'; +import 'package:mangayomi/services/anime_extractors/okru_extractor.dart'; +import 'package:mangayomi/services/anime_extractors/sendvid_extractor.dart'; import 'package:mangayomi/services/anime_extractors/sibnet_extractor.dart'; -import 'package:mangayomi/services/anime_extractors/stream_tape_extractor.dart'; +import 'package:mangayomi/services/anime_extractors/streamlare_extractor.dart'; +import 'package:mangayomi/services/anime_extractors/streamtape_extractor.dart'; import 'package:mangayomi/main.dart'; import 'package:mangayomi/models/source.dart'; import 'package:mangayomi/models/video.dart'; import 'package:mangayomi/modules/webview/webview.dart'; +import 'package:mangayomi/services/anime_extractors/vidbom_extractor.dart'; +import 'package:mangayomi/services/anime_extractors/voe_extractor.dart'; +import 'package:mangayomi/services/anime_extractors/your_upload_extractor.dart'; import 'package:mangayomi/services/http_service/cloudflare/cloudflare_bypass.dart'; import 'package:mangayomi/utils/constant.dart'; +import 'package:mangayomi/utils/extensions.dart'; import 'package:mangayomi/utils/reg_exp_matcher.dart'; import 'package:mangayomi/utils/xpath_selector.dart'; import 'package:xpath_selector_html_parser/xpath_selector_html_parser.dart'; @@ -220,7 +226,7 @@ class MBridge { static Future getHtmlViaWebview(String url, String rule) async { bool isOk = false; String? html; - if (Platform.isWindows || Platform.isLinux) { + if (Platform.isWindows || Platform.isLinux || Platform.isMacOS) { final webview = await WebviewWindow.create( configuration: CreateConfiguration( windowHeight: 500, @@ -551,15 +557,12 @@ class MBridge { static String subString(String text, String pattern, int type) { String result = ""; - //substring before if (type == 0) { - result = text.split(pattern).first; - } else - // substring after last - if (type == 1) { + result = text.substringBefore(pattern); + } else if (type == 1) { result = text.split(pattern).last; } else if (type == 2) { - result = text.substring(text.lastIndexOf(pattern) + 1); + result = text.substringAfter(pattern); } return result; } @@ -725,6 +728,39 @@ class MBridge { ); } + static Future> okruExtractor(String url) async { + return await OkruExtractor().videosFromUrl( + url, + ); + } + + static Future> yourUploadExtractor( + String url, String? headers, String? name, String prefix) async { + Map newHeaders = {}; + if (headers != null) { + newHeaders = (jsonDecode(headers) as Map) + .map((key, value) => MapEntry(key.toString(), value.toString())); + } + return await YourUploadExtractor().videosFromUrl(url, newHeaders, + prefix: prefix, name: name ?? "YourUpload"); + } + + static Future> voeExtractor(String url, String? quality) async { + return await VoeExtractor().videosFromUrl(url, quality); + } + + static Future> vidBomExtractor(String url) async { + return await VidBomExtractor().videosFromUrl( + url, + ); + } + + static Future> streamlareExtractor( + String url, String prefix, String suffix) async { + return await StreamlareExtractor() + .videosFromUrl(url, prefix: prefix, suffix: suffix); + } + static List