diff --git a/src/en/catmanga/build.gradle b/src/en/catmanga/build.gradle index ca6f77fd8..9297a89ce 100644 --- a/src/en/catmanga/build.gradle +++ b/src/en/catmanga/build.gradle @@ -6,7 +6,7 @@ ext { extName = 'CatManga' pkgNameSuffix = "en.catmanga" extClass = '.CatManga' - extVersionCode = 6 + extVersionCode = 7 } apply from: "$rootDir/common.gradle" diff --git a/src/en/catmanga/src/eu/kanade/tachiyomi/extension/en/catmanga/CatData.kt b/src/en/catmanga/src/eu/kanade/tachiyomi/extension/en/catmanga/CatData.kt index f4e4e8d86..2d6015bd7 100644 --- a/src/en/catmanga/src/eu/kanade/tachiyomi/extension/en/catmanga/CatData.kt +++ b/src/en/catmanga/src/eu/kanade/tachiyomi/extension/en/catmanga/CatData.kt @@ -8,13 +8,13 @@ data class CatSeries( val alt_titles: List, val authors: List, val genres: List, - val chapters: List, + val chapters: List? = null, val title: String, val series_id: String, val description: String, val status: String, val cover_art: CatSeriesCover, - val all_covers: List + val all_covers: List? = null ) { fun toSManga() = this.let { series -> SManga.create().apply { @@ -30,9 +30,6 @@ data class CatSeries( else -> SManga.UNKNOWN } - if (chapters.isEmpty()) { - description = "[COMING SOON] $description" - } if (alt_titles.isNotEmpty()) { description += "\n\nAlternative titles:\n" alt_titles.forEach { diff --git a/src/en/catmanga/src/eu/kanade/tachiyomi/extension/en/catmanga/CatManga.kt b/src/en/catmanga/src/eu/kanade/tachiyomi/extension/en/catmanga/CatManga.kt index 0991957c4..abae4e7c4 100644 --- a/src/en/catmanga/src/eu/kanade/tachiyomi/extension/en/catmanga/CatManga.kt +++ b/src/en/catmanga/src/eu/kanade/tachiyomi/extension/en/catmanga/CatManga.kt @@ -40,6 +40,11 @@ class CatManga : HttpSource() { override fun searchMangaRequest(page: Int, query: String, filters: FilterList) = allSeriesRequest + override fun chapterListRequest(manga: SManga): Request { + val seriesId = manga.url.substringAfter("/series/") + return GET("$baseUrl/api/series/$seriesId") + } + override fun fetchSearchManga(page: Int, query: String, filters: FilterList): Observable { return client.newCall(searchMangaRequest(page, query, filters)) .asObservableSuccess() @@ -69,50 +74,44 @@ class CatManga : HttpSource() { } } - override fun fetchChapterList(manga: SManga): Observable> { - val seriesId = manga.url.substringAfter("/series/") - return client.newCall(allSeriesRequest) - .asObservableSuccess() - .map { response -> - val seriesPrefs = application.getSharedPreferences("source_${id}_time_found:$seriesId", 0) - val seriesPrefsEditor = seriesPrefs.edit() - val chapters = json.decodeFromString>(response.body!!.string()) - .find { it.series_id == seriesId }!! - .chapters - .asReversed() - .map { chapter -> - val title = chapter.title ?: "" - val groups = chapter.groups.joinToString(", ") - val numberUrl = chapter.number.chapterNumberToUrlPath() - val displayNumber = chapter.display_number ?: numberUrl - SChapter.create().apply { - url = "${manga.url}/$numberUrl" - chapter_number = chapter.number - scanlator = groups + override fun chapterListParse(response: Response): List { + val series = json.decodeFromString(response.body!!.string()) + val seriesPrefs = application.getSharedPreferences("source_${id}_time_found:${series.series_id}", 0) + val seriesPrefsEditor = seriesPrefs.edit() + val chapters = series.chapters!! + .asReversed() + .map { chapter -> + val title = chapter.title ?: "" + val groups = chapter.groups.joinToString(", ") + val numberUrl = chapter.number.chapterNumberToUrlPath() + val displayNumber = chapter.display_number ?: numberUrl + SChapter.create().apply { + url = "/series/${series.series_id}/$numberUrl" + chapter_number = chapter.number + scanlator = groups - name = if (chapter.volume != null) { - "Vol.${chapter.volume} " - } else { - "" - } - name += "Ch.$displayNumber" - if (title.isNotBlank()) { - name += " - $title" - } - - // Save current time when a chapter is found for the first time, and reuse it on future - // checks to prevent manga entry without any new chapter bumped to the top of - // "Latest chapter" list when the library is updated. - val currentTimeMillis = System.currentTimeMillis() - if (!seriesPrefs.contains(numberUrl)) { - seriesPrefsEditor.putLong(numberUrl, currentTimeMillis) - } - date_upload = seriesPrefs.getLong(numberUrl, currentTimeMillis) - } + name = if (chapter.volume != null) { + "Vol.${chapter.volume} " + } else { + "" } - seriesPrefsEditor.apply() - chapters + name += "Ch.$displayNumber" + if (title.isNotBlank()) { + name += " - $title" + } + + // Save current time when a chapter is found for the first time, and reuse it on future + // checks to prevent manga entry without any new chapter bumped to the top of + // "Latest chapter" list when the library is updated. + val currentTimeMillis = System.currentTimeMillis() + if (!seriesPrefs.contains(numberUrl)) { + seriesPrefsEditor.putLong(numberUrl, currentTimeMillis) + } + date_upload = seriesPrefs.getLong(numberUrl, currentTimeMillis) + } } + seriesPrefsEditor.apply() + return chapters } override fun popularMangaParse(response: Response): MangasPage { @@ -166,10 +165,6 @@ class CatManga : HttpSource() { throw UnsupportedOperationException("Not used.") } - override fun chapterListParse(response: Response): List { - throw UnsupportedOperationException("Not used.") - } - override fun searchMangaParse(response: Response): MangasPage { throw UnsupportedOperationException("Not used.") }