diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/online/russian/Mangachan.kt b/app/src/main/java/eu/kanade/tachiyomi/source/online/russian/Mangachan.kt index 6bcc61707..5f7f057f0 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/source/online/russian/Mangachan.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/online/russian/Mangachan.kt @@ -49,8 +49,12 @@ class Mangachan : ParsedHttpSource() { } } } - is OrderBy -> { if (filter.state!!.ascending && filter.state!!.index == 0) { statusParam = false } } - is Status -> status = arrayOf("", "all_done", "end", "ongoing", "new_ch")[filter.state] + is OrderBy -> { + if (filter.state!!.ascending && filter.state!!.index == 0) { + statusParam = false + } + } + is Status -> status = arrayOf("", "all_done", "end", "ongoing", "new_ch")[filter.state] } } @@ -103,6 +107,7 @@ class Mangachan : ParsedHttpSource() { override fun popularMangaFromElement(element: Element): SManga { val manga = SManga.create() + manga.thumbnail_url = element.select("div.manga_images img").first().attr("src") element.select("h2 > a").first().let { manga.setUrlWithoutDomain(it.attr("href")) manga.title = it.text() @@ -220,32 +225,22 @@ class Mangachan : ParsedHttpSource() { GenreList(getGenreList()) ) -// private class StatusList(status: List) : Filter.Group("Статус", status) -// private class Status(name: String, val id: String) : Filter.CheckBox(name, false) -// private fun getStatusList() = listOf( -// Status("Перевод завершен", "/all_done"), -// Status("Выпуск завершен", "/end"), -// Status("Онгоинг", "/ongoing"), -// Status("Новые главы", "/new_ch") -// ) - - /* [...document.querySelectorAll("li.sidetag > a:nth-child(1)")].map((el,i) => - * { const link=el.getAttribute('href');const id=link.substr(6,link.length); - * return `Genre("${id.replace("_", " ")}")` }).join(',\n') + /* [...document.querySelectorAll("li.sidetag > a:nth-child(1)")] + * .map(el => `Genre("${el.getAttribute('href').substr(6)}")`).join(',\n') * on http://mangachan.me/ */ private fun getGenreList() = listOf( - Genre("18 плюс"), + Genre("18_плюс"), Genre("bdsm"), Genre("арт"), Genre("боевик"), - Genre("боевые искусства"), + Genre("боевые_искусства"), Genre("вампиры"), Genre("веб"), Genre("гарем"), - Genre("гендерная интрига"), - Genre("героическое фэнтези"), + Genre("гендерная_интрига"), + Genre("героическое_фэнтези"), Genre("детектив"), Genre("дзёсэй"), Genre("додзинси"), @@ -262,13 +257,13 @@ class Mangachan : ParsedHttpSource() { Genre("меха"), Genre("мистика"), Genre("музыка"), - Genre("научная фантастика"), + Genre("научная_фантастика"), Genre("повседневность"), Genre("постапокалиптика"), Genre("приключения"), Genre("психология"), Genre("романтика"), - Genre("самурайский боевик"), + Genre("самурайский_боевик"), Genre("сборник"), Genre("сверхъестественное"), Genre("сказка"), @@ -279,7 +274,6 @@ class Mangachan : ParsedHttpSource() { Genre("сёдзё-ай"), Genre("сёнэн"), Genre("сёнэн-ай"), - Genre("темное фэнтези"), Genre("тентакли"), Genre("трагедия"), Genre("триллер"), diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/online/russian/Mintmanga.kt b/app/src/main/java/eu/kanade/tachiyomi/source/online/russian/Mintmanga.kt index 066be0e5c..74779b4b5 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/source/online/russian/Mintmanga.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/online/russian/Mintmanga.kt @@ -24,23 +24,19 @@ class Mintmanga : ParsedHttpSource() { override val supportsLatest = true - override fun headersBuilder() = Headers.Builder().apply { - add("User-Agent", "Mozilla/5.0 (Windows NT 6.3; WOW64)") - add("Referer", baseUrl) - } - override fun popularMangaRequest(page: Int): Request = GET("$baseUrl/list?sortType=rate&offset=${70 * (page - 1)}&max=70", headers) override fun latestUpdatesRequest(page: Int): Request = GET("$baseUrl/list?sortType=updated&offset=${70 * (page - 1)}&max=70", headers) - override fun popularMangaSelector() = "div.desc" + override fun popularMangaSelector() = "div.tile" - override fun latestUpdatesSelector() = "div.desc" + override fun latestUpdatesSelector() = "div.tile" override fun popularMangaFromElement(element: Element): SManga { val manga = SManga.create() + manga.thumbnail_url = element.select("img.lazy").first().attr("data-original") element.select("h3 > a").first().let { manga.setUrlWithoutDomain(it.attr("href")) manga.title = it.attr("title") @@ -90,10 +86,15 @@ class Mintmanga : ParsedHttpSource() { override fun chapterFromElement(element: Element): SChapter { val urlElement = element.select("a").first() + val urlText = urlElement.text() val chapter = SChapter.create() - chapter.setUrlWithoutDomain(urlElement.attr("href") + "?mature=1") - chapter.name = urlElement.text().replace(" новое", "") + chapter.setUrlWithoutDomain(urlElement.attr("href") + "?mtr=1") + if (urlText.endsWith(" новое")) { + chapter.name = urlText.dropLast(6) + } else { + chapter.name = urlText + } chapter.date_upload = element.select("td:eq(1)").first()?.text()?.let { SimpleDateFormat("dd/MM/yy", Locale.US).parse(it).time } ?: 0 @@ -143,11 +144,19 @@ class Mintmanga : ParsedHttpSource() { override fun imageUrlParse(document: Document) = "" + override fun imageRequest(page: Page): Request { + val imgHeader = Headers.Builder().apply { + add("User-Agent", "Mozilla/5.0 (Windows NT 6.3; WOW64)") + add("Referer", baseUrl) + }.build() + return GET(page.imageUrl!!, imgHeader) + } + private class Genre(name: String, val id: String) : Filter.TriState(name) - /* [...document.querySelectorAll("tr.advanced_option:nth-child(1) > td:nth-child(3) span.js-link")].map((el,i) => { - * const onClick=el.getAttribute('onclick');const id=onClick.substr(31,onClick.length-33); - * return `Genre("${el.textContent.trim()}", "${id}")` }).join(',\n') + /* [...document.querySelectorAll("tr.advanced_option:nth-child(1) > td:nth-child(3) span.js-link")] + * .map(el => `Genre("${el.textContent.trim()}", $"{el.getAttribute('onclick') + * .substr(31,el.getAttribute('onclick').length-33)"})`).join(',\n') * on http://mintmanga.com/search/advanced */ override fun getFilterList() = FilterList( diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/online/russian/Readmanga.kt b/app/src/main/java/eu/kanade/tachiyomi/source/online/russian/Readmanga.kt index 1fe8cbb65..3f2a26826 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/source/online/russian/Readmanga.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/online/russian/Readmanga.kt @@ -24,14 +24,9 @@ class Readmanga : ParsedHttpSource() { override val supportsLatest = true - override fun headersBuilder() = Headers.Builder().apply { - add("User-Agent", "Mozilla/5.0 (Windows NT 6.3; WOW64)") - add("Referer", baseUrl) - } + override fun popularMangaSelector() = "div.tile" - override fun popularMangaSelector() = "div.desc" - - override fun latestUpdatesSelector() = "div.desc" + override fun latestUpdatesSelector() = "div.tile" override fun popularMangaRequest(page: Int): Request = GET("$baseUrl/list?sortType=rate&offset=${70 * (page - 1)}&max=70", headers) @@ -41,6 +36,7 @@ class Readmanga : ParsedHttpSource() { override fun popularMangaFromElement(element: Element): SManga { val manga = SManga.create() + manga.thumbnail_url = element.select("img.lazy").first().attr("data-original") element.select("h3 > a").first().let { manga.setUrlWithoutDomain(it.attr("href")) manga.title = it.attr("title") @@ -90,10 +86,15 @@ class Readmanga : ParsedHttpSource() { override fun chapterFromElement(element: Element): SChapter { val urlElement = element.select("a").first() + val urlText = urlElement.text() val chapter = SChapter.create() - chapter.setUrlWithoutDomain(urlElement.attr("href") + "?mature=1") - chapter.name = urlElement.text().replace(" новое", "") + chapter.setUrlWithoutDomain(urlElement.attr("href") + "?mtr=1") + if (urlText.endsWith(" новое")) { + chapter.name = urlText.dropLast(6) + } else { + chapter.name = urlText + } chapter.date_upload = element.select("td:eq(1)").first()?.text()?.let { SimpleDateFormat("dd/MM/yy", Locale.US).parse(it).time } ?: 0 @@ -143,11 +144,19 @@ class Readmanga : ParsedHttpSource() { override fun imageUrlParse(document: Document) = "" + override fun imageRequest(page: Page): Request { + val imgHeader = Headers.Builder().apply { + add("User-Agent", "Mozilla/5.0 (Windows NT 6.3; WOW64)") + add("Referer", baseUrl) + }.build() + return GET(page.imageUrl!!, imgHeader) + } + private class Genre(name: String, val id: String) : Filter.TriState(name) - /* [...document.querySelectorAll("tr.advanced_option:nth-child(1) > td:nth-child(3) span.js-link")].map((el,i) => { - * const onClick=el.getAttribute('onclick');const id=onClick.substr(31,onClick.length-33); - * return `Genre("${el.textContent.trim()}", "${id}")` }).join(',\n') + /* [...document.querySelectorAll("tr.advanced_option:nth-child(1) > td:nth-child(3) span.js-link")] + * .map(el => `Genre("${el.textContent.trim()}", $"{el.getAttribute('onclick') + * .substr(31,el.getAttribute('onclick').length-33)"})`).join(',\n') * on http://readmanga.me/search/advanced */ override fun getFilterList() = FilterList( diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryCategoryAdapter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryCategoryAdapter.kt index b0feddf7c..ff2d884ad 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryCategoryAdapter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryCategoryAdapter.kt @@ -56,7 +56,7 @@ class LibraryCategoryAdapter(val view: LibraryCategoryView) : * @param manga the manga to find. */ fun indexOf(manga: Manga): Int { - return mangas.indexOfFirst { it.manga.id == manga.id } + return currentItems.indexOfFirst { it.manga.id == manga.id } } fun performFilter() { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt index 8d5cd9145..21ba220ad 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt @@ -83,7 +83,7 @@ class LibraryController( /** * Currently selected mangas. */ - val selectedMangas = mutableListOf() + val selectedMangas = mutableSetOf() private var selectedCoverManga: Manga? = null @@ -476,11 +476,13 @@ class LibraryController( */ fun setSelection(manga: Manga, selected: Boolean) { if (selected) { - selectedMangas.add(manga) - selectionRelay.call(LibrarySelectionEvent.Selected(manga)) + if (selectedMangas.add(manga)) { + selectionRelay.call(LibrarySelectionEvent.Selected(manga)) + } } else { - selectedMangas.remove(manga) - selectionRelay.call(LibrarySelectionEvent.Unselected(manga)) + if (selectedMangas.remove(manga)) { + selectionRelay.call(LibrarySelectionEvent.Unselected(manga)) + } } } diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 6d8ae27e8..91ef6fb19 100755 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -11,7 +11,7 @@ Nouveautés bibliothèque Dernières nouveautés Catégories - Sélectionné: %1$d + Sélectionné : %1$d Sauvegarde @@ -57,7 +57,7 @@ Réessayer Supprimer Reprendre - Ouvre dans le navigateur + Ouvrir dans le navigateur Ajouter à l\'écran d\'accueil Changer le mode d\'affichage Affichage @@ -152,9 +152,9 @@ Forcer portrait Forcer paysage R - G + V B - A + O @@ -164,7 +164,7 @@ Supprimer après avoir lu Désactivé Dernier chapitre lu - Avant-dernier chapiture lu + Avant-dernier chapitre lu Du troisième au dernier chapitre Du quatrième au dernier chapitre Télécharger les nouveaux chapitres @@ -286,7 +286,7 @@ Filtre personnalisé - Mettre comme couverture + Ajouter comme couverture Couverture mise à jour Page copiée vers %1$s En cours de téléchargement… @@ -313,7 +313,7 @@ Progression mise à jour: %1$d/%2$d Des nouveaux chapitres ont été trouvés La mise à jour de la couverture a échoué - Veuillez ajouter le manga dans votre bibliothèque avant de faire cela + Veuillez ajouter le manga dans votre bibliothèque avant Non branché Synchronisation annulée Connexion non disponible @@ -324,15 +324,15 @@ Sélectionner une icône de raccourci - Nouvelle mise à jour disponible! + Nouvelle mise à jour disponible ! Télécharger Ignorer - Aucun mise à jour disponible + Aucune mise à jour disponible Téléchargement commencé Vérification des mises à jour - Télécharger mise à jour + Télécharger la mise à jour Téléchargement en cours Téléchargement terminé Erreur lors du téléchargement @@ -400,12 +400,12 @@ Dossier de sauvegarde Service Source introuvable - Restauration terminé + Restauration terminée Impossible d\'ouvrir le fichier journal Fichier enregistré dans %1$s - Que voulez-vous sauvegarder? + Que voulez-vous sauvegarder ? Le défaut ne peut pas être selectionné avec des autres catégories - Supprimer les chapitres téléchargés? + Supprimer les chapitres téléchargés ? Pour %1$s chapitres Suivi @@ -439,7 +439,7 @@ Inverse les boutons de volume Rogner les bordures - La restauration utilise le source pour obtenir des données, des frais de l\'opérateur peuvent s\'appliquer. + La restauration utilise la source pour obtenir des données, des frais de l\'opérateur peuvent s\'appliquer. Assurez-vous que vous êtes connecté à des sources qui le demande avant de commencer la restauration. Recherche globale Ouvrir @@ -447,7 +447,7 @@ Assurez-vous que vous êtes connecté à des sources qui le demande avant de com Autre Recherche globale… - Aucun résultat! + Aucun résultat ! Récents Explorer