mirror of
https://github.com/kodjodevf/mangayomi-extensions.git
synced 2026-02-14 02:41:39 +00:00
Refactor
This commit is contained in:
@@ -286,27 +286,44 @@ final String htmlString = '''
|
||||
print(xpathRes.first); // https://github.com/kodjodevf
|
||||
|
||||
```
|
||||
`String` querySelector(`String html`, {`required String selector`}, {`required int typeElement`},{`required String attributes`})
|
||||
```bash
|
||||
if typeElement == 0 // return querySelector text
|
||||
if typeElement == 1 // return querySelector innerHtml
|
||||
if typeElement == 2 // return querySelector outerHtml
|
||||
if typeElement == 3 // return querySelector attributes
|
||||
```
|
||||
### DOM selector
|
||||
|
||||
`List<String>` querySelectorAll(`String html`, {`required String selector`}, {`required int typeElement`},{`required String attributes`}, {`required int typeRegExp`})
|
||||
Example:
|
||||
```bash
|
||||
if typeRegExp == 0 you can use :
|
||||
if typeElement == 0 // return list querySelector text
|
||||
if typeElement == 1 // return list querySelector innerHtml
|
||||
if typeElement == 2 // return list querySelector outerHtml
|
||||
if typeElement == 3 // return list querySelector attributes
|
||||
else
|
||||
if typeRegExp == 1 // return list of element of href that match
|
||||
if typeRegExp == 2 // return list of element of src that match
|
||||
if typeRegExp == 3 // return list of element of datasrc that match
|
||||
if typeRegExp == 4 // return list of element of img that match
|
||||
```
|
||||
final String htmlString = '''
|
||||
<html lang="en">
|
||||
<body>
|
||||
<div><a href='https://github.com/kodjodevf'>author</a></div>
|
||||
<div class="head">div head</div>
|
||||
<div class="container">
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td id="td1" class="first1">1</td>
|
||||
<td id="td2" class="first1">2</td>
|
||||
<td id="td3" class="first2">3</td>
|
||||
<td id="td4" class="first2 form">4</td>
|
||||
<td id="td5" class="second1">one</td>
|
||||
<td id="td6" class="second1">two</td>
|
||||
<td id="td7" class="second2">three</td>
|
||||
<td id="td8" class="second2">four</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="end">end</div>
|
||||
</body>
|
||||
</html>
|
||||
''';
|
||||
|
||||
|
||||
MDocument document = parseHtml(htmlString);
|
||||
print(document.selecFirst("a").attr("href")); // https://github.com/kodjodevf
|
||||
print(document.selecFirst("td").text); // 1
|
||||
|
||||
See [`MDocument` model](https://github.com/kodjodevf/mangayomi/blob/main/lib/eval/model/document.dart) and [`MElement` model](https://github.com/kodjodevf/mangayomi/blob/main/lib/eval/model/element.dart) to see aivable methods.
|
||||
|
||||
```
|
||||
|
||||
|
||||
### String utils
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import '../../../model/source.dart';
|
||||
import 'src/frenchanime/frenchanime-v0.0.1.dart';
|
||||
import 'src/frenchanime/frenchanime.dart';
|
||||
import 'src/wiflix/wiflix.dart';
|
||||
|
||||
const _datalifeengineVersion = "0.0.1";
|
||||
const _datalifeengineVersion = "0.0.15";
|
||||
const _datalifeengineSourceCodeUrl =
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/anime/multisrc/datalifeengine/datalifeengine-v$_datalifeengineVersion.dart";
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/multisrc/datalifeengine/datalifeengine.dart";
|
||||
|
||||
List<Source> get datalifeengineSourcesList => _datalifeengineSourcesList;
|
||||
List<Source> _datalifeengineSourcesList = [
|
||||
|
||||
@@ -9,5 +9,5 @@ Source _frenchanimeSource = Source(
|
||||
typeSource: "datalifeengine",
|
||||
isManga: false,
|
||||
iconUrl:
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/anime/multisrc/datalifeengine/src/frenchanime/icon.png",
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/multisrc/datalifeengine/src/frenchanime/icon.png",
|
||||
);
|
||||
@@ -9,5 +9,5 @@ Source _wiflixSource = Source(
|
||||
typeSource: "datalifeengine",
|
||||
isManga: false,
|
||||
iconUrl:
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/anime/multisrc/datalifeengine/src/wiflix/icon.png",
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/multisrc/datalifeengine/src/wiflix/icon.png",
|
||||
);
|
||||
|
||||
@@ -2,9 +2,9 @@ import '../../../model/source.dart';
|
||||
import 'src/dopebox/dopebox.dart';
|
||||
import 'src/sflix/sflix.dart';
|
||||
|
||||
const _dopeflixVersion = "0.0.25";
|
||||
const _dopeflixVersion = "0.0.3";
|
||||
const _dopeflixSourceCodeUrl =
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/anime/multisrc/dopeflix/dopeflix-v$_dopeflixVersion.dart";
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/multisrc/dopeflix/dopeflix.dart";
|
||||
|
||||
List<Source> get dopeflixSourcesList => _dopeflixSourcesList;
|
||||
List<Source> _dopeflixSourcesList = [
|
||||
|
||||
@@ -9,5 +9,5 @@ Source _dopeboxSource = Source(
|
||||
typeSource: "dopeflix",
|
||||
isManga: false,
|
||||
iconUrl:
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/anime/multisrc/dopeflix/src/dopebox/icon.png",
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/multisrc/dopeflix/src/dopebox/icon.png",
|
||||
);
|
||||
|
||||
@@ -9,5 +9,5 @@ Source _sflixSource = Source(
|
||||
typeSource: "dopeflix",
|
||||
isManga: false,
|
||||
iconUrl:
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/anime/multisrc/dopeflix/src/sflix/icon.png",
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/multisrc/dopeflix/src/sflix/icon.png",
|
||||
);
|
||||
|
||||
@@ -2,9 +2,9 @@ import '../../../model/source.dart';
|
||||
import 'src/aniwatch/aniwatch.dart';
|
||||
import 'src/kaido/kaido.dart';
|
||||
|
||||
const _zorothemeVersion = "0.0.6";
|
||||
const _zorothemeVersion = "0.0.65";
|
||||
const _zorothemeSourceCodeUrl =
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/anime/multisrc/zorotheme/zorotheme-v$_zorothemeVersion.dart";
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/multisrc/zorotheme/zorotheme.dart";
|
||||
|
||||
List<Source> get zorothemeSourcesList => _zorothemeSourcesList;
|
||||
List<Source> _zorothemeSourcesList = [
|
||||
|
||||
@@ -9,5 +9,5 @@ Source _aniwatchSource = Source(
|
||||
lang: "en",
|
||||
typeSource: "zorotheme",
|
||||
iconUrl:
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/anime/multisrc/zorotheme/src/aniwatch/icon.png",
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/multisrc/zorotheme/src/aniwatch/icon.png",
|
||||
);
|
||||
|
||||
@@ -9,5 +9,5 @@ Source _kaidoSource = Source(
|
||||
isManga: false,
|
||||
typeSource: "zorotheme",
|
||||
iconUrl:
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/anime/multisrc/zorotheme/src/kaido/icon.png",
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/multisrc/zorotheme/src/kaido/icon.png",
|
||||
);
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
import '../../../../model/source.dart';
|
||||
|
||||
Source get okanimeSource => _okanimeSource;
|
||||
const _okanimeVersion = "0.0.35";
|
||||
const _okanimeVersion = "0.0.4";
|
||||
const _okanimeSourceCodeUrl =
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/anime/src/ar/okanime/okanime-v$_okanimeVersion.dart";
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/ar/okanime/okanime.dart";
|
||||
Source _okanimeSource = Source(
|
||||
name: "Okanime",
|
||||
baseUrl: "https://www.okanime.xyz",
|
||||
lang: "ar",
|
||||
typeSource: "single",
|
||||
iconUrl:
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/anime/src/ar/okanime/icon.png",
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/ar/okanime/icon.png",
|
||||
sourceCodeUrl: _okanimeSourceCodeUrl,
|
||||
version: _okanimeVersion,
|
||||
isManga: false);
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
import '../../../../model/source.dart';
|
||||
|
||||
Source get aniwave => _aniwave;
|
||||
const _aniwaveVersion = "0.0.25";
|
||||
const _aniwaveVersion = "0.0.3";
|
||||
const _aniwaveCodeUrl =
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/anime/src/en/aniwave/aniwave-v$_aniwaveVersion.dart";
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/en/aniwave/aniwave.dart";
|
||||
Source _aniwave = Source(
|
||||
name: "Aniwave",
|
||||
baseUrl: "https://aniwave.to",
|
||||
lang: "en",
|
||||
typeSource: "single",
|
||||
iconUrl:
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/anime/src/en/aniwave/icon.png",
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/en/aniwave/icon.png",
|
||||
sourceCodeUrl: _aniwaveCodeUrl,
|
||||
version: _aniwaveVersion,
|
||||
isManga: false);
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
import '../../../../model/source.dart';
|
||||
|
||||
Source get gogoanimeSource => _gogoanimeSource;
|
||||
const _gogoanimeVersion = "0.0.55";
|
||||
const _gogoanimeVersion = "0.0.6";
|
||||
const _gogoanimeSourceCodeUrl =
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/anime/src/en/gogoanime/gogoanime-v$_gogoanimeVersion.dart";
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/en/gogoanime/gogoanime.dart";
|
||||
Source _gogoanimeSource = Source(
|
||||
name: "Gogoanime",
|
||||
baseUrl: "https://gogoanime3.net",
|
||||
lang: "en",
|
||||
typeSource: "single",
|
||||
iconUrl:
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/anime/src/en/gogoanime/icon.png",
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/en/gogoanime/icon.png",
|
||||
sourceCodeUrl: _gogoanimeSourceCodeUrl,
|
||||
version: _gogoanimeVersion,
|
||||
isManga: false);
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
import '../../../../model/source.dart';
|
||||
|
||||
Source get kisskhSource => _kisskhSource;
|
||||
const _kisskhVersion = "0.0.4";
|
||||
const _kisskhVersion = "0.0.45";
|
||||
const _kisskhSourceCodeUrl =
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/anime/src/en/kisskh/kisskh-v$_kisskhVersion.dart";
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/en/kisskh/kisskh.dart";
|
||||
Source _kisskhSource = Source(
|
||||
name: "KissKH",
|
||||
baseUrl: "https://kisskh.co",
|
||||
lang: "en",
|
||||
typeSource: "single",
|
||||
iconUrl:
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/anime/src/en/kisskh/icon.png",
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/en/kisskh/icon.png",
|
||||
sourceCodeUrl: _kisskhSourceCodeUrl,
|
||||
version: _kisskhVersion,
|
||||
isManga: false);
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
import '../../../../model/source.dart';
|
||||
|
||||
Source get uhdmoviesSource => _uhdmoviesSource;
|
||||
const _uhdmoviesVersion = "0.0.15";
|
||||
const _uhdmoviesVersion = "0.0.2";
|
||||
const _uhdmoviesSourceCodeUrl =
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/anime/src/en/uhdmovies/uhdmovies-v$_uhdmoviesVersion.dart";
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/en/uhdmovies/uhdmovies.dart";
|
||||
Source _uhdmoviesSource = Source(
|
||||
name: "UHD Movies",
|
||||
baseUrl: "https://uhdmovies.zip",
|
||||
lang: "en",
|
||||
typeSource: "single",
|
||||
iconUrl:
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/anime/src/en/uhdmovies/icon.png",
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/en/uhdmovies/icon.png",
|
||||
sourceCodeUrl: _uhdmoviesSourceCodeUrl,
|
||||
version: _uhdmoviesVersion,
|
||||
isManga: false);
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
import '../../../../model/source.dart';
|
||||
|
||||
Source get animesultraSource => _animesultraSource;
|
||||
const _animesultraVersion = "0.0.45";
|
||||
const _animesultraVersion = "0.0.5";
|
||||
const _animesultraSourceCodeUrl =
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/anime/src/fr/animesultra/animesultra-v$_animesultraVersion.dart";
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/fr/animesultra/animesultra.dart";
|
||||
Source _animesultraSource = Source(
|
||||
name: "AnimesUltra",
|
||||
baseUrl: "https://ww.animesultra.net",
|
||||
lang: "fr",
|
||||
typeSource: "single",
|
||||
iconUrl:
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/anime/src/fr/animesultra/icon.png",
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/fr/animesultra/icon.png",
|
||||
sourceCodeUrl: _animesultraSourceCodeUrl,
|
||||
version: _animesultraVersion,
|
||||
isManga: false,
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import '../../../../model/source.dart';
|
||||
|
||||
Source get franimeSource => _franimeSource;
|
||||
const _franimeVersion = "0.0.5";
|
||||
const _franimeVersion = "0.0.55";
|
||||
const _franimeSourceCodeUrl =
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/anime/src/fr/franime/franime-v$_franimeVersion.dart";
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/fr/franime/franime.dart";
|
||||
Source _franimeSource = Source(
|
||||
name: "FrAnime",
|
||||
baseUrl: "https://franime.fr",
|
||||
@@ -11,7 +11,7 @@ Source _franimeSource = Source(
|
||||
lang: "fr",
|
||||
typeSource: "single",
|
||||
iconUrl:
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/anime/src/fr/franime/icon.png",
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/fr/franime/icon.png",
|
||||
sourceCodeUrl: _franimeSourceCodeUrl,
|
||||
version: _franimeVersion,
|
||||
isManga: false,
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
import '../../../../model/source.dart';
|
||||
|
||||
Source get otakufr => _otakufr;
|
||||
const otakufrVersion = "0.0.55";
|
||||
const otakufrVersion = "0.0.6";
|
||||
const otakufrCodeUrl =
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/anime/src/fr/otakufr/otakufr-v$otakufrVersion.dart";
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/fr/otakufr/otakufr.dart";
|
||||
Source _otakufr = Source(
|
||||
name: "OtakuFr",
|
||||
baseUrl: "https://otakufr.co",
|
||||
lang: "fr",
|
||||
typeSource: "single",
|
||||
iconUrl:
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/anime/src/fr/otakufr/icon.png",
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/fr/otakufr/icon.png",
|
||||
sourceCodeUrl: otakufrCodeUrl,
|
||||
version: otakufrVersion,
|
||||
isManga: false,
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
import '../../../../model/source.dart';
|
||||
|
||||
Source get nimegami => _nimegami;
|
||||
const _nimegamiVersion = "0.0.3";
|
||||
const _nimegamiVersion = "0.0.35";
|
||||
const _nimegamiCodeUrl =
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/anime/src/id/nimegami/nimegami-v$_nimegamiVersion.dart";
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/id/nimegami/nimegami.dart";
|
||||
Source _nimegami = Source(
|
||||
name: "NimeGami",
|
||||
baseUrl: "https://nimegami.id",
|
||||
lang: "id",
|
||||
typeSource: "single",
|
||||
iconUrl:
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/anime/src/id/nimegami/icon.png",
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/id/nimegami/icon.png",
|
||||
sourceCodeUrl: _nimegamiCodeUrl,
|
||||
version: _nimegamiVersion,
|
||||
isManga: false);
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
import '../../../../model/source.dart';
|
||||
|
||||
Source get oploverz => _oploverz;
|
||||
const _oploverzVersion = "0.0.25";
|
||||
const _oploverzVersion = "0.0.3";
|
||||
const _oploverzCodeUrl =
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/anime/src/id/oploverz/oploverz-v$_oploverzVersion.dart";
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/id/oploverz/oploverz.dart";
|
||||
Source _oploverz = Source(
|
||||
name: "Oploverz",
|
||||
baseUrl: "https://oploverz.red",
|
||||
lang: "id",
|
||||
typeSource: "single",
|
||||
iconUrl:
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/anime/src/id/oploverz/icon.png",
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/id/oploverz/icon.png",
|
||||
sourceCodeUrl: _oploverzCodeUrl,
|
||||
version: _oploverzVersion,
|
||||
isManga: false);
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
import '../../../../model/source.dart';
|
||||
|
||||
Source get otakudesu => _otakudesu;
|
||||
const _otakudesuVersion = "0.0.3";
|
||||
const _otakudesuVersion = "0.0.35";
|
||||
const _otakudesuCodeUrl =
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/anime/src/id/otakudesu/otakudesu-v$_otakudesuVersion.dart";
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/id/otakudesu/otakudesu.dart";
|
||||
Source _otakudesu = Source(
|
||||
name: "OtakuDesu",
|
||||
baseUrl: "https://otakudesu.cam",
|
||||
lang: "id",
|
||||
typeSource: "single",
|
||||
iconUrl:
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/anime/src/id/otakudesu/icon.png",
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/id/otakudesu/icon.png",
|
||||
sourceCodeUrl: _otakudesuCodeUrl,
|
||||
version: _otakudesuVersion,
|
||||
isManga: false);
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
import '../../../../model/source.dart';
|
||||
|
||||
Source get animesaturn => _animesaturn;
|
||||
const _animesaturnVersion = "0.0.15";
|
||||
const _animesaturnVersion = "0.0.2";
|
||||
const _animesaturnCodeUrl =
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/anime/src/it/animesaturn/animesaturn-v$_animesaturnVersion.dart";
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/it/animesaturn/animesaturn.dart";
|
||||
Source _animesaturn = Source(
|
||||
name: "AnimeSaturn",
|
||||
baseUrl: "https://www.animesaturn.tv",
|
||||
lang: "it",
|
||||
typeSource: "single",
|
||||
iconUrl:
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/anime/src/it/animesaturn/icon.png",
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/anime/src/it/animesaturn/icon.png",
|
||||
sourceCodeUrl: _animesaturnCodeUrl,
|
||||
version: _animesaturnVersion,
|
||||
isManga: false);
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -3,9 +3,9 @@ import 'src/yugenmangas/yugenmangas.dart';
|
||||
import 'src/omegascans/omegascans.dart';
|
||||
import 'src/perfscan/perfscan.dart';
|
||||
|
||||
const heancmsVersion = "0.0.45";
|
||||
const heancmsVersion = "0.0.5";
|
||||
const heancmsSourceCodeUrl =
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/heancms/heancms-v$heancmsVersion.dart";
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/heancms/heancms.dart";
|
||||
|
||||
List<Source> get heancmsSourcesList => _heancmsSourcesList;
|
||||
List<Source> _heancmsSourcesList = [
|
||||
|
||||
@@ -10,7 +10,7 @@ Source _omegascansSource = Source(
|
||||
isNsfw: true,
|
||||
typeSource: "heancms",
|
||||
iconUrl:
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/heancms/src/omegascans/icon.png",
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/heancms/src/omegascans/icon.png",
|
||||
dateFormat: "yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ",
|
||||
dateFormatLocale: "en",
|
||||
);
|
||||
|
||||
@@ -9,7 +9,7 @@ Source _perfscanSource = Source(
|
||||
lang: "fr",
|
||||
typeSource: "heancms",
|
||||
iconUrl:
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/heancms/src/perfscan/icon.png",
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/heancms/src/perfscan/icon.png",
|
||||
dateFormat: "yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ",
|
||||
dateFormatLocale: "en",
|
||||
);
|
||||
|
||||
@@ -10,7 +10,7 @@ Source _yugenmangasSource = Source(
|
||||
isNsfw: true,
|
||||
typeSource: "heancms",
|
||||
iconUrl:
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/heancms/src/yugenmangas/icon.png",
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/heancms/src/yugenmangas/icon.png",
|
||||
dateFormat: "yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ",
|
||||
dateFormatLocale: "en",
|
||||
);
|
||||
|
||||
@@ -1,402 +0,0 @@
|
||||
import 'package:mangayomi/bridge_lib.dart';
|
||||
import 'dart:convert';
|
||||
|
||||
class Madara extends MProvider {
|
||||
Madara();
|
||||
|
||||
@override
|
||||
Future<MPages> getPopular(MSource source, int page) async {
|
||||
final url = "${source.baseUrl}/manga/page/$page/?m_orderby=views";
|
||||
final data = {"url": url, "sourceId": source.id};
|
||||
final res = await http('GET', json.encode(data));
|
||||
|
||||
List<MManga> mangaList = [];
|
||||
final urls = xpath(res, '//*[@class^="post-title"]/h3/a/@href');
|
||||
final names = xpath(res, '//*[@id^="manga-item"]/a/@title');
|
||||
var images = xpath(res, '//*[@id^="manga-item"]/a/img/@data-src');
|
||||
if (images.isEmpty) {
|
||||
images = xpath(res, '//*[@id^="manga-item"]/a/img/@data-lazy-src');
|
||||
if (images.isEmpty) {
|
||||
images = xpath(res, '//*[@id^="manga-item"]/a/img/@srcset');
|
||||
if (images.isEmpty) {
|
||||
images = xpath(res, '//*[@id^="manga-item"]/a/img/@src');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (var i = 0; i < names.length; i++) {
|
||||
MManga manga = MManga();
|
||||
manga.name = names[i];
|
||||
manga.imageUrl = substringBefore(images[i], " ");
|
||||
manga.link = urls[i];
|
||||
mangaList.add(manga);
|
||||
}
|
||||
|
||||
return MPages(mangaList, true);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<MPages> getLatestUpdates(MSource source, int page) async {
|
||||
final url = "${source.baseUrl}/manga/page/$page/?m_orderby=latest";
|
||||
final data = {"url": url, "sourceId": source.id};
|
||||
final res = await http('GET', json.encode(data));
|
||||
|
||||
List<MManga> mangaList = [];
|
||||
final urls = xpath(res, '//*[@class^="post-title"]/h3/a/@href');
|
||||
final names = xpath(res, '//*[@id^="manga-item"]/a/@title');
|
||||
var images = xpath(res, '//*[@id^="manga-item"]/a/img/@data-src');
|
||||
if (images.isEmpty) {
|
||||
images = xpath(res, '//*[@id^="manga-item"]/a/img/@data-lazy-src');
|
||||
if (images.isEmpty) {
|
||||
images = xpath(res, '//*[@id^="manga-item"]/a/img/@srcset');
|
||||
if (images.isEmpty) {
|
||||
images = xpath(res, '//*[@id^="manga-item"]/a/img/@src');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (var i = 0; i < names.length; i++) {
|
||||
MManga manga = MManga();
|
||||
manga.name = names[i];
|
||||
manga.imageUrl = substringBefore(images[i], " ");
|
||||
manga.link = urls[i];
|
||||
mangaList.add(manga);
|
||||
}
|
||||
|
||||
return MPages(mangaList, true);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<MPages> search(
|
||||
MSource source, String query, int page, FilterList filterList) async {
|
||||
final filters = filterList.filters;
|
||||
|
||||
String url = "${source.baseUrl}/?s=$query&post_type=wp-manga";
|
||||
|
||||
for (var filter in filters) {
|
||||
if (filter.type == "AuthorFilter") {
|
||||
if (filter.state.isNotEmpty) {
|
||||
url += "${ll(url)}author=${Uri.encodeComponent(filter.state)}";
|
||||
}
|
||||
} else if (filter.type == "ArtistFilter") {
|
||||
if (filter.state.isNotEmpty) {
|
||||
url += "${ll(url)}artist=${Uri.encodeComponent(filter.state)}";
|
||||
}
|
||||
} else if (filter.type == "YearFilter") {
|
||||
if (filter.state.isNotEmpty) {
|
||||
url += "${ll(url)}release=${Uri.encodeComponent(filter.state)}";
|
||||
}
|
||||
} else if (filter.type == "StatusFilter") {
|
||||
final status = (filter.state as List).where((e) => e.state).toList();
|
||||
if (status.isNotEmpty) {
|
||||
for (var st in status) {
|
||||
url += "${ll(url)}status[]=${st.value},";
|
||||
}
|
||||
}
|
||||
} else if (filter.type == "OrderByFilter") {
|
||||
if (filter.state != 0) {
|
||||
final order = filter.values[filter.state].value;
|
||||
url += "${ll(url)}m_orderby=$order";
|
||||
}
|
||||
} else if (filter.type == "AdultContentFilter") {
|
||||
final ctn = filter.values[filter.state].value;
|
||||
if (ctn.isNotEmpty) {
|
||||
url += "${ll(url)}adult=$ctn";
|
||||
}
|
||||
} else if (filter.type == "GenreListFilter") {
|
||||
final genres = (filter.state as List).where((e) => e.state).toList();
|
||||
if (genres.isNotEmpty) {
|
||||
for (var genre in genres) {
|
||||
url += "${ll(url)}genre[]=${genre.value},";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
final data = {"url": url, "sourceId": source.id};
|
||||
final res = await http('GET', json.encode(data));
|
||||
|
||||
List<MManga> mangaList = [];
|
||||
final urls = xpath(res, '//*[@class^="tab-thumb c-image-hover"]/a/@href');
|
||||
final names = xpath(res, '//*[@class^="tab-thumb c-image-hover"]/a/@title');
|
||||
var images =
|
||||
xpath(res, '//*[@class^="tab-thumb c-image-hover"]/a/img/@data-src');
|
||||
if (images.isEmpty) {
|
||||
images = xpath(
|
||||
res, '//*[@class^="tab-thumb c-image-hover"]/a/img/@data-lazy-src');
|
||||
if (images.isEmpty) {
|
||||
images =
|
||||
xpath(res, '//*[@class^="tab-thumb c-image-hover"]/a/img/@srcset');
|
||||
if (images.isEmpty) {
|
||||
images =
|
||||
xpath(res, '//*[@class^="tab-thumb c-image-hover"]/a/img/@src');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (var i = 0; i < names.length; i++) {
|
||||
MManga manga = MManga();
|
||||
manga.name = names[i];
|
||||
manga.imageUrl = substringBefore(images[i], " ");
|
||||
manga.link = urls[i];
|
||||
mangaList.add(manga);
|
||||
}
|
||||
|
||||
return MPages(mangaList, true);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<MManga> getDetail(MSource source, String url) async {
|
||||
final statusList = [
|
||||
{
|
||||
"OnGoing": 0,
|
||||
"Продолжается": 0,
|
||||
"Updating": 0,
|
||||
"Em Lançamento": 0,
|
||||
"Em lançamento": 0,
|
||||
"Em andamento": 0,
|
||||
"Em Andamento": 0,
|
||||
"En cours": 0,
|
||||
"Ativo": 0,
|
||||
"Lançando": 0,
|
||||
"Đang Tiến Hành": 0,
|
||||
"Devam Ediyor": 0,
|
||||
"Devam ediyor": 0,
|
||||
"In Corso": 0,
|
||||
"In Arrivo": 0,
|
||||
"مستمرة": 0,
|
||||
"مستمر": 0,
|
||||
"En Curso": 0,
|
||||
"En curso": 0,
|
||||
"Emision": 0,
|
||||
"En marcha": 0,
|
||||
"Publicandose": 0,
|
||||
"En emision": 0,
|
||||
"连载中": 0,
|
||||
"Completed": 1,
|
||||
"Completo": 1,
|
||||
"Completado": 1,
|
||||
"Concluído": 1,
|
||||
"Concluido": 1,
|
||||
"Finalizado": 1,
|
||||
"Terminé": 1,
|
||||
"Hoàn Thành": 1,
|
||||
"مكتملة": 1,
|
||||
"مكتمل": 1,
|
||||
"已完结": 1,
|
||||
"On Hold": 2,
|
||||
"Pausado": 2,
|
||||
"En espera": 2,
|
||||
"Canceled": 3,
|
||||
"Cancelado": 3,
|
||||
}
|
||||
];
|
||||
MManga manga = MManga();
|
||||
String res = "";
|
||||
final datas = {"url": url, "sourceId": source.id};
|
||||
res = await http('GET', json.encode(datas));
|
||||
|
||||
final author = querySelectorAll(res,
|
||||
selector: "div.author-content > a",
|
||||
typeElement: 0,
|
||||
attributes: "",
|
||||
typeRegExp: 0);
|
||||
if (author.isNotEmpty) {
|
||||
manga.author = author.first;
|
||||
}
|
||||
final description = querySelectorAll(res,
|
||||
selector:
|
||||
"div.description-summary div.summary__content, div.summary_content div.post-content_item > h5 + div, div.summary_content div.manga-excerpt, div.sinopsis div.contenedor, .description-summary > p",
|
||||
typeElement: 0,
|
||||
attributes: "",
|
||||
typeRegExp: 0);
|
||||
if (description.isNotEmpty) {
|
||||
manga.description = description.first;
|
||||
}
|
||||
final imageUrl = querySelectorAll(res,
|
||||
selector: "div.summary_image img",
|
||||
typeElement: 2,
|
||||
attributes: "",
|
||||
typeRegExp: 2);
|
||||
if (imageUrl.isNotEmpty) {
|
||||
manga.imageUrl = imageUrl.first;
|
||||
}
|
||||
String mangaId = "";
|
||||
|
||||
final id = querySelectorAll(res,
|
||||
selector: "div[id^=manga-chapters-holder]",
|
||||
typeElement: 3,
|
||||
attributes: "data-id",
|
||||
typeRegExp: 0);
|
||||
if (id.isNotEmpty) {
|
||||
mangaId = id.first;
|
||||
}
|
||||
final status = querySelectorAll(res,
|
||||
selector: "div.summary-content",
|
||||
typeElement: 0,
|
||||
attributes: "",
|
||||
typeRegExp: 0);
|
||||
if (status.isNotEmpty) {
|
||||
manga.status = parseStatus(status.last, statusList);
|
||||
}
|
||||
manga.genre = querySelectorAll(res,
|
||||
selector: "div.genres-content a",
|
||||
typeElement: 0,
|
||||
attributes: "",
|
||||
typeRegExp: 0);
|
||||
final baseUrl = "${source.baseUrl}/";
|
||||
final headers = {
|
||||
"Referer": baseUrl,
|
||||
"Content-Type": "application/x-www-form-urlencoded",
|
||||
"X-Requested-With": "XMLHttpRequest"
|
||||
};
|
||||
final urll =
|
||||
"${baseUrl}wp-admin/admin-ajax.php?action=manga_get_chapters&manga=$mangaId";
|
||||
final datasP = {"url": urll, "headers": headers, "sourceId": source.id};
|
||||
res = await http('POST', json.encode(datasP));
|
||||
print("datasP");
|
||||
if (res == "error" || mangaId.isEmpty) {
|
||||
final urlP = "${url}ajax/chapters";
|
||||
final datasP = {"url": urlP, "headers": headers, "sourceId": source.id};
|
||||
res = await http('POST', json.encode(datasP));
|
||||
}
|
||||
var chapUrls = xpath(res, '//li[@class^="wp-manga-chapter"]/a/@href');
|
||||
var chaptersNames = xpath(res, '//li[@class^="wp-manga-chapter"]/a/text()');
|
||||
var dateF = xpath(res, '//li[@class^="wp-manga-chapter"]/span/i/text()');
|
||||
if (dateF.isEmpty) {
|
||||
final resWebview = await getHtmlViaWebview(
|
||||
url, "//*[@id='manga-chapters-holder']/div[2]/div/ul/li/a/@href");
|
||||
chapUrls = xpath(resWebview,
|
||||
"//*[@id='manga-chapters-holder']/div[2]/div/ul/li/a/@href");
|
||||
chaptersNames = xpath(resWebview,
|
||||
"//*[@id='manga-chapters-holder']/div[2]/div/ul/li/a/text()");
|
||||
dateF = xpath(resWebview,
|
||||
"//*[@id='manga-chapters-holder']/div[2]/div/ul/li/span/i/text()");
|
||||
}
|
||||
List<String> dateUploads = [];
|
||||
if (source.dateFormat.isNotEmpty) {
|
||||
dateUploads =
|
||||
parseDates(dateF, source.dateFormat, source.dateFormatLocale);
|
||||
if (dateF.length < chaptersNames.length) {
|
||||
final length = chaptersNames.length - dateF.length;
|
||||
String date = "${DateTime.now().millisecondsSinceEpoch}";
|
||||
for (var i = 0; i < length - 1; i++) {
|
||||
date += "--..${DateTime.now().millisecondsSinceEpoch}";
|
||||
}
|
||||
|
||||
final dateFF =
|
||||
parseDates(dateF, source.dateFormat, source.dateFormatLocale);
|
||||
List<String> chapterDate = date.split('--..');
|
||||
|
||||
for (var date in dateFF) {
|
||||
chapterDate.add(date);
|
||||
}
|
||||
dateUploads = chapterDate;
|
||||
}
|
||||
}
|
||||
|
||||
List<MChapter>? chaptersList = [];
|
||||
for (var i = 0; i < chaptersNames.length; i++) {
|
||||
MChapter chapter = MChapter();
|
||||
chapter.name = chaptersNames[i];
|
||||
chapter.url = chapUrls[i];
|
||||
if (source.dateFormat.isNotEmpty) chapter.dateUpload = dateUploads[i];
|
||||
chaptersList.add(chapter);
|
||||
}
|
||||
manga.chapters = chaptersList;
|
||||
return manga;
|
||||
}
|
||||
|
||||
@override
|
||||
Future<List<String>> getPageList(MSource source, String url) async {
|
||||
final datas = {"url": url, "sourceId": source.id};
|
||||
final res = await http('GET', json.encode(datas));
|
||||
|
||||
final pagesSelectorRes = querySelectorAll(res,
|
||||
selector:
|
||||
"div.page-break, li.blocks-gallery-item, .reading-content, .text-left img",
|
||||
typeElement: 1,
|
||||
attributes: "",
|
||||
typeRegExp: 0)
|
||||
.first;
|
||||
final imgs = querySelectorAll(pagesSelectorRes,
|
||||
selector: "img", typeElement: 2, attributes: "", typeRegExp: 2);
|
||||
List<String> pageUrls = [];
|
||||
|
||||
if (imgs.length == 1) {
|
||||
final pages = querySelectorAll(res,
|
||||
selector: "#single-pager",
|
||||
typeElement: 2,
|
||||
attributes: "",
|
||||
typeRegExp: 0)
|
||||
.first;
|
||||
|
||||
final pagesNumber = querySelectorAll(pages,
|
||||
selector: "option", typeElement: 2, attributes: "", typeRegExp: 0);
|
||||
|
||||
for (var i = 0; i < pagesNumber.length; i++) {
|
||||
final val = i + 1;
|
||||
if (i.toString().length == 1) {
|
||||
pageUrls.add(querySelectorAll(pagesSelectorRes,
|
||||
selector: "img",
|
||||
typeElement: 2,
|
||||
attributes: "",
|
||||
typeRegExp: 2)
|
||||
.first
|
||||
.replaceAll("01", '0$val'));
|
||||
} else {
|
||||
pageUrls.add(querySelectorAll(pagesSelectorRes,
|
||||
selector: "img",
|
||||
typeElement: 2,
|
||||
attributes: "",
|
||||
typeRegExp: 2)
|
||||
.first
|
||||
.replaceAll("01", val.toString()));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return imgs;
|
||||
}
|
||||
return pageUrls;
|
||||
}
|
||||
|
||||
@override
|
||||
List<dynamic> getFilterList(MSource source) {
|
||||
return [
|
||||
TextFilter("AuthorFilter", "Author"),
|
||||
TextFilter("ArtistFilter", "Artist"),
|
||||
TextFilter("YearFilter", "Year of Released"),
|
||||
GroupFilter("StatusFilter", "Status", [
|
||||
CheckBoxFilter("Completed", "end"),
|
||||
CheckBoxFilter("Ongoing", "on-going"),
|
||||
CheckBoxFilter("Canceled", "canceled"),
|
||||
CheckBoxFilter("On Hold", "on-hold"),
|
||||
]),
|
||||
SelectFilter("OrderByFilter", "Order By", 0, [
|
||||
SelectFilterOption("Relevance", ""),
|
||||
SelectFilterOption("Latest", "latest"),
|
||||
SelectFilterOption("A-Z", "alphabet"),
|
||||
SelectFilterOption("Rating", "rating"),
|
||||
SelectFilterOption("Trending", "trending"),
|
||||
SelectFilterOption("Most Views", "views"),
|
||||
SelectFilterOption("New", "new-manga"),
|
||||
]),
|
||||
SelectFilter("AdultContentFilter", "Adult Content", 0, [
|
||||
SelectFilterOption("All", ""),
|
||||
SelectFilterOption("None", "0"),
|
||||
SelectFilterOption("Only", "1"),
|
||||
])
|
||||
];
|
||||
}
|
||||
|
||||
String ll(String url) {
|
||||
if (url.contains("?")) {
|
||||
return "&";
|
||||
}
|
||||
return "?";
|
||||
}
|
||||
}
|
||||
|
||||
Madara main() {
|
||||
return Madara();
|
||||
}
|
||||
303
manga/multisrc/madara/madara.dart
Normal file
303
manga/multisrc/madara/madara.dart
Normal file
@@ -0,0 +1,303 @@
|
||||
import 'package:mangayomi/bridge_lib.dart';
|
||||
import 'dart:convert';
|
||||
|
||||
class Madara extends MProvider {
|
||||
Madara();
|
||||
|
||||
@override
|
||||
Future<MPages> getPopular(MSource source, int page) async {
|
||||
final url = "${source.baseUrl}/manga/page/$page/?m_orderby=views";
|
||||
final data = {"url": url, "sourceId": source.id};
|
||||
final res = await http('GET', json.encode(data));
|
||||
final document = parseHtml(res);
|
||||
return mangaFromElements(document.select("div.page-item-detail"));
|
||||
}
|
||||
|
||||
@override
|
||||
Future<MPages> getLatestUpdates(MSource source, int page) async {
|
||||
final url = "${source.baseUrl}/manga/page/$page/?m_orderby=latest";
|
||||
final data = {"url": url, "sourceId": source.id};
|
||||
final res = await http('GET', json.encode(data));
|
||||
final document = parseHtml(res);
|
||||
return mangaFromElements(document.select("div.page-item-detail"));
|
||||
}
|
||||
|
||||
@override
|
||||
Future<MPages> search(
|
||||
MSource source, String query, int page, FilterList filterList) async {
|
||||
final filters = filterList.filters;
|
||||
|
||||
String url = "${source.baseUrl}/?s=$query&post_type=wp-manga";
|
||||
|
||||
for (var filter in filters) {
|
||||
if (filter.type == "AuthorFilter") {
|
||||
if (filter.state.isNotEmpty) {
|
||||
url += "${ll(url)}author=${Uri.encodeComponent(filter.state)}";
|
||||
}
|
||||
} else if (filter.type == "ArtistFilter") {
|
||||
if (filter.state.isNotEmpty) {
|
||||
url += "${ll(url)}artist=${Uri.encodeComponent(filter.state)}";
|
||||
}
|
||||
} else if (filter.type == "YearFilter") {
|
||||
if (filter.state.isNotEmpty) {
|
||||
url += "${ll(url)}release=${Uri.encodeComponent(filter.state)}";
|
||||
}
|
||||
} else if (filter.type == "StatusFilter") {
|
||||
final status = (filter.state as List).where((e) => e.state).toList();
|
||||
if (status.isNotEmpty) {
|
||||
for (var st in status) {
|
||||
url += "${ll(url)}status[]=${st.value},";
|
||||
}
|
||||
}
|
||||
} else if (filter.type == "OrderByFilter") {
|
||||
if (filter.state != 0) {
|
||||
final order = filter.values[filter.state].value;
|
||||
url += "${ll(url)}m_orderby=$order";
|
||||
}
|
||||
} else if (filter.type == "AdultContentFilter") {
|
||||
final ctn = filter.values[filter.state].value;
|
||||
if (ctn.isNotEmpty) {
|
||||
url += "${ll(url)}adult=$ctn";
|
||||
}
|
||||
} else if (filter.type == "GenreListFilter") {
|
||||
final genres = (filter.state as List).where((e) => e.state).toList();
|
||||
if (genres.isNotEmpty) {
|
||||
for (var genre in genres) {
|
||||
url += "${ll(url)}genre[]=${genre.value},";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
final data = {"url": url, "sourceId": source.id};
|
||||
final res = await http('GET', json.encode(data));
|
||||
final document = parseHtml(res);
|
||||
return mangaFromElements(document.select("div.c-tabs-item__content"));
|
||||
}
|
||||
|
||||
@override
|
||||
Future<MManga> getDetail(MSource source, String url) async {
|
||||
final statusList = [
|
||||
{
|
||||
"OnGoing": 0,
|
||||
"Продолжается": 0,
|
||||
"Updating": 0,
|
||||
"Em Lançamento": 0,
|
||||
"Em lançamento": 0,
|
||||
"Em andamento": 0,
|
||||
"Em Andamento": 0,
|
||||
"En cours": 0,
|
||||
"Ativo": 0,
|
||||
"Lançando": 0,
|
||||
"Đang Tiến Hành": 0,
|
||||
"Devam Ediyor": 0,
|
||||
"Devam ediyor": 0,
|
||||
"In Corso": 0,
|
||||
"In Arrivo": 0,
|
||||
"مستمرة": 0,
|
||||
"مستمر": 0,
|
||||
"En Curso": 0,
|
||||
"En curso": 0,
|
||||
"Emision": 0,
|
||||
"En marcha": 0,
|
||||
"Publicandose": 0,
|
||||
"En emision": 0,
|
||||
"连载中": 0,
|
||||
"Completed": 1,
|
||||
"Completo": 1,
|
||||
"Completado": 1,
|
||||
"Concluído": 1,
|
||||
"Concluido": 1,
|
||||
"Finalizado": 1,
|
||||
"Terminé": 1,
|
||||
"Hoàn Thành": 1,
|
||||
"مكتملة": 1,
|
||||
"مكتمل": 1,
|
||||
"已完结": 1,
|
||||
"On Hold": 2,
|
||||
"Pausado": 2,
|
||||
"En espera": 2,
|
||||
"Canceled": 3,
|
||||
"Cancelado": 3,
|
||||
}
|
||||
];
|
||||
MManga manga = MManga();
|
||||
String res = "";
|
||||
final datas = {"url": url, "sourceId": source.id};
|
||||
res = await http('GET', json.encode(datas));
|
||||
final document = parseHtml(res);
|
||||
manga.author = document.selectFirst("div.author-content > a")?.text ?? "";
|
||||
|
||||
manga.description = document
|
||||
.selectFirst(
|
||||
"div.description-summary div.summary__content, div.summary_content div.post-content_item > h5 + div, div.summary_content div.manga-excerpt, div.sinopsis div.contenedor, .description-summary > p")
|
||||
?.text ??
|
||||
"";
|
||||
|
||||
final imageElement = document.selectFirst("div.summary_image img");
|
||||
final image = imageElement?.attr("data-src") ??
|
||||
imageElement?.attr("data-lazy-src") ??
|
||||
imageElement?.attr("srcset") ??
|
||||
imageElement?.getSrc;
|
||||
if (image != null) {
|
||||
manga.imageUrl = image;
|
||||
}
|
||||
|
||||
final id = document
|
||||
.selectFirst("div[id^=manga-chapters-holder]")
|
||||
?.attr("data-id") ??
|
||||
"";
|
||||
String mangaId = "";
|
||||
if (id.isNotEmpty) {
|
||||
mangaId = id;
|
||||
}
|
||||
final status = document.selectFirst("div.summary-content")?.text ?? "";
|
||||
manga.status = parseStatus(status, statusList);
|
||||
manga.genre =
|
||||
document.select("div.genres-content a")?.map((e) => e.text).toList() ??
|
||||
[];
|
||||
|
||||
final baseUrl = "${source.baseUrl}/";
|
||||
final headers = {
|
||||
"Referer": baseUrl,
|
||||
"Content-Type": "application/x-www-form-urlencoded",
|
||||
"X-Requested-With": "XMLHttpRequest"
|
||||
};
|
||||
final urll =
|
||||
"${baseUrl}wp-admin/admin-ajax.php?action=manga_get_chapters&manga=$mangaId";
|
||||
final datasP = {"url": urll, "headers": headers, "sourceId": source.id};
|
||||
res = await http('POST', json.encode(datasP));
|
||||
if (res == "error" || mangaId.isEmpty) {
|
||||
final urlP = "${url}ajax/chapters";
|
||||
final datasP = {"url": urlP, "headers": headers, "sourceId": source.id};
|
||||
res = await http('POST', json.encode(datasP));
|
||||
}
|
||||
|
||||
List<MChapter> chaptersList =
|
||||
parseHtml(res).select('li.wp-manga-chapter').map((MElement e) {
|
||||
String date = "";
|
||||
List<MElement>? dateEList = e
|
||||
.select('img')
|
||||
?.where((MElement e) => !(e.className.contains("thumb")))
|
||||
.toList();
|
||||
if (dateEList != null && dateEList.isNotEmpty) {
|
||||
final dateE = (dateEList.first as MElement).attr("alt");
|
||||
if (dateE != null) {
|
||||
date = parseDates([dateE], source.dateFormat, source.dateFormatLocale)
|
||||
.first;
|
||||
}
|
||||
}
|
||||
if (date.isEmpty) {
|
||||
final dateE = e.selectFirst('span a')?.attr("title");
|
||||
if (dateE != null) {
|
||||
date = parseDates([dateE], source.dateFormat, source.dateFormatLocale)
|
||||
.first;
|
||||
}
|
||||
}
|
||||
if (date.isEmpty) {
|
||||
final dateE = e.selectFirst('span.chapter-release-date')?.text;
|
||||
if (dateE != null) {
|
||||
date = parseDates([dateE], source.dateFormat, source.dateFormatLocale)
|
||||
.first;
|
||||
}
|
||||
}
|
||||
MChapter chapter = MChapter();
|
||||
chapter.name = e.selectFirst('a').text;
|
||||
chapter.url = e.selectFirst('a').getHref;
|
||||
if (source.dateFormat.isNotEmpty) chapter.dateUpload = date;
|
||||
return chapter;
|
||||
}).toList();
|
||||
manga.chapters = chaptersList;
|
||||
return manga;
|
||||
}
|
||||
|
||||
@override
|
||||
Future<List<String>> getPageList(MSource source, String url) async {
|
||||
final datas = {"url": url, "sourceId": source.id};
|
||||
final res = await http('GET', json.encode(datas));
|
||||
final document = parseHtml(res);
|
||||
final pageElement = document.selectFirst(
|
||||
"div.page-break, li.blocks-gallery-item, .reading-content, .text-left img");
|
||||
|
||||
List<String> imgs = pageElement.select("img").map((e) => e.getSrc).toList();
|
||||
|
||||
List<String> pageUrls = [];
|
||||
|
||||
if (imgs.length == 1) {
|
||||
final pagesNumber =
|
||||
document.selectFirst("#single-pager").select("option");
|
||||
|
||||
for (var i = 0; i < pagesNumber.length; i++) {
|
||||
final val = i + 1;
|
||||
if (i.toString().length == 1) {
|
||||
pageUrls.add(imgs.first.replaceAll("01", '0$val'));
|
||||
} else {
|
||||
pageUrls.add(imgs.first.replaceAll("01", val.toString()));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return imgs;
|
||||
}
|
||||
return pageUrls;
|
||||
}
|
||||
|
||||
MPages mangaFromElements(List<MElement> elements) {
|
||||
List<MManga> mangaList = [];
|
||||
|
||||
for (var i = 0; i < elements.length; i++) {
|
||||
final postTitle = elements[i].selectFirst("div.post-title a");
|
||||
final imageElement = elements[i].selectFirst("img");
|
||||
final image = imageElement?.attr("data-src") ??
|
||||
imageElement?.attr("data-lazy-src") ??
|
||||
imageElement?.attr("srcset") ??
|
||||
imageElement?.getSrc ??
|
||||
"";
|
||||
MManga manga = MManga();
|
||||
manga.name = postTitle.text;
|
||||
manga.imageUrl = substringBefore(image, " ");
|
||||
manga.link = postTitle.getHref;
|
||||
mangaList.add(manga);
|
||||
}
|
||||
|
||||
return MPages(mangaList, true);
|
||||
}
|
||||
|
||||
@override
|
||||
List<dynamic> getFilterList(MSource source) {
|
||||
return [
|
||||
TextFilter("AuthorFilter", "Author"),
|
||||
TextFilter("ArtistFilter", "Artist"),
|
||||
TextFilter("YearFilter", "Year of Released"),
|
||||
GroupFilter("StatusFilter", "Status", [
|
||||
CheckBoxFilter("Completed", "end"),
|
||||
CheckBoxFilter("Ongoing", "on-going"),
|
||||
CheckBoxFilter("Canceled", "canceled"),
|
||||
CheckBoxFilter("On Hold", "on-hold"),
|
||||
]),
|
||||
SelectFilter("OrderByFilter", "Order By", 0, [
|
||||
SelectFilterOption("Relevance", ""),
|
||||
SelectFilterOption("Latest", "latest"),
|
||||
SelectFilterOption("A-Z", "alphabet"),
|
||||
SelectFilterOption("Rating", "rating"),
|
||||
SelectFilterOption("Trending", "trending"),
|
||||
SelectFilterOption("Most Views", "views"),
|
||||
SelectFilterOption("New", "new-manga"),
|
||||
]),
|
||||
SelectFilter("AdultContentFilter", "Adult Content", 0, [
|
||||
SelectFilterOption("All", ""),
|
||||
SelectFilterOption("None", "0"),
|
||||
SelectFilterOption("Only", "1"),
|
||||
])
|
||||
];
|
||||
}
|
||||
|
||||
String ll(String url) {
|
||||
if (url.contains("?")) {
|
||||
return "&";
|
||||
}
|
||||
return "?";
|
||||
}
|
||||
}
|
||||
|
||||
Madara main() {
|
||||
return Madara();
|
||||
}
|
||||
@@ -164,9 +164,9 @@ import 'src/comicarab/comicarab.dart';
|
||||
import 'src/manga3asq/manga3asq.dart';
|
||||
import 'src/bakamh/bakamh.dart';
|
||||
|
||||
const madaraVersion = "0.0.5";
|
||||
const madaraVersion = "0.0.55";
|
||||
const madaraSourceCodeUrl =
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/madara-v$madaraVersion.dart";
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/madara/madara.dart";
|
||||
|
||||
List<Source> get madaraSourcesList => _madaraSourcesList;
|
||||
List<Source> _madaraSourcesList = [
|
||||
|
||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
||||
lang: "en",
|
||||
isNsfw:true,
|
||||
typeSource: "madara",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/src/adultwebtoon/icon.png",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/madara/src/adultwebtoon/icon.png",
|
||||
dateFormat:"MMMM dd, yyyy",
|
||||
dateFormatLocale:"en_us",
|
||||
);
|
||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
||||
lang: "pt-BR",
|
||||
|
||||
typeSource: "madara",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/src/akumanotenshi/icon.png",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/madara/src/akumanotenshi/icon.png",
|
||||
dateFormat:"dd/MM/yyyy",
|
||||
dateFormatLocale:"pt-br",
|
||||
);
|
||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
||||
lang: "tr",
|
||||
|
||||
typeSource: "madara",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/src/anikiga/icon.png",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/madara/src/anikiga/icon.png",
|
||||
dateFormat:"d MMMMM yyyy",
|
||||
dateFormatLocale:"tr",
|
||||
);
|
||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
||||
lang: "es",
|
||||
isNsfw:true,
|
||||
typeSource: "madara",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/src/apollcomics/icon.png",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/madara/src/apollcomics/icon.png",
|
||||
dateFormat:"dd MMMM, yyyy",
|
||||
dateFormatLocale:"es",
|
||||
);
|
||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
||||
lang: "es",
|
||||
isNsfw:true,
|
||||
typeSource: "madara",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/src/apolltoons/icon.png",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/madara/src/apolltoons/icon.png",
|
||||
dateFormat:"dd MMMMM, yyyy",
|
||||
dateFormatLocale:"es",
|
||||
);
|
||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
||||
lang: "tr",
|
||||
|
||||
typeSource: "madara",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/src/araznovel/icon.png",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/madara/src/araznovel/icon.png",
|
||||
dateFormat:"d MMMM yyyy",
|
||||
dateFormatLocale:"en",
|
||||
);
|
||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
||||
lang: "pt-BR",
|
||||
|
||||
typeSource: "madara",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/src/arthurscan/icon.png",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/madara/src/arthurscan/icon.png",
|
||||
dateFormat:"MMMMM dd, yyyy",
|
||||
dateFormatLocale:"pt-br",
|
||||
);
|
||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
||||
lang: "fr",
|
||||
|
||||
typeSource: "madara",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/src/astralmanga/icon.png",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/madara/src/astralmanga/icon.png",
|
||||
dateFormat:"dd/mm/yyyy",
|
||||
dateFormatLocale:"fr",
|
||||
);
|
||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
||||
lang: "en",
|
||||
|
||||
typeSource: "madara",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/src/asurascansus/icon.png",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/madara/src/asurascansus/icon.png",
|
||||
dateFormat:"MMMM dd, yyyy",
|
||||
dateFormatLocale:"en_us",
|
||||
);
|
||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
||||
lang: "zh",
|
||||
isNsfw:true,
|
||||
typeSource: "madara",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/src/bakamh/icon.png",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/madara/src/bakamh/icon.png",
|
||||
|
||||
|
||||
);
|
||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
||||
lang: "en",
|
||||
isNsfw:true,
|
||||
typeSource: "madara",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/src/bananamanga/icon.png",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/madara/src/bananamanga/icon.png",
|
||||
dateFormat:"MMMM dd, yyyy",
|
||||
dateFormatLocale:"en_us",
|
||||
);
|
||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
||||
lang: "es",
|
||||
|
||||
typeSource: "madara",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/src/barmanga/icon.png",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/madara/src/barmanga/icon.png",
|
||||
dateFormat:"MM/dd/yyyy",
|
||||
dateFormatLocale:"es",
|
||||
);
|
||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
||||
lang: "ru",
|
||||
|
||||
typeSource: "madara",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/src/bestmanga/icon.png",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/madara/src/bestmanga/icon.png",
|
||||
dateFormat:"dd.MM.yyyy",
|
||||
dateFormatLocale:"ru",
|
||||
);
|
||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
||||
lang: "id",
|
||||
isNsfw:true,
|
||||
typeSource: "madara",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/src/birdtoon/icon.png",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/madara/src/birdtoon/icon.png",
|
||||
dateFormat:"MMMM dd, yyyy",
|
||||
dateFormatLocale:"en_us",
|
||||
);
|
||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
||||
lang: "pt-BR",
|
||||
isNsfw:true,
|
||||
typeSource: "madara",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/src/cerisescans/icon.png",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/madara/src/cerisescans/icon.png",
|
||||
dateFormat:"dd 'de' MMMMM 'de' yyyy",
|
||||
dateFormatLocale:"pt-br",
|
||||
);
|
||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
||||
lang: "en",
|
||||
|
||||
typeSource: "madara",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/src/chibimanga/icon.png",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/madara/src/chibimanga/icon.png",
|
||||
dateFormat:"MMMM dd, yyyy",
|
||||
dateFormatLocale:"en_us",
|
||||
);
|
||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
||||
lang: "tr",
|
||||
|
||||
typeSource: "madara",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/src/clovermanga/icon.png",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/madara/src/clovermanga/icon.png",
|
||||
dateFormat:"MMMM dd, yyyy",
|
||||
dateFormatLocale:"tr",
|
||||
);
|
||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
||||
lang: "es",
|
||||
|
||||
typeSource: "madara",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/src/cocorip/icon.png",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/madara/src/cocorip/icon.png",
|
||||
dateFormat:"dd/MM/yyyy",
|
||||
dateFormatLocale:"es",
|
||||
);
|
||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
||||
lang: "en",
|
||||
|
||||
typeSource: "madara",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/src/coffeemanga/icon.png",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/madara/src/coffeemanga/icon.png",
|
||||
dateFormat:"MMMM dd, yyyy",
|
||||
dateFormatLocale:"en_us",
|
||||
);
|
||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
||||
lang: "ar",
|
||||
isNsfw:true,
|
||||
typeSource: "madara",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/src/comicarab/icon.png",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/madara/src/comicarab/icon.png",
|
||||
|
||||
|
||||
);
|
||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
||||
lang: "all",
|
||||
isNsfw:true,
|
||||
typeSource: "madara",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/src/comicznetv2/icon.png",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/madara/src/comicznetv2/icon.png",
|
||||
dateFormat:"MMMM dd, yyyy",
|
||||
dateFormatLocale:"en_us",
|
||||
);
|
||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
||||
lang: "en",
|
||||
isNsfw:true,
|
||||
typeSource: "madara",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/src/decadencescans/icon.png",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/madara/src/decadencescans/icon.png",
|
||||
dateFormat:"MMMM dd, yyyy",
|
||||
dateFormatLocale:"en_us",
|
||||
);
|
||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
||||
lang: "pt-BR",
|
||||
isNsfw:true,
|
||||
typeSource: "madara",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/src/dessertscan/icon.png",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/madara/src/dessertscan/icon.png",
|
||||
dateFormat:"dd/MM/yyyy",
|
||||
dateFormatLocale:"pt-br",
|
||||
);
|
||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
||||
lang: "th",
|
||||
|
||||
typeSource: "madara",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/src/doodmanga/icon.png",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/madara/src/doodmanga/icon.png",
|
||||
dateFormat:"dd MMMMM yyyy",
|
||||
dateFormatLocale:"th",
|
||||
);
|
||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
||||
lang: "en",
|
||||
|
||||
typeSource: "madara",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/src/elitemanga/icon.png",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/madara/src/elitemanga/icon.png",
|
||||
dateFormat:"MMMM dd, yyyy",
|
||||
dateFormatLocale:"en_us",
|
||||
);
|
||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
||||
lang: "es",
|
||||
|
||||
typeSource: "madara",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/src/emperorscan/icon.png",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/madara/src/emperorscan/icon.png",
|
||||
dateFormat:"MMMM dd, yyyy",
|
||||
dateFormatLocale:"es",
|
||||
);
|
||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
||||
lang: "tr",
|
||||
|
||||
typeSource: "madara",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/src/evascans/icon.png",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/madara/src/evascans/icon.png",
|
||||
dateFormat:"MMM d, yyy",
|
||||
dateFormatLocale:"tr",
|
||||
);
|
||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
||||
lang: "en",
|
||||
|
||||
typeSource: "madara",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/src/factmanga/icon.png",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/madara/src/factmanga/icon.png",
|
||||
dateFormat:"MMMM dd, yyyy",
|
||||
dateFormatLocale:"en_us",
|
||||
);
|
||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
||||
lang: "ar",
|
||||
|
||||
typeSource: "madara",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/src/falconmanga/icon.png",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/madara/src/falconmanga/icon.png",
|
||||
|
||||
|
||||
);
|
||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
||||
lang: "pt-br",
|
||||
isNsfw:true,
|
||||
typeSource: "madara",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/src/finalscans/icon.png",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/madara/src/finalscans/icon.png",
|
||||
dateFormat:"MMMM d, yyyy",
|
||||
dateFormatLocale:"pt-br",
|
||||
);
|
||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
||||
lang: "en",
|
||||
|
||||
typeSource: "madara",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/src/firstkissdashmanga/icon.png",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/madara/src/firstkissdashmanga/icon.png",
|
||||
dateFormat:"MMMM dd, yyyy",
|
||||
dateFormatLocale:"en_us",
|
||||
);
|
||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
||||
lang: "en",
|
||||
isNsfw:true,
|
||||
typeSource: "madara",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/src/firstmanhwa/icon.png",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/madara/src/firstmanhwa/icon.png",
|
||||
dateFormat:"MMMM dd, yyyy",
|
||||
dateFormatLocale:"en_us",
|
||||
);
|
||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
||||
lang: "en",
|
||||
isNsfw:true,
|
||||
typeSource: "madara",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/src/flextapescans/icon.png",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/madara/src/flextapescans/icon.png",
|
||||
dateFormat:"MM/dd/yyy",
|
||||
dateFormatLocale:"en",
|
||||
);
|
||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
||||
lang: "en",
|
||||
isNsfw:true,
|
||||
typeSource: "madara",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/src/freemanga/icon.png",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/madara/src/freemanga/icon.png",
|
||||
dateFormat:"MMMM dd, yyyy",
|
||||
dateFormatLocale:"en_us",
|
||||
);
|
||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
||||
lang: "en",
|
||||
|
||||
typeSource: "madara",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/src/freemangatop/icon.png",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/madara/src/freemangatop/icon.png",
|
||||
dateFormat:"MMMM dd, yyyy",
|
||||
dateFormatLocale:"en_us",
|
||||
);
|
||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
||||
lang: "fr",
|
||||
|
||||
typeSource: "madara",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/src/frscan/icon.png",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/madara/src/frscan/icon.png",
|
||||
dateFormat:"MMMM d, yyyy",
|
||||
dateFormatLocale:"fr",
|
||||
);
|
||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
||||
lang: "pt-BR",
|
||||
isNsfw:true,
|
||||
typeSource: "madara",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/src/ghostscan/icon.png",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/madara/src/ghostscan/icon.png",
|
||||
dateFormat:"dd 'de' MMMMM 'de' yyyy",
|
||||
dateFormatLocale:"pt-br",
|
||||
);
|
||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
||||
lang: "en",
|
||||
isNsfw:true,
|
||||
typeSource: "madara",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/src/girlslovemanga/icon.png",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/madara/src/girlslovemanga/icon.png",
|
||||
dateFormat:"MMMM dd, yyyy",
|
||||
dateFormatLocale:"en_us",
|
||||
);
|
||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
||||
lang: "tr",
|
||||
|
||||
typeSource: "madara",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/src/glorymanga/icon.png",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/madara/src/glorymanga/icon.png",
|
||||
dateFormat:"dd/MM/yyy",
|
||||
dateFormatLocale:"tr",
|
||||
);
|
||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
||||
lang: "pt-BR",
|
||||
isNsfw:true,
|
||||
typeSource: "madara",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/src/gooffansub/icon.png",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/madara/src/gooffansub/icon.png",
|
||||
dateFormat:"dd/MM/yyy",
|
||||
dateFormatLocale:"pt-br",
|
||||
);
|
||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
||||
lang: "en",
|
||||
|
||||
typeSource: "madara",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/src/harimanga/icon.png",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/madara/src/harimanga/icon.png",
|
||||
dateFormat:"MMMM dd, yyyy",
|
||||
dateFormatLocale:"en_us",
|
||||
);
|
||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
||||
lang: "en",
|
||||
isNsfw:true,
|
||||
typeSource: "madara",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/src/hentai3z/icon.png",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/madara/src/hentai3z/icon.png",
|
||||
dateFormat:"MMMM dd, yyyy",
|
||||
dateFormatLocale:"en_us",
|
||||
);
|
||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
||||
lang: "vi",
|
||||
isNsfw:true,
|
||||
typeSource: "madara",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/src/hentaicube/icon.png",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/madara/src/hentaicube/icon.png",
|
||||
dateFormat:"dd/MM/yyyy",
|
||||
dateFormatLocale:"vi",
|
||||
);
|
||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
||||
lang: "en",
|
||||
isNsfw:true,
|
||||
typeSource: "madara",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/src/hentaimanga/icon.png",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/madara/src/hentaimanga/icon.png",
|
||||
dateFormat:"MMM d, yyyy",
|
||||
dateFormatLocale:"en_us",
|
||||
);
|
||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
||||
lang: "pt-BR",
|
||||
isNsfw:true,
|
||||
typeSource: "madara",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/src/hentaiteca/icon.png",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/madara/src/hentaiteca/icon.png",
|
||||
dateFormat:"MMMMM dd, yyyy",
|
||||
dateFormatLocale:"pt-br",
|
||||
);
|
||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
||||
lang: "en",
|
||||
isNsfw:true,
|
||||
typeSource: "madara",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/src/hentaiwebtoon/icon.png",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/madara/src/hentaiwebtoon/icon.png",
|
||||
dateFormat:"MMMM dd, yyyy",
|
||||
dateFormatLocale:"en_us",
|
||||
);
|
||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
||||
lang: "en",
|
||||
isNsfw:true,
|
||||
typeSource: "madara",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/src/hentaixcomic/icon.png",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/madara/src/hentaixcomic/icon.png",
|
||||
dateFormat:"MMM d, yyyy",
|
||||
dateFormatLocale:"en_us",
|
||||
);
|
||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
||||
lang: "en",
|
||||
isNsfw:true,
|
||||
typeSource: "madara",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/src/hentaixyuri/icon.png",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/madara/src/hentaixyuri/icon.png",
|
||||
dateFormat:"MMM d, yyyy",
|
||||
dateFormatLocale:"en_us",
|
||||
);
|
||||
@@ -9,5 +9,5 @@ Source _hentaizoneSource = Source(
|
||||
isNsfw: true,
|
||||
typeSource: "madara",
|
||||
iconUrl:
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/src/hentaizone/icon.png",
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/madara/src/hentaizone/icon.png",
|
||||
);
|
||||
|
||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
||||
lang: "pt-BR",
|
||||
isNsfw:true,
|
||||
typeSource: "madara",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/src/hipercool/icon.png",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/madara/src/hipercool/icon.png",
|
||||
dateFormat:"MMMM dd, yyyy",
|
||||
dateFormatLocale:"en_us",
|
||||
);
|
||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
||||
lang: "en",
|
||||
isNsfw:true,
|
||||
typeSource: "madara",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/src/hiperdex/icon.png",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/madara/src/hiperdex/icon.png",
|
||||
dateFormat:"MMMM dd, yyyy",
|
||||
dateFormatLocale:"en_us",
|
||||
);
|
||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
||||
lang: "en",
|
||||
isNsfw:true,
|
||||
typeSource: "madara",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/src/hm2d/icon.png",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/madara/src/hm2d/icon.png",
|
||||
dateFormat:"MMM d, yyyy",
|
||||
dateFormatLocale:"en_us",
|
||||
);
|
||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
||||
lang: "en",
|
||||
|
||||
typeSource: "madara",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/src/immortalupdates/icon.png",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/madara/src/immortalupdates/icon.png",
|
||||
dateFormat:"MMMM dd, yyyy",
|
||||
dateFormatLocale:"en_us",
|
||||
);
|
||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
||||
lang: "pt-BR",
|
||||
|
||||
typeSource: "madara",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/manga/multisrc/madara/src/imperioscans/icon.png",
|
||||
iconUrl:"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/manga/multisrc/madara/src/imperioscans/icon.png",
|
||||
dateFormat:"dd/MM/yyyy",
|
||||
dateFormatLocale:"pt-br",
|
||||
);
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user