mirror of
https://github.com/kodjodevf/mangayomi-extensions.git
synced 2026-02-14 19:01:15 +00:00
dart format
This commit is contained in:
@@ -15,8 +15,10 @@ class NimeGami extends MProvider {
|
||||
List<MManga> animeList = [];
|
||||
final urls = xpath(res, '//div[@class="wrapper-2-a"]/article/a/@href');
|
||||
final names = xpath(res, '//div[@class="wrapper-2-a"]/article/a/@title');
|
||||
final images =
|
||||
xpath(res, '//div[@class="wrapper-2-a"]/article/a/div/img/@src');
|
||||
final images = xpath(
|
||||
res,
|
||||
'//div[@class="wrapper-2-a"]/article/a/div/img/@src',
|
||||
);
|
||||
|
||||
for (var i = 0; i < names.length; i++) {
|
||||
MManga anime = MManga();
|
||||
@@ -34,10 +36,14 @@ class NimeGami extends MProvider {
|
||||
(await client.get(Uri.parse("${source.baseUrl}/page/$page"))).body;
|
||||
List<MManga> animeList = [];
|
||||
final urls = xpath(res, '//div[@class="post-article"]/article/div/a/@href');
|
||||
final names =
|
||||
xpath(res, '//div[@class="post-article"]/article/div/a/@title');
|
||||
final images =
|
||||
xpath(res, '//div[@class="post-article"]/article/div/a/img/@src');
|
||||
final names = xpath(
|
||||
res,
|
||||
'//div[@class="post-article"]/article/div/a/@title',
|
||||
);
|
||||
final images = xpath(
|
||||
res,
|
||||
'//div[@class="post-article"]/article/div/a/img/@src',
|
||||
);
|
||||
|
||||
for (var i = 0; i < names.length; i++) {
|
||||
MManga anime = MManga();
|
||||
@@ -51,14 +57,17 @@ class NimeGami extends MProvider {
|
||||
|
||||
@override
|
||||
Future<MPages> search(String query, int page, FilterList filterList) async {
|
||||
final res = (await client.get(
|
||||
Uri.parse("${source.baseUrl}/page/$page/?s=$query&post_type=post")))
|
||||
.body;
|
||||
final res =
|
||||
(await client.get(
|
||||
Uri.parse("${source.baseUrl}/page/$page/?s=$query&post_type=post"),
|
||||
)).body;
|
||||
List<MManga> animeList = [];
|
||||
final urls = xpath(res, '//div[@class="archive-a"]/article/div/a/@href');
|
||||
final names = xpath(res, '//div[@class="archive-a"]/article/h2/a/@title');
|
||||
final images =
|
||||
xpath(res, '//div[@class="archive-a"]/article/div/a/img/@src');
|
||||
final images = xpath(
|
||||
res,
|
||||
'//div[@class="archive-a"]/article/div/a/img/@src',
|
||||
);
|
||||
|
||||
for (var i = 0; i < names.length; i++) {
|
||||
MManga anime = MManga();
|
||||
@@ -84,21 +93,25 @@ class NimeGami extends MProvider {
|
||||
anime.author = author.first;
|
||||
}
|
||||
anime.genre = xpath(res, '//tr/td[@class="info_a"]/a/text()');
|
||||
final epUrls = xpath(res, '//div[@class="list_eps_stream"]/li/@data')
|
||||
.reversed
|
||||
.toList();
|
||||
final epUrls =
|
||||
xpath(
|
||||
res,
|
||||
'//div[@class="list_eps_stream"]/li/@data',
|
||||
).reversed.toList();
|
||||
final epNums =
|
||||
xpath(res, '//div[@class="list_eps_stream"]/li/@id').reversed.toList();
|
||||
final names = xpath(res, '//div[@class="list_eps_stream"]/li/text()')
|
||||
.reversed
|
||||
.toList();
|
||||
final names =
|
||||
xpath(
|
||||
res,
|
||||
'//div[@class="list_eps_stream"]/li/text()',
|
||||
).reversed.toList();
|
||||
List<MChapter>? episodesList = [];
|
||||
for (var i = 0; i < epUrls.length; i++) {
|
||||
MChapter episode = MChapter();
|
||||
episode.name = names[i];
|
||||
episode.url = json.encode({
|
||||
"episodeIndex": int.parse(substringAfterLast(epNums[i], '_')),
|
||||
'urls': json.decode(utf8.decode(base64Url.decode(epUrls[i])))
|
||||
'urls': json.decode(utf8.decode(base64Url.decode(epUrls[i]))),
|
||||
});
|
||||
episodesList.add(episode);
|
||||
}
|
||||
@@ -126,7 +139,8 @@ class NimeGami extends MProvider {
|
||||
List<MVideo> videos = [];
|
||||
if (url.contains("video.nimegami.id")) {
|
||||
final realUrl = utf8.decode(
|
||||
base64Url.decode(substringBefore(substringAfter(url, "url="), "&")));
|
||||
base64Url.decode(substringBefore(substringAfter(url, "url="), "&")),
|
||||
);
|
||||
final a = await extractHXFileVideos(realUrl, quality);
|
||||
videos.addAll(a);
|
||||
} else if (url.contains("berkasdrive") || url.contains("drive.nimegami")) {
|
||||
@@ -148,15 +162,19 @@ class NimeGami extends MProvider {
|
||||
url = url.replaceAll(".co/", ".co/embed-") + ".html";
|
||||
}
|
||||
final res = (await client.get(Uri.parse(url))).body;
|
||||
final script = xpath(res,
|
||||
'//script[contains(text(), "eval") and contains(text(), "p,a,c,k,e,d")]/text()');
|
||||
final script = xpath(
|
||||
res,
|
||||
'//script[contains(text(), "eval") and contains(text(), "p,a,c,k,e,d")]/text()',
|
||||
);
|
||||
if (script.isNotEmpty) {
|
||||
final videoUrl = substringBefore(
|
||||
substringAfter(
|
||||
substringAfter(unpackJs(script.first), "sources:[", ""),
|
||||
"file\":\"",
|
||||
""),
|
||||
'"');
|
||||
substringAfter(
|
||||
substringAfter(unpackJs(script.first), "sources:[", ""),
|
||||
"file\":\"",
|
||||
"",
|
||||
),
|
||||
'"',
|
||||
);
|
||||
if (videoUrl.isNotEmpty) {
|
||||
return [toVideo(videoUrl, "HXFile - $quality")];
|
||||
}
|
||||
|
||||
@@ -5,12 +5,13 @@ const _nimegamiVersion = "0.0.55";
|
||||
const _nimegamiCodeUrl =
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/dart/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/$branchName/dart/anime/src/id/nimegami/icon.png",
|
||||
sourceCodeUrl: _nimegamiCodeUrl,
|
||||
version: _nimegamiVersion,
|
||||
itemType: ItemType.anime);
|
||||
name: "NimeGami",
|
||||
baseUrl: "https://nimegami.id",
|
||||
lang: "id",
|
||||
typeSource: "single",
|
||||
iconUrl:
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/dart/anime/src/id/nimegami/icon.png",
|
||||
sourceCodeUrl: _nimegamiCodeUrl,
|
||||
version: _nimegamiVersion,
|
||||
itemType: ItemType.anime,
|
||||
);
|
||||
|
||||
@@ -10,32 +10,35 @@ class OploVerz extends MProvider {
|
||||
|
||||
@override
|
||||
Future<MPages> getPopular(int page) async {
|
||||
final res = (await client.get(Uri.parse(
|
||||
"${source.baseUrl}/anime-list/page/$page/?order=popular")))
|
||||
.body;
|
||||
final res =
|
||||
(await client.get(
|
||||
Uri.parse("${source.baseUrl}/anime-list/page/$page/?order=popular"),
|
||||
)).body;
|
||||
return parseAnimeList(res);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<MPages> getLatestUpdates(int page) async {
|
||||
final res = (await client.get(
|
||||
Uri.parse("${source.baseUrl}/anime-list/page/$page/?order=latest")))
|
||||
.body;
|
||||
final res =
|
||||
(await client.get(
|
||||
Uri.parse("${source.baseUrl}/anime-list/page/$page/?order=latest"),
|
||||
)).body;
|
||||
return parseAnimeList(res);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<MPages> search(String query, int page, FilterList filterList) async {
|
||||
final res = (await client.get(
|
||||
Uri.parse("${source.baseUrl}/anime-list/page/$page/?title=$query")))
|
||||
.body;
|
||||
final res =
|
||||
(await client.get(
|
||||
Uri.parse("${source.baseUrl}/anime-list/page/$page/?title=$query"),
|
||||
)).body;
|
||||
return parseAnimeList(res);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<MManga> getDetail(String url) async {
|
||||
final statusList = [
|
||||
{"ongoing": 0, "completed": 1}
|
||||
{"ongoing": 0, "completed": 1},
|
||||
];
|
||||
|
||||
final res = (await client.get(Uri.parse(url))).body;
|
||||
@@ -47,12 +50,18 @@ class OploVerz extends MProvider {
|
||||
anime.description = xpath(res, '//*[@class="desc"]/div/text()').first;
|
||||
|
||||
anime.genre = xpath(res, '//*[@class="genre-info"]/a/text()');
|
||||
final epUrls =
|
||||
xpath(res, '//div[@class="epsleft")]/span[@class="lchx"]/a/@href');
|
||||
final names =
|
||||
xpath(res, '//div[@class="epsleft")]/span[@class="lchx"]/a/text()');
|
||||
final dates =
|
||||
xpath(res, '//div[@class="epsleft")]/span[@class="date"]/text()');
|
||||
final epUrls = xpath(
|
||||
res,
|
||||
'//div[@class="epsleft")]/span[@class="lchx"]/a/@href',
|
||||
);
|
||||
final names = xpath(
|
||||
res,
|
||||
'//div[@class="epsleft")]/span[@class="lchx"]/a/text()',
|
||||
);
|
||||
final dates = xpath(
|
||||
res,
|
||||
'//div[@class="epsleft")]/span[@class="date"]/text()',
|
||||
);
|
||||
final dateUploads = parseDates(dates, "dd/MM/yyyy", "id");
|
||||
List<MChapter>? episodesList = [];
|
||||
for (var i = 0; i < epUrls.length; i++) {
|
||||
@@ -70,28 +79,33 @@ class OploVerz extends MProvider {
|
||||
@override
|
||||
Future<List<MVideo>> getVideoList(String url) async {
|
||||
final res = (await client.get(Uri.parse(url))).body;
|
||||
final dataPost = xpath(res,
|
||||
'//*[@id="server"]/ul/li/div[contains(@id,"player-option")]/@data-post')
|
||||
.first;
|
||||
final dataNume = xpath(res,
|
||||
'//*[@id="server"]/ul/li/div[contains(@id,"player-option")]/@data-nume')
|
||||
.first;
|
||||
final dataType = xpath(res,
|
||||
'//*[@id="server"]/ul/li/div[contains(@id,"player-option")]/@data-type')
|
||||
.first;
|
||||
final dataPost =
|
||||
xpath(
|
||||
res,
|
||||
'//*[@id="server"]/ul/li/div[contains(@id,"player-option")]/@data-post',
|
||||
).first;
|
||||
final dataNume =
|
||||
xpath(
|
||||
res,
|
||||
'//*[@id="server"]/ul/li/div[contains(@id,"player-option")]/@data-nume',
|
||||
).first;
|
||||
final dataType =
|
||||
xpath(
|
||||
res,
|
||||
'//*[@id="server"]/ul/li/div[contains(@id,"player-option")]/@data-type',
|
||||
).first;
|
||||
|
||||
final ress = (await client.post(
|
||||
Uri.parse("${source.baseUrl}/wp-admin/admin-ajax.php"),
|
||||
headers: {
|
||||
"_": "_"
|
||||
},
|
||||
body: {
|
||||
"action": "player_ajax",
|
||||
"post": dataPost,
|
||||
"nume": dataNume,
|
||||
"type": dataType
|
||||
}))
|
||||
.body;
|
||||
final ress =
|
||||
(await client.post(
|
||||
Uri.parse("${source.baseUrl}/wp-admin/admin-ajax.php"),
|
||||
headers: {"_": "_"},
|
||||
body: {
|
||||
"action": "player_ajax",
|
||||
"post": dataPost,
|
||||
"nume": dataNume,
|
||||
"type": dataType,
|
||||
},
|
||||
)).body;
|
||||
|
||||
final playerLink =
|
||||
xpath(ress, '//iframe[@class="playeriframe"]/@src').first;
|
||||
@@ -127,8 +141,10 @@ class OploVerz extends MProvider {
|
||||
List<MManga> animeList = [];
|
||||
final urls = xpath(res, '//div[@class="relat"]/article/div/div/a/@href');
|
||||
final names = xpath(res, '//div[@class="relat"]/article/div/div/a/@title');
|
||||
final images =
|
||||
xpath(res, '//div[@class="relat"]/article/div/div/a/div/img/@src');
|
||||
final images = xpath(
|
||||
res,
|
||||
'//div[@class="relat"]/article/div/div/a/div/img/@src',
|
||||
);
|
||||
|
||||
for (var i = 0; i < names.length; i++) {
|
||||
MManga anime = MManga();
|
||||
@@ -138,8 +154,10 @@ class OploVerz extends MProvider {
|
||||
animeList.add(anime);
|
||||
}
|
||||
final pages = xpath(res, '//div[@class="pagination"]/a/@href');
|
||||
final pageNumberCurrent = xpath(res,
|
||||
'//div[@class="pagination"]/span[@class="page-numbers current"]/text()');
|
||||
final pageNumberCurrent = xpath(
|
||||
res,
|
||||
'//div[@class="pagination"]/span[@class="page-numbers current"]/text()',
|
||||
);
|
||||
|
||||
bool hasNextPage = true;
|
||||
if (pageNumberCurrent.isNotEmpty && pages.isNotEmpty) {
|
||||
|
||||
@@ -5,12 +5,13 @@ const _oploverzVersion = "0.0.5";
|
||||
const _oploverzCodeUrl =
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/dart/anime/src/id/oploverz/oploverz.dart";
|
||||
Source _oploverz = Source(
|
||||
name: "Oploverz",
|
||||
baseUrl: "https://oploverz.gold",
|
||||
lang: "id",
|
||||
typeSource: "single",
|
||||
iconUrl:
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/dart/anime/src/id/oploverz/icon.png",
|
||||
sourceCodeUrl: _oploverzCodeUrl,
|
||||
version: _oploverzVersion,
|
||||
itemType: ItemType.anime);
|
||||
name: "Oploverz",
|
||||
baseUrl: "https://oploverz.gold",
|
||||
lang: "id",
|
||||
typeSource: "single",
|
||||
iconUrl:
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/dart/anime/src/id/oploverz/icon.png",
|
||||
sourceCodeUrl: _oploverzCodeUrl,
|
||||
version: _oploverzVersion,
|
||||
itemType: ItemType.anime,
|
||||
);
|
||||
|
||||
@@ -14,8 +14,9 @@ class OtakuDesu extends MProvider {
|
||||
@override
|
||||
Future<MPages> getPopular(int page) async {
|
||||
final res =
|
||||
(await client.get(Uri.parse("$baseUrl/complete-anime/page/$page")))
|
||||
.body;
|
||||
(await client.get(
|
||||
Uri.parse("$baseUrl/complete-anime/page/$page"),
|
||||
)).body;
|
||||
return parseAnimeList(res);
|
||||
}
|
||||
|
||||
@@ -29,8 +30,9 @@ class OtakuDesu extends MProvider {
|
||||
@override
|
||||
Future<MPages> search(String query, int page, FilterList filterList) async {
|
||||
final res =
|
||||
(await client.get(Uri.parse("$baseUrl/?s=$query&post_type=anime")))
|
||||
.body;
|
||||
(await client.get(
|
||||
Uri.parse("$baseUrl/?s=$query&post_type=anime"),
|
||||
)).body;
|
||||
List<MManga> animeList = [];
|
||||
final images = xpath(res, '//ul[@class="chivsrc"]/li/img/@src');
|
||||
final names = xpath(res, '//ul[@class="chivsrc"]/li/h2/a/text()');
|
||||
@@ -49,12 +51,14 @@ class OtakuDesu extends MProvider {
|
||||
@override
|
||||
Future<MManga> getDetail(String url) async {
|
||||
final statusList = [
|
||||
{"Ongoing": 0, "Completed": 1}
|
||||
{"Ongoing": 0, "Completed": 1},
|
||||
];
|
||||
final res = (await client.get(Uri.parse(url))).body;
|
||||
MManga anime = MManga();
|
||||
final status = xpath(
|
||||
res, '//*[@class="infozingle"]/p[contains(text(), "Status")]/text()');
|
||||
res,
|
||||
'//*[@class="infozingle"]/p[contains(text(), "Status")]/text()',
|
||||
);
|
||||
if (status.isNotEmpty) {
|
||||
anime.status = parseStatus(status.first.split(':').last, statusList);
|
||||
}
|
||||
@@ -64,7 +68,9 @@ class OtakuDesu extends MProvider {
|
||||
}
|
||||
|
||||
final genre = xpath(
|
||||
res, '//*[@class="infozingle"]/p[contains(text(), "Genre")]/text()');
|
||||
res,
|
||||
'//*[@class="infozingle"]/p[contains(text(), "Genre")]/text()',
|
||||
);
|
||||
if (genre.isNotEmpty) {
|
||||
anime.genre = genre.first.split(':').last.split(',');
|
||||
}
|
||||
@@ -73,7 +79,9 @@ class OtakuDesu extends MProvider {
|
||||
final names = xpath(res, '//div[@class="episodelist"]/ul/li/span/a/text()');
|
||||
|
||||
final dates = xpath(
|
||||
res, '//div[@class="episodelist"]/ul/li/span[@class="zeebr"]/text()');
|
||||
res,
|
||||
'//div[@class="episodelist"]/ul/li/span[@class="zeebr"]/text()',
|
||||
);
|
||||
final dateUploads = parseDates(dates, "d MMMM,yyyy", "id");
|
||||
List<MChapter>? episodesList = [];
|
||||
for (var i = 1; i < epUrls.length; i++) {
|
||||
@@ -93,18 +101,23 @@ class OtakuDesu extends MProvider {
|
||||
final res = (await client.get(Uri.parse(url))).body;
|
||||
final script =
|
||||
xpath(res, '//script[contains(text(), "{action:")]/text()').first;
|
||||
final nonceAction =
|
||||
substringBefore(substringAfter(script, "{action:\""), '"');
|
||||
final nonceAction = substringBefore(
|
||||
substringAfter(script, "{action:\""),
|
||||
'"',
|
||||
);
|
||||
final action = substringBefore(substringAfter(script, "action:\""), '"');
|
||||
|
||||
final resNonceAction = (await client.post(
|
||||
Uri.parse("$baseUrl/wp-admin/admin-ajax.php"),
|
||||
headers: {"_": "_"},
|
||||
body: {"action": nonceAction}))
|
||||
.body;
|
||||
final resNonceAction =
|
||||
(await client.post(
|
||||
Uri.parse("$baseUrl/wp-admin/admin-ajax.php"),
|
||||
headers: {"_": "_"},
|
||||
body: {"action": nonceAction},
|
||||
)).body;
|
||||
final nonce = substringBefore(substringAfter(resNonceAction, ":\""), '"');
|
||||
final mirrorstream =
|
||||
xpath(res, '//*[@class="mirrorstream"]/ul/li/a/@data-content');
|
||||
final mirrorstream = xpath(
|
||||
res,
|
||||
'//*[@class="mirrorstream"]/ul/li/a/@data-content',
|
||||
);
|
||||
for (var stream in mirrorstream) {
|
||||
List<MVideo> a = [];
|
||||
final decodedData = json.decode(utf8.decode(base64Url.decode(stream)));
|
||||
@@ -112,17 +125,12 @@ class OtakuDesu extends MProvider {
|
||||
final id = decodedData["id"];
|
||||
final i = decodedData["i"];
|
||||
|
||||
final res = (await client
|
||||
.post(Uri.parse("$baseUrl/wp-admin/admin-ajax.php"), headers: {
|
||||
"_": "_"
|
||||
}, body: {
|
||||
"i": i,
|
||||
"id": id,
|
||||
"q": q,
|
||||
"nonce": nonce,
|
||||
"action": action
|
||||
}))
|
||||
.body;
|
||||
final res =
|
||||
(await client.post(
|
||||
Uri.parse("$baseUrl/wp-admin/admin-ajax.php"),
|
||||
headers: {"_": "_"},
|
||||
body: {"i": i, "id": id, "q": q, "nonce": nonce, "action": action},
|
||||
)).body;
|
||||
final resJson = json.decode(res);
|
||||
final html = utf8.decode(base64Url.decode(resJson["data"]));
|
||||
String url = xpath(html, '//iframe/@src').first;
|
||||
@@ -152,8 +160,10 @@ class OtakuDesu extends MProvider {
|
||||
final res = (await client.get(Uri.parse(url))).body;
|
||||
final script =
|
||||
xpath(res, '//script[contains(text(), "player.src")]/text()').first;
|
||||
final videoUrl =
|
||||
substringBefore(substringAfter(script, "src: \""), '"');
|
||||
final videoUrl = substringBefore(
|
||||
substringAfter(script, "src: \""),
|
||||
'"',
|
||||
);
|
||||
MVideo video = MVideo();
|
||||
video
|
||||
..url = videoUrl
|
||||
@@ -196,12 +206,18 @@ class OtakuDesu extends MProvider {
|
||||
|
||||
MPages parseAnimeList(String res) {
|
||||
List<MManga> animeList = [];
|
||||
final urls =
|
||||
xpath(res, '//div[@class="detpost"]/div[@class="thumb"]/a/@href');
|
||||
final names = xpath(res,
|
||||
'//div[@class="detpost"]/div[@class="thumb"]/a/div[@class="thumbz"]/h2/text()');
|
||||
final images = xpath(res,
|
||||
'//div[@class="detpost"]/div[@class="thumb"]/a/div[@class="thumbz"]/img/@src');
|
||||
final urls = xpath(
|
||||
res,
|
||||
'//div[@class="detpost"]/div[@class="thumb"]/a/@href',
|
||||
);
|
||||
final names = xpath(
|
||||
res,
|
||||
'//div[@class="detpost"]/div[@class="thumb"]/a/div[@class="thumbz"]/h2/text()',
|
||||
);
|
||||
final images = xpath(
|
||||
res,
|
||||
'//div[@class="detpost"]/div[@class="thumb"]/a/div[@class="thumbz"]/img/@src',
|
||||
);
|
||||
|
||||
for (var i = 0; i < names.length; i++) {
|
||||
MManga anime = MManga();
|
||||
@@ -211,27 +227,31 @@ class OtakuDesu extends MProvider {
|
||||
animeList.add(anime);
|
||||
}
|
||||
final pages = xpath(
|
||||
res, '//div[@class="pagenavix"]/a[@class="next page-numbers"]/@href');
|
||||
res,
|
||||
'//div[@class="pagenavix"]/a[@class="next page-numbers"]/@href',
|
||||
);
|
||||
return MPages(animeList, pages.isNotEmpty);
|
||||
}
|
||||
|
||||
List<dynamic> getSourcePreferences() {
|
||||
return [
|
||||
EditTextPreference(
|
||||
key: "overrideBaseUrl",
|
||||
title: "Override BaseUrl",
|
||||
summary: "",
|
||||
value: "https://otakudesu.cloud",
|
||||
dialogTitle: "Override BaseUrl",
|
||||
dialogMessage: "",
|
||||
text: "https://otakudesu.cloud"),
|
||||
key: "overrideBaseUrl",
|
||||
title: "Override BaseUrl",
|
||||
summary: "",
|
||||
value: "https://otakudesu.cloud",
|
||||
dialogTitle: "Override BaseUrl",
|
||||
dialogMessage: "",
|
||||
text: "https://otakudesu.cloud",
|
||||
),
|
||||
ListPreference(
|
||||
key: "preferred_quality",
|
||||
title: "Preferred quality",
|
||||
summary: "",
|
||||
valueIndex: 1,
|
||||
entries: ["1080p", "720p", "480p", "360p"],
|
||||
entryValues: ["1080", "720", "480", "360"])
|
||||
key: "preferred_quality",
|
||||
title: "Preferred quality",
|
||||
summary: "",
|
||||
valueIndex: 1,
|
||||
entries: ["1080p", "720p", "480p", "360p"],
|
||||
entryValues: ["1080", "720", "480", "360"],
|
||||
),
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,12 +5,13 @@ const _otakudesuVersion = "0.0.56";
|
||||
const _otakudesuCodeUrl =
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/dart/anime/src/id/otakudesu/otakudesu.dart";
|
||||
Source _otakudesu = Source(
|
||||
name: "OtakuDesu",
|
||||
baseUrl: "https://otakudesu.cloud",
|
||||
lang: "id",
|
||||
typeSource: "single",
|
||||
iconUrl:
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/dart/anime/src/id/otakudesu/icon.png",
|
||||
sourceCodeUrl: _otakudesuCodeUrl,
|
||||
version: _otakudesuVersion,
|
||||
itemType: ItemType.anime);
|
||||
name: "OtakuDesu",
|
||||
baseUrl: "https://otakudesu.cloud",
|
||||
lang: "id",
|
||||
typeSource: "single",
|
||||
iconUrl:
|
||||
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/dart/anime/src/id/otakudesu/icon.png",
|
||||
sourceCodeUrl: _otakudesuCodeUrl,
|
||||
version: _otakudesuVersion,
|
||||
itemType: ItemType.anime,
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user