mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-10-31 06:17:57 +01:00 
			
		
		
		
	Merge branch 'master' of https://github.com/inorichi/tachiyomi
# Conflicts: # README.md # app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryCategoryAdapter.kt # app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt
This commit is contained in:
		| @@ -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<Status>) : Filter.Group<Status>("Статус", 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("триллер"), | ||||
|   | ||||
| @@ -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( | ||||
|   | ||||
| @@ -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( | ||||
|   | ||||
| @@ -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() { | ||||
|   | ||||
| @@ -83,7 +83,7 @@ class LibraryController( | ||||
|     /** | ||||
|      * Currently selected mangas. | ||||
|      */ | ||||
|     val selectedMangas = mutableListOf<Manga>() | ||||
|     val selectedMangas = mutableSetOf<Manga>() | ||||
|  | ||||
|     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)) | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user