mirror of
https://github.com/kodjodevf/mangayomi-extensions.git
synced 2026-02-14 02:41:39 +00:00
refactor(mmrcms): Rewrite getLatestUpdates to use HTML parsing.
This commit is contained in:
@@ -5,9 +5,19 @@ class MMRCMS extends MProvider {
|
|||||||
MMRCMS({required this.source});
|
MMRCMS({required this.source});
|
||||||
|
|
||||||
MSource source;
|
MSource source;
|
||||||
|
static final Set<String> latestTitles = <String>{};
|
||||||
final Client client = Client();
|
final Client client = Client();
|
||||||
|
|
||||||
|
MManga mangaFromElement(MElement element) {
|
||||||
|
final anchor = element.selectFirst(".media-heading a, .manga-heading a");
|
||||||
|
final link = anchor?.getHref;
|
||||||
|
|
||||||
|
return MManga()
|
||||||
|
..name = anchor?.text
|
||||||
|
..imageUrl = guessCover(link, url: element.selectFirst("img")?.getSrc)
|
||||||
|
..link = link;
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getPopular(int page) async {
|
Future<MPages> getPopular(int page) async {
|
||||||
final res = (await client.get(
|
final res = (await client.get(
|
||||||
@@ -37,24 +47,22 @@ class MMRCMS extends MProvider {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> getLatestUpdates(int page) async {
|
Future<MPages> getLatestUpdates(int page) async {
|
||||||
|
if (page == 1) latestTitles.clear();
|
||||||
|
|
||||||
final res = (await client.get(
|
final res = (await client.get(
|
||||||
Uri.parse("${source.baseUrl}/latest-release?page=$page"),
|
Uri.parse("${source.baseUrl}/latest-release?page=$page"),
|
||||||
)).body;
|
)).body;
|
||||||
|
|
||||||
List<MManga> mangaList = [];
|
final document = parseHtml(res);
|
||||||
final urls = xpath(res, '//*[@class="manga-item"]/h3/a/@href');
|
final mangaList = <MManga>[];
|
||||||
final names = xpath(res, '//*[@class="manga-item"]/h3/a/text()');
|
|
||||||
List<String> images = [];
|
|
||||||
for (var mangaurl in urls) {
|
|
||||||
images.add(guessCover(mangaUrl));
|
|
||||||
}
|
|
||||||
|
|
||||||
for (var i = 0; i < names.length; i++) {
|
for (var el in document.select("div.mangalist div.manga-item")) {
|
||||||
MManga manga = MManga();
|
final manga = mangaFromElement(el);
|
||||||
manga.name = names[i];
|
final link = manga.link;
|
||||||
manga.imageUrl = images[i];
|
|
||||||
manga.link = urls[i];
|
if (link != null && latestTitles.add(link)) {
|
||||||
mangaList.add(manga);
|
mangaList.add(manga);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return MPages(mangaList, true);
|
return MPages(mangaList, true);
|
||||||
@@ -314,8 +322,10 @@ class MMRCMS extends MProvider {
|
|||||||
if (url == null || url?.endsWith("no-image.png")) {
|
if (url == null || url?.endsWith("no-image.png")) {
|
||||||
String slug = substringAfterLast(mangaUrl, '/');
|
String slug = substringAfterLast(mangaUrl, '/');
|
||||||
return "${source.baseUrl}/uploads/manga/${slug}/cover/cover_250x350.jpg";
|
return "${source.baseUrl}/uploads/manga/${slug}/cover/cover_250x350.jpg";
|
||||||
} else {
|
} else if (url?.startsWith(source.baseUrl)) {
|
||||||
return url;
|
return url;
|
||||||
|
} else {
|
||||||
|
return Uri.parse(source.baseUrl).resolve(url).toString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user