From 4906ee12e65d2b695fb318678d07a26918dfae93 Mon Sep 17 00:00:00 2001 From: Eugene <35057681+e-shl@users.noreply.github.com> Date: Sun, 9 May 2021 03:09:12 +0500 Subject: [PATCH] [RU]Sources Fixes and addition (#6904) * fix lost name for idsearch, add sort, fix url 404 * more openOut --- src/ru/allhentai/build.gradle | 2 +- .../extension/ru/allhentai/AllHentai.kt | 18 ++++++++- src/ru/desu/AndroidManifest.xml | 24 ++++++++++- src/ru/desu/build.gradle | 2 +- .../tachiyomi/extension/ru/desu/Desu.kt | 26 ++++++++++++ .../extension/ru/desu/DesuActivity.kt | 40 +++++++++++++++++++ src/ru/mintmanga/build.gradle | 2 +- .../extension/ru/mintmanga/Mintmanga.kt | 3 +- src/ru/readmanga/build.gradle | 2 +- .../extension/ru/readmanga/Readmanga.kt | 3 +- src/ru/remanga/build.gradle | 2 +- .../tachiyomi/extension/ru/remanga/Remanga.kt | 2 +- src/ru/selfmanga/build.gradle | 2 +- .../extension/ru/selfmanga/Selfmanga.kt | 3 +- 14 files changed, 118 insertions(+), 13 deletions(-) create mode 100644 src/ru/desu/src/eu/kanade/tachiyomi/extension/ru/desu/DesuActivity.kt diff --git a/src/ru/allhentai/build.gradle b/src/ru/allhentai/build.gradle index e7f6bf81a..8dfd4f3d0 100644 --- a/src/ru/allhentai/build.gradle +++ b/src/ru/allhentai/build.gradle @@ -5,7 +5,7 @@ ext { extName = 'AllHentai' pkgNameSuffix = 'ru.allhentai' extClass = '.AllHentai' - extVersionCode = 3 + extVersionCode = 4 libVersion = '1.2' containsNsfw = true } diff --git a/src/ru/allhentai/src/eu/kanade/tachiyomi/extension/ru/allhentai/AllHentai.kt b/src/ru/allhentai/src/eu/kanade/tachiyomi/extension/ru/allhentai/AllHentai.kt index 60d521e6a..ad36f3dd2 100644 --- a/src/ru/allhentai/src/eu/kanade/tachiyomi/extension/ru/allhentai/AllHentai.kt +++ b/src/ru/allhentai/src/eu/kanade/tachiyomi/extension/ru/allhentai/AllHentai.kt @@ -66,7 +66,7 @@ class AllHentai : ParsedHttpSource() { override fun latestUpdatesNextPageSelector() = "a.nextLink" override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { - val url = "$baseUrl/search/advanced".toHttpUrlOrNull()!!.newBuilder() + var url = "$baseUrl/search/advanced".toHttpUrlOrNull()!!.newBuilder() (if (filters.isEmpty()) getFilterList() else filters).forEach { filter -> when (filter) { is GenreList -> filter.state.forEach { genre -> @@ -74,6 +74,15 @@ class AllHentai : ParsedHttpSource() { url.addQueryParameter(genre.id, arrayOf("=", "=in", "=ex")[genre.state]) } } + is OrderBy -> { + if (filter.state == 0) { + url = "$baseUrl/search/advanced".toHttpUrlOrNull()!!.newBuilder() + } else { + val ord = arrayOf("not", "year", "name", "rate", "popularity", "votes", "created", "updated")[filter.state] + url = "$baseUrl/list?sortType=$ord".toHttpUrlOrNull()!!.newBuilder() + return GET(url.toString(), headers) + } + } } } if (query.isNotEmpty()) { @@ -103,6 +112,7 @@ class AllHentai : ParsedHttpSource() { if (authorElement == null) { authorElement = infoElement.select("span.elem_screenwriter").first()?.text() } + manga.title = infoElement.select("h1.names .name").text() manga.author = authorElement manga.artist = infoElement.select("span.elem_illustrator").first()?.text() manga.genre = infoElement.select("span.elem_genre").text().split(",").plusElement(category).joinToString { it.trim() } @@ -243,7 +253,10 @@ class AllHentai : ParsedHttpSource() { }.build() return GET(page.imageUrl!!, imgHeader) } - + private class OrderBy : Filter.Select( + "Сортировать", + arrayOf("Без(фильтры)", "По году", "По алфавиту", "По популярности", "Популярно сейчас", "По рейтингу", "Новинки", "По дате обновления") + ) private class Genre(name: String, val id: String) : Filter.TriState(name) private class GenreList(genres: List) : Filter.Group("Genres", genres) @@ -253,6 +266,7 @@ class AllHentai : ParsedHttpSource() { * on https://readmanga.me/search/advanced */ override fun getFilterList() = FilterList( + OrderBy(), GenreList(getGenreList()) ) diff --git a/src/ru/desu/AndroidManifest.xml b/src/ru/desu/AndroidManifest.xml index 30deb7f79..6bc86da55 100644 --- a/src/ru/desu/AndroidManifest.xml +++ b/src/ru/desu/AndroidManifest.xml @@ -1,2 +1,24 @@ - + + + + + + + + + + + + + + + + diff --git a/src/ru/desu/build.gradle b/src/ru/desu/build.gradle index 9720b8201..e68d9a6ca 100644 --- a/src/ru/desu/build.gradle +++ b/src/ru/desu/build.gradle @@ -5,7 +5,7 @@ ext { extName = 'Desu' pkgNameSuffix = 'ru.desu' extClass = '.Desu' - extVersionCode = 6 + extVersionCode = 7 libVersion = '1.2' } diff --git a/src/ru/desu/src/eu/kanade/tachiyomi/extension/ru/desu/Desu.kt b/src/ru/desu/src/eu/kanade/tachiyomi/extension/ru/desu/Desu.kt index 0ae0cc835..c8d61c178 100644 --- a/src/ru/desu/src/eu/kanade/tachiyomi/extension/ru/desu/Desu.kt +++ b/src/ru/desu/src/eu/kanade/tachiyomi/extension/ru/desu/Desu.kt @@ -177,6 +177,32 @@ class Desu : HttpSource() { override fun imageUrlParse(response: Response) = throw UnsupportedOperationException("This method should not be called!") + private fun searchMangaByIdRequest(id: String): Request { + return GET("$baseUrl/$id", headers) + } + + override fun fetchSearchManga(page: Int, query: String, filters: FilterList): Observable { + return if (query.startsWith(PREFIX_SLUG_SEARCH)) { + val realQuery = query.removePrefix(PREFIX_SLUG_SEARCH) + client.newCall(searchMangaByIdRequest(realQuery)) + .asObservableSuccess() + .map { response -> + val details = mangaDetailsParse(response) + details.url = "/$realQuery" + MangasPage(listOf(details), false) + } + } else { + client.newCall(searchMangaRequest(page, query, filters)) + .asObservableSuccess() + .map { response -> + searchMangaParse(response) + } + } + } + companion object { + const val PREFIX_SLUG_SEARCH = "slug:" + } + private class OrderBy : Filter.Select( "Сортировка", arrayOf("Популярность", "Дата", "Имя") diff --git a/src/ru/desu/src/eu/kanade/tachiyomi/extension/ru/desu/DesuActivity.kt b/src/ru/desu/src/eu/kanade/tachiyomi/extension/ru/desu/DesuActivity.kt new file mode 100644 index 000000000..882e61f8f --- /dev/null +++ b/src/ru/desu/src/eu/kanade/tachiyomi/extension/ru/desu/DesuActivity.kt @@ -0,0 +1,40 @@ +package eu.kanade.tachiyomi.extension.ru.desu + +import android.app.Activity +import android.content.ActivityNotFoundException +import android.content.Intent +import android.os.Bundle +import android.util.Log +import kotlin.system.exitProcess +/** + * Springboard that accepts https://desu.me/manga/xxx intents and redirects them to + * the main tachiyomi process. The idea is to not install the intent filter unless + * you have this extension installed, but still let the main tachiyomi app control + * things. + */ +class DesuActivity : Activity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + val pathSegments = intent?.data?.pathSegments + if (pathSegments != null && pathSegments.size > 1) { + val titleid = pathSegments[1] + val mainIntent = Intent().apply { + action = "eu.kanade.tachiyomi.SEARCH" + putExtra("query", "${Desu.PREFIX_SLUG_SEARCH}$titleid") + putExtra("filter", packageName) + } + + try { + startActivity(mainIntent) + } catch (e: ActivityNotFoundException) { + Log.e("RemangaActivity", e.toString()) + } + } else { + Log.e("RemangaActivity", "could not parse uri from intent $intent") + } + + finish() + exitProcess(0) + } +} diff --git a/src/ru/mintmanga/build.gradle b/src/ru/mintmanga/build.gradle index b1ede9bb1..c3c4c9ae9 100644 --- a/src/ru/mintmanga/build.gradle +++ b/src/ru/mintmanga/build.gradle @@ -5,7 +5,7 @@ ext { extName = 'Mintmanga' pkgNameSuffix = 'ru.mintmanga' extClass = '.Mintmanga' - extVersionCode = 27 + extVersionCode = 28 libVersion = '1.2' } diff --git a/src/ru/mintmanga/src/eu/kanade/tachiyomi/extension/ru/mintmanga/Mintmanga.kt b/src/ru/mintmanga/src/eu/kanade/tachiyomi/extension/ru/mintmanga/Mintmanga.kt index 6de6dd9d9..de8692efd 100644 --- a/src/ru/mintmanga/src/eu/kanade/tachiyomi/extension/ru/mintmanga/Mintmanga.kt +++ b/src/ru/mintmanga/src/eu/kanade/tachiyomi/extension/ru/mintmanga/Mintmanga.kt @@ -135,6 +135,7 @@ class Mintmanga : ParsedHttpSource() { if (authorElement == null) { authorElement = infoElement.select("span.elem_screenwriter").first()?.text() } + manga.title = infoElement.select("h1.names .name").text() manga.author = authorElement manga.artist = infoElement.select("span.elem_illustrator").first()?.text() manga.genre = infoElement.select("span.elem_genre").text().split(",").plusElement(category).joinToString { it.trim() } @@ -304,7 +305,7 @@ class Mintmanga : ParsedHttpSource() { } private class OrderBy : Filter.Select( - "Сортировать\n(отдельно от фильтров)", + "Сортировать", arrayOf("Без(фильтры)", "По году", "По алфавиту", "По популярности", "Популярно сейчас", "По рейтингу", "Новинки", "По дате обновления") ) diff --git a/src/ru/readmanga/build.gradle b/src/ru/readmanga/build.gradle index 0ea20226e..f518d51b1 100644 --- a/src/ru/readmanga/build.gradle +++ b/src/ru/readmanga/build.gradle @@ -5,7 +5,7 @@ ext { extName = 'Readmanga' pkgNameSuffix = 'ru.readmanga' extClass = '.Readmanga' - extVersionCode = 26 + extVersionCode = 27 libVersion = '1.2' } diff --git a/src/ru/readmanga/src/eu/kanade/tachiyomi/extension/ru/readmanga/Readmanga.kt b/src/ru/readmanga/src/eu/kanade/tachiyomi/extension/ru/readmanga/Readmanga.kt index 1640500b0..cc0e09d74 100644 --- a/src/ru/readmanga/src/eu/kanade/tachiyomi/extension/ru/readmanga/Readmanga.kt +++ b/src/ru/readmanga/src/eu/kanade/tachiyomi/extension/ru/readmanga/Readmanga.kt @@ -135,6 +135,7 @@ class Readmanga : ParsedHttpSource() { if (authorElement == null) { authorElement = infoElement.select("span.elem_screenwriter").first()?.text() } + manga.title = infoElement.select("h1.names .name").text() manga.author = authorElement manga.artist = infoElement.select("span.elem_illustrator").first()?.text() manga.genre = infoElement.select("span.elem_genre").text().split(",").plusElement(category).joinToString { it.trim() } @@ -305,7 +306,7 @@ class Readmanga : ParsedHttpSource() { } private class OrderBy : Filter.Select( - "Сортировать\n(отдельно от фильтров)", + "Сортировать", arrayOf("Без(фильтры)", "По алфавиту", "По популярности", "Популярно сейчас", "По рейтингу", "Новинки", "По дате обновления") ) diff --git a/src/ru/remanga/build.gradle b/src/ru/remanga/build.gradle index 899074c1e..fe0e5cc7b 100644 --- a/src/ru/remanga/build.gradle +++ b/src/ru/remanga/build.gradle @@ -5,7 +5,7 @@ ext { extName = 'Remanga' pkgNameSuffix = 'ru.remanga' extClass = '.Remanga' - extVersionCode = 21 + extVersionCode = 22 libVersion = '1.2' } diff --git a/src/ru/remanga/src/eu/kanade/tachiyomi/extension/ru/remanga/Remanga.kt b/src/ru/remanga/src/eu/kanade/tachiyomi/extension/ru/remanga/Remanga.kt index f955029c6..f3d695ba4 100644 --- a/src/ru/remanga/src/eu/kanade/tachiyomi/extension/ru/remanga/Remanga.kt +++ b/src/ru/remanga/src/eu/kanade/tachiyomi/extension/ru/remanga/Remanga.kt @@ -350,7 +350,7 @@ class Remanga : ConfigurableSource, HttpSource() { .asObservableSuccess() .map { response -> val details = mangaDetailsParse(response) - details.url = "/$realQuery" + details.url = "/api/titles/$realQuery" MangasPage(listOf(details), false) } } else { diff --git a/src/ru/selfmanga/build.gradle b/src/ru/selfmanga/build.gradle index 4630059b0..3c86af7cf 100644 --- a/src/ru/selfmanga/build.gradle +++ b/src/ru/selfmanga/build.gradle @@ -5,7 +5,7 @@ ext { extName = 'Selfmanga' pkgNameSuffix = 'ru.selfmanga' extClass = '.Selfmanga' - extVersionCode = 7 + extVersionCode = 8 libVersion = '1.2' } diff --git a/src/ru/selfmanga/src/eu/kanade/tachiyomi/extension/ru/selfmanga/Selfmanga.kt b/src/ru/selfmanga/src/eu/kanade/tachiyomi/extension/ru/selfmanga/Selfmanga.kt index 50be5d6ec..84897ab27 100644 --- a/src/ru/selfmanga/src/eu/kanade/tachiyomi/extension/ru/selfmanga/Selfmanga.kt +++ b/src/ru/selfmanga/src/eu/kanade/tachiyomi/extension/ru/selfmanga/Selfmanga.kt @@ -22,7 +22,7 @@ class Selfmanga : ParsedHttpSource() { override val name = "Selfmanga" - override val baseUrl = "https://selfmanga.ru" + override val baseUrl = "https://selfmanga.live" override val lang = "ru" @@ -88,6 +88,7 @@ class Selfmanga : ParsedHttpSource() { val infoElement = document.select("div.leftContent").first() val manga = SManga.create() + manga.title = infoElement.select("h1.names .name").text() manga.author = infoElement.select("span.elem_author").first()?.text() manga.genre = infoElement.select("span.elem_genre").text().replace(" ,", ",") manga.description = infoElement.select("div.manga-description").text()