mirror of
https://github.com/kodjodevf/mangayomi-extensions.git
synced 2026-02-14 10:51:17 +00:00
Refactor
This commit is contained in:
@@ -286,27 +286,44 @@ final String htmlString = '''
|
|||||||
print(xpathRes.first); // https://github.com/kodjodevf
|
print(xpathRes.first); // https://github.com/kodjodevf
|
||||||
|
|
||||||
```
|
```
|
||||||
`String` querySelector(`String html`, {`required String selector`}, {`required int typeElement`},{`required String attributes`})
|
### DOM selector
|
||||||
```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
|
|
||||||
```
|
|
||||||
|
|
||||||
`List<String>` querySelectorAll(`String html`, {`required String selector`}, {`required int typeElement`},{`required String attributes`}, {`required int typeRegExp`})
|
Example:
|
||||||
```bash
|
```bash
|
||||||
if typeRegExp == 0 you can use :
|
final String htmlString = '''
|
||||||
if typeElement == 0 // return list querySelector text
|
<html lang="en">
|
||||||
if typeElement == 1 // return list querySelector innerHtml
|
<body>
|
||||||
if typeElement == 2 // return list querySelector outerHtml
|
<div><a href='https://github.com/kodjodevf'>author</a></div>
|
||||||
if typeElement == 3 // return list querySelector attributes
|
<div class="head">div head</div>
|
||||||
else
|
<div class="container">
|
||||||
if typeRegExp == 1 // return list of element of href that match
|
<table>
|
||||||
if typeRegExp == 2 // return list of element of src that match
|
<tbody>
|
||||||
if typeRegExp == 3 // return list of element of datasrc that match
|
<tr>
|
||||||
if typeRegExp == 4 // return list of element of img that match
|
<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
|
### String utils
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
import '../../../model/source.dart';
|
import '../../../model/source.dart';
|
||||||
import 'src/frenchanime/frenchanime-v0.0.1.dart';
|
import 'src/frenchanime/frenchanime.dart';
|
||||||
import 'src/wiflix/wiflix.dart';
|
import 'src/wiflix/wiflix.dart';
|
||||||
|
|
||||||
const _datalifeengineVersion = "0.0.1";
|
const _datalifeengineVersion = "0.0.15";
|
||||||
const _datalifeengineSourceCodeUrl =
|
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> get datalifeengineSourcesList => _datalifeengineSourcesList;
|
||||||
List<Source> _datalifeengineSourcesList = [
|
List<Source> _datalifeengineSourcesList = [
|
||||||
|
|||||||
@@ -9,5 +9,5 @@ Source _frenchanimeSource = Source(
|
|||||||
typeSource: "datalifeengine",
|
typeSource: "datalifeengine",
|
||||||
isManga: false,
|
isManga: false,
|
||||||
iconUrl:
|
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",
|
typeSource: "datalifeengine",
|
||||||
isManga: false,
|
isManga: false,
|
||||||
iconUrl:
|
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/dopebox/dopebox.dart';
|
||||||
import 'src/sflix/sflix.dart';
|
import 'src/sflix/sflix.dart';
|
||||||
|
|
||||||
const _dopeflixVersion = "0.0.25";
|
const _dopeflixVersion = "0.0.3";
|
||||||
const _dopeflixSourceCodeUrl =
|
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> get dopeflixSourcesList => _dopeflixSourcesList;
|
||||||
List<Source> _dopeflixSourcesList = [
|
List<Source> _dopeflixSourcesList = [
|
||||||
|
|||||||
@@ -9,5 +9,5 @@ Source _dopeboxSource = Source(
|
|||||||
typeSource: "dopeflix",
|
typeSource: "dopeflix",
|
||||||
isManga: false,
|
isManga: false,
|
||||||
iconUrl:
|
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",
|
typeSource: "dopeflix",
|
||||||
isManga: false,
|
isManga: false,
|
||||||
iconUrl:
|
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/aniwatch/aniwatch.dart';
|
||||||
import 'src/kaido/kaido.dart';
|
import 'src/kaido/kaido.dart';
|
||||||
|
|
||||||
const _zorothemeVersion = "0.0.6";
|
const _zorothemeVersion = "0.0.65";
|
||||||
const _zorothemeSourceCodeUrl =
|
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> get zorothemeSourcesList => _zorothemeSourcesList;
|
||||||
List<Source> _zorothemeSourcesList = [
|
List<Source> _zorothemeSourcesList = [
|
||||||
|
|||||||
@@ -9,5 +9,5 @@ Source _aniwatchSource = Source(
|
|||||||
lang: "en",
|
lang: "en",
|
||||||
typeSource: "zorotheme",
|
typeSource: "zorotheme",
|
||||||
iconUrl:
|
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,
|
isManga: false,
|
||||||
typeSource: "zorotheme",
|
typeSource: "zorotheme",
|
||||||
iconUrl:
|
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';
|
import '../../../../model/source.dart';
|
||||||
|
|
||||||
Source get okanimeSource => _okanimeSource;
|
Source get okanimeSource => _okanimeSource;
|
||||||
const _okanimeVersion = "0.0.35";
|
const _okanimeVersion = "0.0.4";
|
||||||
const _okanimeSourceCodeUrl =
|
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(
|
Source _okanimeSource = Source(
|
||||||
name: "Okanime",
|
name: "Okanime",
|
||||||
baseUrl: "https://www.okanime.xyz",
|
baseUrl: "https://www.okanime.xyz",
|
||||||
lang: "ar",
|
lang: "ar",
|
||||||
typeSource: "single",
|
typeSource: "single",
|
||||||
iconUrl:
|
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,
|
sourceCodeUrl: _okanimeSourceCodeUrl,
|
||||||
version: _okanimeVersion,
|
version: _okanimeVersion,
|
||||||
isManga: false);
|
isManga: false);
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
import '../../../../model/source.dart';
|
import '../../../../model/source.dart';
|
||||||
|
|
||||||
Source get aniwave => _aniwave;
|
Source get aniwave => _aniwave;
|
||||||
const _aniwaveVersion = "0.0.25";
|
const _aniwaveVersion = "0.0.3";
|
||||||
const _aniwaveCodeUrl =
|
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(
|
Source _aniwave = Source(
|
||||||
name: "Aniwave",
|
name: "Aniwave",
|
||||||
baseUrl: "https://aniwave.to",
|
baseUrl: "https://aniwave.to",
|
||||||
lang: "en",
|
lang: "en",
|
||||||
typeSource: "single",
|
typeSource: "single",
|
||||||
iconUrl:
|
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,
|
sourceCodeUrl: _aniwaveCodeUrl,
|
||||||
version: _aniwaveVersion,
|
version: _aniwaveVersion,
|
||||||
isManga: false);
|
isManga: false);
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
import '../../../../model/source.dart';
|
import '../../../../model/source.dart';
|
||||||
|
|
||||||
Source get gogoanimeSource => _gogoanimeSource;
|
Source get gogoanimeSource => _gogoanimeSource;
|
||||||
const _gogoanimeVersion = "0.0.55";
|
const _gogoanimeVersion = "0.0.6";
|
||||||
const _gogoanimeSourceCodeUrl =
|
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(
|
Source _gogoanimeSource = Source(
|
||||||
name: "Gogoanime",
|
name: "Gogoanime",
|
||||||
baseUrl: "https://gogoanime3.net",
|
baseUrl: "https://gogoanime3.net",
|
||||||
lang: "en",
|
lang: "en",
|
||||||
typeSource: "single",
|
typeSource: "single",
|
||||||
iconUrl:
|
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,
|
sourceCodeUrl: _gogoanimeSourceCodeUrl,
|
||||||
version: _gogoanimeVersion,
|
version: _gogoanimeVersion,
|
||||||
isManga: false);
|
isManga: false);
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
import '../../../../model/source.dart';
|
import '../../../../model/source.dart';
|
||||||
|
|
||||||
Source get kisskhSource => _kisskhSource;
|
Source get kisskhSource => _kisskhSource;
|
||||||
const _kisskhVersion = "0.0.4";
|
const _kisskhVersion = "0.0.45";
|
||||||
const _kisskhSourceCodeUrl =
|
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(
|
Source _kisskhSource = Source(
|
||||||
name: "KissKH",
|
name: "KissKH",
|
||||||
baseUrl: "https://kisskh.co",
|
baseUrl: "https://kisskh.co",
|
||||||
lang: "en",
|
lang: "en",
|
||||||
typeSource: "single",
|
typeSource: "single",
|
||||||
iconUrl:
|
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,
|
sourceCodeUrl: _kisskhSourceCodeUrl,
|
||||||
version: _kisskhVersion,
|
version: _kisskhVersion,
|
||||||
isManga: false);
|
isManga: false);
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
import '../../../../model/source.dart';
|
import '../../../../model/source.dart';
|
||||||
|
|
||||||
Source get uhdmoviesSource => _uhdmoviesSource;
|
Source get uhdmoviesSource => _uhdmoviesSource;
|
||||||
const _uhdmoviesVersion = "0.0.15";
|
const _uhdmoviesVersion = "0.0.2";
|
||||||
const _uhdmoviesSourceCodeUrl =
|
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(
|
Source _uhdmoviesSource = Source(
|
||||||
name: "UHD Movies",
|
name: "UHD Movies",
|
||||||
baseUrl: "https://uhdmovies.zip",
|
baseUrl: "https://uhdmovies.zip",
|
||||||
lang: "en",
|
lang: "en",
|
||||||
typeSource: "single",
|
typeSource: "single",
|
||||||
iconUrl:
|
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,
|
sourceCodeUrl: _uhdmoviesSourceCodeUrl,
|
||||||
version: _uhdmoviesVersion,
|
version: _uhdmoviesVersion,
|
||||||
isManga: false);
|
isManga: false);
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
import '../../../../model/source.dart';
|
import '../../../../model/source.dart';
|
||||||
|
|
||||||
Source get animesultraSource => _animesultraSource;
|
Source get animesultraSource => _animesultraSource;
|
||||||
const _animesultraVersion = "0.0.45";
|
const _animesultraVersion = "0.0.5";
|
||||||
const _animesultraSourceCodeUrl =
|
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(
|
Source _animesultraSource = Source(
|
||||||
name: "AnimesUltra",
|
name: "AnimesUltra",
|
||||||
baseUrl: "https://ww.animesultra.net",
|
baseUrl: "https://ww.animesultra.net",
|
||||||
lang: "fr",
|
lang: "fr",
|
||||||
typeSource: "single",
|
typeSource: "single",
|
||||||
iconUrl:
|
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,
|
sourceCodeUrl: _animesultraSourceCodeUrl,
|
||||||
version: _animesultraVersion,
|
version: _animesultraVersion,
|
||||||
isManga: false,
|
isManga: false,
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
import '../../../../model/source.dart';
|
import '../../../../model/source.dart';
|
||||||
|
|
||||||
Source get franimeSource => _franimeSource;
|
Source get franimeSource => _franimeSource;
|
||||||
const _franimeVersion = "0.0.5";
|
const _franimeVersion = "0.0.55";
|
||||||
const _franimeSourceCodeUrl =
|
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(
|
Source _franimeSource = Source(
|
||||||
name: "FrAnime",
|
name: "FrAnime",
|
||||||
baseUrl: "https://franime.fr",
|
baseUrl: "https://franime.fr",
|
||||||
@@ -11,7 +11,7 @@ Source _franimeSource = Source(
|
|||||||
lang: "fr",
|
lang: "fr",
|
||||||
typeSource: "single",
|
typeSource: "single",
|
||||||
iconUrl:
|
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,
|
sourceCodeUrl: _franimeSourceCodeUrl,
|
||||||
version: _franimeVersion,
|
version: _franimeVersion,
|
||||||
isManga: false,
|
isManga: false,
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
import '../../../../model/source.dart';
|
import '../../../../model/source.dart';
|
||||||
|
|
||||||
Source get otakufr => _otakufr;
|
Source get otakufr => _otakufr;
|
||||||
const otakufrVersion = "0.0.55";
|
const otakufrVersion = "0.0.6";
|
||||||
const otakufrCodeUrl =
|
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(
|
Source _otakufr = Source(
|
||||||
name: "OtakuFr",
|
name: "OtakuFr",
|
||||||
baseUrl: "https://otakufr.co",
|
baseUrl: "https://otakufr.co",
|
||||||
lang: "fr",
|
lang: "fr",
|
||||||
typeSource: "single",
|
typeSource: "single",
|
||||||
iconUrl:
|
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,
|
sourceCodeUrl: otakufrCodeUrl,
|
||||||
version: otakufrVersion,
|
version: otakufrVersion,
|
||||||
isManga: false,
|
isManga: false,
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
import '../../../../model/source.dart';
|
import '../../../../model/source.dart';
|
||||||
|
|
||||||
Source get nimegami => _nimegami;
|
Source get nimegami => _nimegami;
|
||||||
const _nimegamiVersion = "0.0.3";
|
const _nimegamiVersion = "0.0.35";
|
||||||
const _nimegamiCodeUrl =
|
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(
|
Source _nimegami = Source(
|
||||||
name: "NimeGami",
|
name: "NimeGami",
|
||||||
baseUrl: "https://nimegami.id",
|
baseUrl: "https://nimegami.id",
|
||||||
lang: "id",
|
lang: "id",
|
||||||
typeSource: "single",
|
typeSource: "single",
|
||||||
iconUrl:
|
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,
|
sourceCodeUrl: _nimegamiCodeUrl,
|
||||||
version: _nimegamiVersion,
|
version: _nimegamiVersion,
|
||||||
isManga: false);
|
isManga: false);
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
import '../../../../model/source.dart';
|
import '../../../../model/source.dart';
|
||||||
|
|
||||||
Source get oploverz => _oploverz;
|
Source get oploverz => _oploverz;
|
||||||
const _oploverzVersion = "0.0.25";
|
const _oploverzVersion = "0.0.3";
|
||||||
const _oploverzCodeUrl =
|
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(
|
Source _oploverz = Source(
|
||||||
name: "Oploverz",
|
name: "Oploverz",
|
||||||
baseUrl: "https://oploverz.red",
|
baseUrl: "https://oploverz.red",
|
||||||
lang: "id",
|
lang: "id",
|
||||||
typeSource: "single",
|
typeSource: "single",
|
||||||
iconUrl:
|
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,
|
sourceCodeUrl: _oploverzCodeUrl,
|
||||||
version: _oploverzVersion,
|
version: _oploverzVersion,
|
||||||
isManga: false);
|
isManga: false);
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
import '../../../../model/source.dart';
|
import '../../../../model/source.dart';
|
||||||
|
|
||||||
Source get otakudesu => _otakudesu;
|
Source get otakudesu => _otakudesu;
|
||||||
const _otakudesuVersion = "0.0.3";
|
const _otakudesuVersion = "0.0.35";
|
||||||
const _otakudesuCodeUrl =
|
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(
|
Source _otakudesu = Source(
|
||||||
name: "OtakuDesu",
|
name: "OtakuDesu",
|
||||||
baseUrl: "https://otakudesu.cam",
|
baseUrl: "https://otakudesu.cam",
|
||||||
lang: "id",
|
lang: "id",
|
||||||
typeSource: "single",
|
typeSource: "single",
|
||||||
iconUrl:
|
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,
|
sourceCodeUrl: _otakudesuCodeUrl,
|
||||||
version: _otakudesuVersion,
|
version: _otakudesuVersion,
|
||||||
isManga: false);
|
isManga: false);
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
import '../../../../model/source.dart';
|
import '../../../../model/source.dart';
|
||||||
|
|
||||||
Source get animesaturn => _animesaturn;
|
Source get animesaturn => _animesaturn;
|
||||||
const _animesaturnVersion = "0.0.15";
|
const _animesaturnVersion = "0.0.2";
|
||||||
const _animesaturnCodeUrl =
|
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(
|
Source _animesaturn = Source(
|
||||||
name: "AnimeSaturn",
|
name: "AnimeSaturn",
|
||||||
baseUrl: "https://www.animesaturn.tv",
|
baseUrl: "https://www.animesaturn.tv",
|
||||||
lang: "it",
|
lang: "it",
|
||||||
typeSource: "single",
|
typeSource: "single",
|
||||||
iconUrl:
|
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,
|
sourceCodeUrl: _animesaturnCodeUrl,
|
||||||
version: _animesaturnVersion,
|
version: _animesaturnVersion,
|
||||||
isManga: false);
|
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/omegascans/omegascans.dart';
|
||||||
import 'src/perfscan/perfscan.dart';
|
import 'src/perfscan/perfscan.dart';
|
||||||
|
|
||||||
const heancmsVersion = "0.0.45";
|
const heancmsVersion = "0.0.5";
|
||||||
const heancmsSourceCodeUrl =
|
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> get heancmsSourcesList => _heancmsSourcesList;
|
||||||
List<Source> _heancmsSourcesList = [
|
List<Source> _heancmsSourcesList = [
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ Source _omegascansSource = Source(
|
|||||||
isNsfw: true,
|
isNsfw: true,
|
||||||
typeSource: "heancms",
|
typeSource: "heancms",
|
||||||
iconUrl:
|
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",
|
dateFormat: "yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ",
|
||||||
dateFormatLocale: "en",
|
dateFormatLocale: "en",
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ Source _perfscanSource = Source(
|
|||||||
lang: "fr",
|
lang: "fr",
|
||||||
typeSource: "heancms",
|
typeSource: "heancms",
|
||||||
iconUrl:
|
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",
|
dateFormat: "yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ",
|
||||||
dateFormatLocale: "en",
|
dateFormatLocale: "en",
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ Source _yugenmangasSource = Source(
|
|||||||
isNsfw: true,
|
isNsfw: true,
|
||||||
typeSource: "heancms",
|
typeSource: "heancms",
|
||||||
iconUrl:
|
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",
|
dateFormat: "yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ",
|
||||||
dateFormatLocale: "en",
|
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/manga3asq/manga3asq.dart';
|
||||||
import 'src/bakamh/bakamh.dart';
|
import 'src/bakamh/bakamh.dart';
|
||||||
|
|
||||||
const madaraVersion = "0.0.5";
|
const madaraVersion = "0.0.55";
|
||||||
const madaraSourceCodeUrl =
|
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> get madaraSourcesList => _madaraSourcesList;
|
||||||
List<Source> _madaraSourcesList = [
|
List<Source> _madaraSourcesList = [
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
|||||||
lang: "en",
|
lang: "en",
|
||||||
isNsfw:true,
|
isNsfw:true,
|
||||||
typeSource: "madara",
|
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",
|
dateFormat:"MMMM dd, yyyy",
|
||||||
dateFormatLocale:"en_us",
|
dateFormatLocale:"en_us",
|
||||||
);
|
);
|
||||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
|||||||
lang: "pt-BR",
|
lang: "pt-BR",
|
||||||
|
|
||||||
typeSource: "madara",
|
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",
|
dateFormat:"dd/MM/yyyy",
|
||||||
dateFormatLocale:"pt-br",
|
dateFormatLocale:"pt-br",
|
||||||
);
|
);
|
||||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
|||||||
lang: "tr",
|
lang: "tr",
|
||||||
|
|
||||||
typeSource: "madara",
|
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",
|
dateFormat:"d MMMMM yyyy",
|
||||||
dateFormatLocale:"tr",
|
dateFormatLocale:"tr",
|
||||||
);
|
);
|
||||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
|||||||
lang: "es",
|
lang: "es",
|
||||||
isNsfw:true,
|
isNsfw:true,
|
||||||
typeSource: "madara",
|
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",
|
dateFormat:"dd MMMM, yyyy",
|
||||||
dateFormatLocale:"es",
|
dateFormatLocale:"es",
|
||||||
);
|
);
|
||||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
|||||||
lang: "es",
|
lang: "es",
|
||||||
isNsfw:true,
|
isNsfw:true,
|
||||||
typeSource: "madara",
|
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",
|
dateFormat:"dd MMMMM, yyyy",
|
||||||
dateFormatLocale:"es",
|
dateFormatLocale:"es",
|
||||||
);
|
);
|
||||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
|||||||
lang: "tr",
|
lang: "tr",
|
||||||
|
|
||||||
typeSource: "madara",
|
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",
|
dateFormat:"d MMMM yyyy",
|
||||||
dateFormatLocale:"en",
|
dateFormatLocale:"en",
|
||||||
);
|
);
|
||||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
|||||||
lang: "pt-BR",
|
lang: "pt-BR",
|
||||||
|
|
||||||
typeSource: "madara",
|
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",
|
dateFormat:"MMMMM dd, yyyy",
|
||||||
dateFormatLocale:"pt-br",
|
dateFormatLocale:"pt-br",
|
||||||
);
|
);
|
||||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
|||||||
lang: "fr",
|
lang: "fr",
|
||||||
|
|
||||||
typeSource: "madara",
|
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",
|
dateFormat:"dd/mm/yyyy",
|
||||||
dateFormatLocale:"fr",
|
dateFormatLocale:"fr",
|
||||||
);
|
);
|
||||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
|||||||
lang: "en",
|
lang: "en",
|
||||||
|
|
||||||
typeSource: "madara",
|
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",
|
dateFormat:"MMMM dd, yyyy",
|
||||||
dateFormatLocale:"en_us",
|
dateFormatLocale:"en_us",
|
||||||
);
|
);
|
||||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
|||||||
lang: "zh",
|
lang: "zh",
|
||||||
isNsfw:true,
|
isNsfw:true,
|
||||||
typeSource: "madara",
|
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",
|
lang: "en",
|
||||||
isNsfw:true,
|
isNsfw:true,
|
||||||
typeSource: "madara",
|
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",
|
dateFormat:"MMMM dd, yyyy",
|
||||||
dateFormatLocale:"en_us",
|
dateFormatLocale:"en_us",
|
||||||
);
|
);
|
||||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
|||||||
lang: "es",
|
lang: "es",
|
||||||
|
|
||||||
typeSource: "madara",
|
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",
|
dateFormat:"MM/dd/yyyy",
|
||||||
dateFormatLocale:"es",
|
dateFormatLocale:"es",
|
||||||
);
|
);
|
||||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
|||||||
lang: "ru",
|
lang: "ru",
|
||||||
|
|
||||||
typeSource: "madara",
|
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",
|
dateFormat:"dd.MM.yyyy",
|
||||||
dateFormatLocale:"ru",
|
dateFormatLocale:"ru",
|
||||||
);
|
);
|
||||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
|||||||
lang: "id",
|
lang: "id",
|
||||||
isNsfw:true,
|
isNsfw:true,
|
||||||
typeSource: "madara",
|
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",
|
dateFormat:"MMMM dd, yyyy",
|
||||||
dateFormatLocale:"en_us",
|
dateFormatLocale:"en_us",
|
||||||
);
|
);
|
||||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
|||||||
lang: "pt-BR",
|
lang: "pt-BR",
|
||||||
isNsfw:true,
|
isNsfw:true,
|
||||||
typeSource: "madara",
|
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",
|
dateFormat:"dd 'de' MMMMM 'de' yyyy",
|
||||||
dateFormatLocale:"pt-br",
|
dateFormatLocale:"pt-br",
|
||||||
);
|
);
|
||||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
|||||||
lang: "en",
|
lang: "en",
|
||||||
|
|
||||||
typeSource: "madara",
|
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",
|
dateFormat:"MMMM dd, yyyy",
|
||||||
dateFormatLocale:"en_us",
|
dateFormatLocale:"en_us",
|
||||||
);
|
);
|
||||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
|||||||
lang: "tr",
|
lang: "tr",
|
||||||
|
|
||||||
typeSource: "madara",
|
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",
|
dateFormat:"MMMM dd, yyyy",
|
||||||
dateFormatLocale:"tr",
|
dateFormatLocale:"tr",
|
||||||
);
|
);
|
||||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
|||||||
lang: "es",
|
lang: "es",
|
||||||
|
|
||||||
typeSource: "madara",
|
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",
|
dateFormat:"dd/MM/yyyy",
|
||||||
dateFormatLocale:"es",
|
dateFormatLocale:"es",
|
||||||
);
|
);
|
||||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
|||||||
lang: "en",
|
lang: "en",
|
||||||
|
|
||||||
typeSource: "madara",
|
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",
|
dateFormat:"MMMM dd, yyyy",
|
||||||
dateFormatLocale:"en_us",
|
dateFormatLocale:"en_us",
|
||||||
);
|
);
|
||||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
|||||||
lang: "ar",
|
lang: "ar",
|
||||||
isNsfw:true,
|
isNsfw:true,
|
||||||
typeSource: "madara",
|
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",
|
lang: "all",
|
||||||
isNsfw:true,
|
isNsfw:true,
|
||||||
typeSource: "madara",
|
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",
|
dateFormat:"MMMM dd, yyyy",
|
||||||
dateFormatLocale:"en_us",
|
dateFormatLocale:"en_us",
|
||||||
);
|
);
|
||||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
|||||||
lang: "en",
|
lang: "en",
|
||||||
isNsfw:true,
|
isNsfw:true,
|
||||||
typeSource: "madara",
|
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",
|
dateFormat:"MMMM dd, yyyy",
|
||||||
dateFormatLocale:"en_us",
|
dateFormatLocale:"en_us",
|
||||||
);
|
);
|
||||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
|||||||
lang: "pt-BR",
|
lang: "pt-BR",
|
||||||
isNsfw:true,
|
isNsfw:true,
|
||||||
typeSource: "madara",
|
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",
|
dateFormat:"dd/MM/yyyy",
|
||||||
dateFormatLocale:"pt-br",
|
dateFormatLocale:"pt-br",
|
||||||
);
|
);
|
||||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
|||||||
lang: "th",
|
lang: "th",
|
||||||
|
|
||||||
typeSource: "madara",
|
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",
|
dateFormat:"dd MMMMM yyyy",
|
||||||
dateFormatLocale:"th",
|
dateFormatLocale:"th",
|
||||||
);
|
);
|
||||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
|||||||
lang: "en",
|
lang: "en",
|
||||||
|
|
||||||
typeSource: "madara",
|
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",
|
dateFormat:"MMMM dd, yyyy",
|
||||||
dateFormatLocale:"en_us",
|
dateFormatLocale:"en_us",
|
||||||
);
|
);
|
||||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
|||||||
lang: "es",
|
lang: "es",
|
||||||
|
|
||||||
typeSource: "madara",
|
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",
|
dateFormat:"MMMM dd, yyyy",
|
||||||
dateFormatLocale:"es",
|
dateFormatLocale:"es",
|
||||||
);
|
);
|
||||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
|||||||
lang: "tr",
|
lang: "tr",
|
||||||
|
|
||||||
typeSource: "madara",
|
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",
|
dateFormat:"MMM d, yyy",
|
||||||
dateFormatLocale:"tr",
|
dateFormatLocale:"tr",
|
||||||
);
|
);
|
||||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
|||||||
lang: "en",
|
lang: "en",
|
||||||
|
|
||||||
typeSource: "madara",
|
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",
|
dateFormat:"MMMM dd, yyyy",
|
||||||
dateFormatLocale:"en_us",
|
dateFormatLocale:"en_us",
|
||||||
);
|
);
|
||||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
|||||||
lang: "ar",
|
lang: "ar",
|
||||||
|
|
||||||
typeSource: "madara",
|
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",
|
lang: "pt-br",
|
||||||
isNsfw:true,
|
isNsfw:true,
|
||||||
typeSource: "madara",
|
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",
|
dateFormat:"MMMM d, yyyy",
|
||||||
dateFormatLocale:"pt-br",
|
dateFormatLocale:"pt-br",
|
||||||
);
|
);
|
||||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
|||||||
lang: "en",
|
lang: "en",
|
||||||
|
|
||||||
typeSource: "madara",
|
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",
|
dateFormat:"MMMM dd, yyyy",
|
||||||
dateFormatLocale:"en_us",
|
dateFormatLocale:"en_us",
|
||||||
);
|
);
|
||||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
|||||||
lang: "en",
|
lang: "en",
|
||||||
isNsfw:true,
|
isNsfw:true,
|
||||||
typeSource: "madara",
|
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",
|
dateFormat:"MMMM dd, yyyy",
|
||||||
dateFormatLocale:"en_us",
|
dateFormatLocale:"en_us",
|
||||||
);
|
);
|
||||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
|||||||
lang: "en",
|
lang: "en",
|
||||||
isNsfw:true,
|
isNsfw:true,
|
||||||
typeSource: "madara",
|
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",
|
dateFormat:"MM/dd/yyy",
|
||||||
dateFormatLocale:"en",
|
dateFormatLocale:"en",
|
||||||
);
|
);
|
||||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
|||||||
lang: "en",
|
lang: "en",
|
||||||
isNsfw:true,
|
isNsfw:true,
|
||||||
typeSource: "madara",
|
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",
|
dateFormat:"MMMM dd, yyyy",
|
||||||
dateFormatLocale:"en_us",
|
dateFormatLocale:"en_us",
|
||||||
);
|
);
|
||||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
|||||||
lang: "en",
|
lang: "en",
|
||||||
|
|
||||||
typeSource: "madara",
|
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",
|
dateFormat:"MMMM dd, yyyy",
|
||||||
dateFormatLocale:"en_us",
|
dateFormatLocale:"en_us",
|
||||||
);
|
);
|
||||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
|||||||
lang: "fr",
|
lang: "fr",
|
||||||
|
|
||||||
typeSource: "madara",
|
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",
|
dateFormat:"MMMM d, yyyy",
|
||||||
dateFormatLocale:"fr",
|
dateFormatLocale:"fr",
|
||||||
);
|
);
|
||||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
|||||||
lang: "pt-BR",
|
lang: "pt-BR",
|
||||||
isNsfw:true,
|
isNsfw:true,
|
||||||
typeSource: "madara",
|
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",
|
dateFormat:"dd 'de' MMMMM 'de' yyyy",
|
||||||
dateFormatLocale:"pt-br",
|
dateFormatLocale:"pt-br",
|
||||||
);
|
);
|
||||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
|||||||
lang: "en",
|
lang: "en",
|
||||||
isNsfw:true,
|
isNsfw:true,
|
||||||
typeSource: "madara",
|
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",
|
dateFormat:"MMMM dd, yyyy",
|
||||||
dateFormatLocale:"en_us",
|
dateFormatLocale:"en_us",
|
||||||
);
|
);
|
||||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
|||||||
lang: "tr",
|
lang: "tr",
|
||||||
|
|
||||||
typeSource: "madara",
|
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",
|
dateFormat:"dd/MM/yyy",
|
||||||
dateFormatLocale:"tr",
|
dateFormatLocale:"tr",
|
||||||
);
|
);
|
||||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
|||||||
lang: "pt-BR",
|
lang: "pt-BR",
|
||||||
isNsfw:true,
|
isNsfw:true,
|
||||||
typeSource: "madara",
|
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",
|
dateFormat:"dd/MM/yyy",
|
||||||
dateFormatLocale:"pt-br",
|
dateFormatLocale:"pt-br",
|
||||||
);
|
);
|
||||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
|||||||
lang: "en",
|
lang: "en",
|
||||||
|
|
||||||
typeSource: "madara",
|
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",
|
dateFormat:"MMMM dd, yyyy",
|
||||||
dateFormatLocale:"en_us",
|
dateFormatLocale:"en_us",
|
||||||
);
|
);
|
||||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
|||||||
lang: "en",
|
lang: "en",
|
||||||
isNsfw:true,
|
isNsfw:true,
|
||||||
typeSource: "madara",
|
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",
|
dateFormat:"MMMM dd, yyyy",
|
||||||
dateFormatLocale:"en_us",
|
dateFormatLocale:"en_us",
|
||||||
);
|
);
|
||||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
|||||||
lang: "vi",
|
lang: "vi",
|
||||||
isNsfw:true,
|
isNsfw:true,
|
||||||
typeSource: "madara",
|
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",
|
dateFormat:"dd/MM/yyyy",
|
||||||
dateFormatLocale:"vi",
|
dateFormatLocale:"vi",
|
||||||
);
|
);
|
||||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
|||||||
lang: "en",
|
lang: "en",
|
||||||
isNsfw:true,
|
isNsfw:true,
|
||||||
typeSource: "madara",
|
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",
|
dateFormat:"MMM d, yyyy",
|
||||||
dateFormatLocale:"en_us",
|
dateFormatLocale:"en_us",
|
||||||
);
|
);
|
||||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
|||||||
lang: "pt-BR",
|
lang: "pt-BR",
|
||||||
isNsfw:true,
|
isNsfw:true,
|
||||||
typeSource: "madara",
|
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",
|
dateFormat:"MMMMM dd, yyyy",
|
||||||
dateFormatLocale:"pt-br",
|
dateFormatLocale:"pt-br",
|
||||||
);
|
);
|
||||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
|||||||
lang: "en",
|
lang: "en",
|
||||||
isNsfw:true,
|
isNsfw:true,
|
||||||
typeSource: "madara",
|
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",
|
dateFormat:"MMMM dd, yyyy",
|
||||||
dateFormatLocale:"en_us",
|
dateFormatLocale:"en_us",
|
||||||
);
|
);
|
||||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
|||||||
lang: "en",
|
lang: "en",
|
||||||
isNsfw:true,
|
isNsfw:true,
|
||||||
typeSource: "madara",
|
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",
|
dateFormat:"MMM d, yyyy",
|
||||||
dateFormatLocale:"en_us",
|
dateFormatLocale:"en_us",
|
||||||
);
|
);
|
||||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
|||||||
lang: "en",
|
lang: "en",
|
||||||
isNsfw:true,
|
isNsfw:true,
|
||||||
typeSource: "madara",
|
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",
|
dateFormat:"MMM d, yyyy",
|
||||||
dateFormatLocale:"en_us",
|
dateFormatLocale:"en_us",
|
||||||
);
|
);
|
||||||
@@ -9,5 +9,5 @@ Source _hentaizoneSource = Source(
|
|||||||
isNsfw: true,
|
isNsfw: true,
|
||||||
typeSource: "madara",
|
typeSource: "madara",
|
||||||
iconUrl:
|
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",
|
lang: "pt-BR",
|
||||||
isNsfw:true,
|
isNsfw:true,
|
||||||
typeSource: "madara",
|
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",
|
dateFormat:"MMMM dd, yyyy",
|
||||||
dateFormatLocale:"en_us",
|
dateFormatLocale:"en_us",
|
||||||
);
|
);
|
||||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
|||||||
lang: "en",
|
lang: "en",
|
||||||
isNsfw:true,
|
isNsfw:true,
|
||||||
typeSource: "madara",
|
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",
|
dateFormat:"MMMM dd, yyyy",
|
||||||
dateFormatLocale:"en_us",
|
dateFormatLocale:"en_us",
|
||||||
);
|
);
|
||||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
|||||||
lang: "en",
|
lang: "en",
|
||||||
isNsfw:true,
|
isNsfw:true,
|
||||||
typeSource: "madara",
|
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",
|
dateFormat:"MMM d, yyyy",
|
||||||
dateFormatLocale:"en_us",
|
dateFormatLocale:"en_us",
|
||||||
);
|
);
|
||||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
|||||||
lang: "en",
|
lang: "en",
|
||||||
|
|
||||||
typeSource: "madara",
|
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",
|
dateFormat:"MMMM dd, yyyy",
|
||||||
dateFormatLocale:"en_us",
|
dateFormatLocale:"en_us",
|
||||||
);
|
);
|
||||||
@@ -8,7 +8,7 @@ import '../../../../../model/source.dart';
|
|||||||
lang: "pt-BR",
|
lang: "pt-BR",
|
||||||
|
|
||||||
typeSource: "madara",
|
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",
|
dateFormat:"dd/MM/yyyy",
|
||||||
dateFormatLocale:"pt-br",
|
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