refactor(nyaa): use getBaseUrl() to support dynamic domain from preferences

This commit is contained in:
xMohnad
2025-06-25 20:44:29 +00:00
parent 829c861502
commit 0e79bfce26

View File

@@ -11,7 +11,7 @@ class Nyaa extends MProvider {
Future<MPages> getPopular(int page) async { Future<MPages> getPopular(int page) async {
final res = (await client.get( final res = (await client.get(
Uri.parse( Uri.parse(
"${source.baseUrl}/?f=0&c=${getPreferenceValue(source.id, "preferred_categorie_page")}&q=&s=downloads&o=desc&p=$page", "${getBaseUrl()}/?f=0&c=${getPreferenceValue(source.id, "preferred_categorie_page")}&q=&s=downloads&o=desc&p=$page",
), ),
)).body; )).body;
return parseAnimeList(res); return parseAnimeList(res);
@@ -21,7 +21,7 @@ class Nyaa extends MProvider {
Future<MPages> getLatestUpdates(int page) async { Future<MPages> getLatestUpdates(int page) async {
final res = (await client.get( final res = (await client.get(
Uri.parse( Uri.parse(
"${source.baseUrl}/?f=0&c=${getPreferenceValue(source.id, "preferred_categorie_page")}&q=$page", "${getBaseUrl()}/?f=0&c=${getPreferenceValue(source.id, "preferred_categorie_page")}&q=$page",
), ),
)).body; )).body;
return parseAnimeList(res); return parseAnimeList(res);
@@ -32,7 +32,7 @@ class Nyaa extends MProvider {
final filters = filterList.filters; final filters = filterList.filters;
String url = ""; String url = "";
url = url =
"${source.baseUrl}/?f=0&c=${getPreferenceValue(source.id, "preferred_categorie_page")}&q=${query.replaceAll(" ", "+")}&p=$page"; "${getBaseUrl()}/?f=0&c=${getPreferenceValue(source.id, "preferred_categorie_page")}&q=${query.replaceAll(" ", "+")}&p=$page";
for (var filter in filters) { for (var filter in filters) {
if (filter.type == "SortFilter") { if (filter.type == "SortFilter") {
url += "${ll(url)}s=${filter.values[filter.state.index].value}"; url += "${ll(url)}s=${filter.values[filter.state.index].value}";
@@ -101,8 +101,7 @@ class Nyaa extends MProvider {
chapters.add( chapters.add(
MChapter( MChapter(
name: "Torrent", name: "Torrent",
url: url: "${getBaseUrl()}/download/${substringAfterLast(url, '/')}.torrent",
"${source.baseUrl}/download/${substringAfterLast(url, '/')}.torrent",
), ),
); );
anime.chapters = chapters; anime.chapters = chapters;
@@ -152,9 +151,29 @@ class Nyaa extends MProvider {
"Enable to show the full torrent description in the details view.", "Enable to show the full torrent description in the details view.",
value: false, value: false,
), ),
EditTextPreference(
key: "domain_url",
title: 'Edit URL',
summary: "",
value: source.baseUrl,
dialogTitle: "URL",
dialogMessage: "",
),
]; ];
} }
String getBaseUrl() {
final baseUrl = getPreferenceValue(source.id, "domain_url")?.trim();
if (baseUrl == null || baseUrl.isEmpty) {
return source.baseUrl;
}
return baseUrl.endsWith("/")
? baseUrl.substring(0, baseUrl.length - 1)
: baseUrl;
}
MPages parseAnimeList(String res) { MPages parseAnimeList(String res) {
List<MManga> animeList = []; List<MManga> animeList = [];
final document = parseHtml(res); final document = parseHtml(res);
@@ -165,7 +184,7 @@ class Nyaa extends MProvider {
for (var value in values) { for (var value in values) {
MManga anime = MManga(); MManga anime = MManga();
anime.imageUrl = anime.imageUrl =
"${source.baseUrl}${getUrlWithoutDomain(value.selectFirst("td:nth-child(1) > a > img").getSrc)}"; "${getBaseUrl()}${getUrlWithoutDomain(value.selectFirst("td:nth-child(1) > a > img").getSrc)}";
MElement firstElement = value MElement firstElement = value
.select("td > a") .select("td > a")
.where( .where(
@@ -176,7 +195,7 @@ class Nyaa extends MProvider {
.toList() .toList()
.first; .first;
anime.link = anime.link =
"${source.baseUrl}${getUrlWithoutDomain(firstElement.getHref)}"; "${getBaseUrl()}${getUrlWithoutDomain(firstElement.getHref)}";
anime.name = firstElement.attr("title"); anime.name = firstElement.attr("title");
animeList.add(anime); animeList.add(anime);
} }