mirror of
https://github.com/kodjodevf/mangayomi-extensions.git
synced 2026-02-14 02:41:39 +00:00
fix(mmrcms): refactor search and image/link generation logic (fixes #152)
This commit is contained in:
@@ -58,45 +58,32 @@ class MMRCMS extends MProvider {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MPages> search(String query, int page, FilterList filterList) async {
|
Future<MPages> search(String query, int page, FilterList filterList) async {
|
||||||
final filters = filterList.filters;
|
String url = getBaseUrl();
|
||||||
String url = "";
|
|
||||||
if (query.isNotEmpty) {
|
|
||||||
url = "${getBaseUrl()}/search?query=$query";
|
|
||||||
}
|
|
||||||
|
|
||||||
final res = (await client.get(Uri.parse(url))).body;
|
|
||||||
|
|
||||||
List<MManga> mangaList = [];
|
List<MManga> mangaList = [];
|
||||||
|
|
||||||
List<String> urls = [];
|
bool hasNextPage = false;
|
||||||
List<String> names = [];
|
|
||||||
List<String> images = [];
|
|
||||||
|
|
||||||
if (query.isNotEmpty) {
|
if (query.isNotEmpty) {
|
||||||
|
url = "$url/search?query=$query";
|
||||||
|
final res = (await client.get(Uri.parse(url))).body;
|
||||||
final jsonList = json.decode(res)["suggestions"];
|
final jsonList = json.decode(res)["suggestions"];
|
||||||
|
|
||||||
for (var da in jsonList) {
|
for (var da in jsonList) {
|
||||||
String value = da["value"];
|
String value = da["value"];
|
||||||
String data = da["data"];
|
String data = da["data"];
|
||||||
if (source.name == 'Scan VF') {
|
final mangaSubString = getMangaSubString();
|
||||||
urls.add('${getBaseUrl()}/$data');
|
final path = mangaSubString.isEmpty ? data : '$mangaSubString/$data';
|
||||||
} else {
|
|
||||||
urls.add('${getBaseUrl()}/manga/$data');
|
mangaList.add(
|
||||||
}
|
MManga(
|
||||||
names.add(value);
|
name: value,
|
||||||
images.add(
|
link: '${getBaseUrl()}/$path',
|
||||||
"${getBaseUrl()}/uploads/manga/$data/cover/cover_250x350.jpg",
|
imageUrl: guessCover('/$path'),
|
||||||
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (var i = 0; i < names.length; i++) {
|
|
||||||
MManga manga = MManga();
|
|
||||||
manga.name = names[i];
|
|
||||||
manga.imageUrl = images[i];
|
|
||||||
manga.link = urls[i];
|
|
||||||
mangaList.add(manga);
|
|
||||||
}
|
|
||||||
|
|
||||||
return MPages(mangaList, true);
|
return MPages(mangaList, hasNextPage);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -240,6 +227,12 @@ class MMRCMS extends MProvider {
|
|||||||
return titles[lang?.toLowerCase()] ?? titles['en']!;
|
return titles[lang?.toLowerCase()] ?? titles['en']!;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String getMangaSubString() {
|
||||||
|
const sourceTypeMap = {'Scan VF': "", "Read Comics Online": "comic"};
|
||||||
|
|
||||||
|
return sourceTypeMap[source.name] ?? "manga";
|
||||||
|
}
|
||||||
|
|
||||||
String ll(String url) {
|
String ll(String url) {
|
||||||
if (url.contains("?")) {
|
if (url.contains("?")) {
|
||||||
return "&";
|
return "&";
|
||||||
@@ -248,9 +241,9 @@ class MMRCMS extends MProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
String guessCover(String mangaUrl, {String? url}) {
|
String guessCover(String mangaUrl, {String? url}) {
|
||||||
|
String baseUrl = getBaseUrl();
|
||||||
if (url == null || url?.endsWith("no-image.png")) {
|
if (url == null || url?.endsWith("no-image.png")) {
|
||||||
String slug = substringAfterLast(mangaUrl, '/');
|
String slug = substringAfterLast(mangaUrl, '/');
|
||||||
String baseUrl = getBaseUrl();
|
|
||||||
return "${baseUrl}/uploads/manga/${slug}/cover/cover_250x350.jpg";
|
return "${baseUrl}/uploads/manga/${slug}/cover/cover_250x350.jpg";
|
||||||
} else if (url?.startsWith(baseUrl)) {
|
} else if (url?.startsWith(baseUrl)) {
|
||||||
return url;
|
return url;
|
||||||
|
|||||||
Reference in New Issue
Block a user