diff --git a/src/es/plottwistnofansub/build.gradle b/src/es/plottwistnofansub/build.gradle deleted file mode 100644 index fabef680d..000000000 --- a/src/es/plottwistnofansub/build.gradle +++ /dev/null @@ -1,17 +0,0 @@ -apply plugin: 'com.android.application' -apply plugin: 'kotlin-android' - -ext { - extName = 'Plot Twist No Fansub' - pkgNameSuffix = 'es.plottwistnofansub' - extClass = '.PlotTwistNoFansub' - extVersionCode = 2 - libVersion = '1.2' -} - -dependencies { - compileOnly 'com.google.code.gson:gson:2.8.5' - compileOnly 'com.github.salomonbrys.kotson:kotson:2.5.0' -} - -apply from: "$rootDir/common.gradle" diff --git a/src/es/plottwistnofansub/res/ic_launcher.png b/src/es/plottwistnofansub/res/ic_launcher.png deleted file mode 100644 index 08fcd44f4..000000000 Binary files a/src/es/plottwistnofansub/res/ic_launcher.png and /dev/null differ diff --git a/src/es/plottwistnofansub/res/mipmap-hdpi/ic_launcher.png b/src/es/plottwistnofansub/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index 1745430fb..000000000 Binary files a/src/es/plottwistnofansub/res/mipmap-hdpi/ic_launcher.png and /dev/null differ diff --git a/src/es/plottwistnofansub/res/mipmap-mdpi/ic_launcher.png b/src/es/plottwistnofansub/res/mipmap-mdpi/ic_launcher.png deleted file mode 100644 index a7ff93a08..000000000 Binary files a/src/es/plottwistnofansub/res/mipmap-mdpi/ic_launcher.png and /dev/null differ diff --git a/src/es/plottwistnofansub/res/mipmap-xhdpi/ic_launcher.png b/src/es/plottwistnofansub/res/mipmap-xhdpi/ic_launcher.png deleted file mode 100644 index 85030762f..000000000 Binary files a/src/es/plottwistnofansub/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ diff --git a/src/es/plottwistnofansub/res/mipmap-xxhdpi/ic_launcher.png b/src/es/plottwistnofansub/res/mipmap-xxhdpi/ic_launcher.png deleted file mode 100644 index 5387c4000..000000000 Binary files a/src/es/plottwistnofansub/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ diff --git a/src/es/plottwistnofansub/res/mipmap-xxxhdpi/ic_launcher.png b/src/es/plottwistnofansub/res/mipmap-xxxhdpi/ic_launcher.png deleted file mode 100644 index e5bd7358b..000000000 Binary files a/src/es/plottwistnofansub/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ diff --git a/src/es/plottwistnofansub/src/eu/kanade/tachiyomi/extension/es/plottwistnofansub/PlotTwistNoFansub.kt b/src/es/plottwistnofansub/src/eu/kanade/tachiyomi/extension/es/plottwistnofansub/PlotTwistNoFansub.kt deleted file mode 100644 index 10b637ffe..000000000 --- a/src/es/plottwistnofansub/src/eu/kanade/tachiyomi/extension/es/plottwistnofansub/PlotTwistNoFansub.kt +++ /dev/null @@ -1,173 +0,0 @@ -package eu.kanade.tachiyomi.extension.es.plottwistnofansub - -import com.github.salomonbrys.kotson.array -import com.github.salomonbrys.kotson.get -import com.github.salomonbrys.kotson.string -import com.google.gson.JsonArray -import com.google.gson.JsonElement -import com.google.gson.JsonParser -import eu.kanade.tachiyomi.network.GET -import eu.kanade.tachiyomi.network.POST -import eu.kanade.tachiyomi.source.model.FilterList -import eu.kanade.tachiyomi.source.model.Page -import eu.kanade.tachiyomi.source.model.SChapter -import eu.kanade.tachiyomi.source.model.SManga -import eu.kanade.tachiyomi.source.online.ParsedHttpSource -import eu.kanade.tachiyomi.util.asJsoup -import okhttp3.FormBody -import okhttp3.Response -import org.jsoup.nodes.Document -import org.jsoup.nodes.Element - -class PlotTwistNoFansub : ParsedHttpSource() { - - override val baseUrl = "https://www.plot-twistnf-scans.com" - - override val lang = "es" - - override val name = "Plot Twist No Fansub" - - override val supportsLatest = true - - override fun popularMangaRequest(page: Int) = GET("$baseUrl/page/$page/?s", headers) - - override fun popularMangaSelector() = "div.td-module-thumb [href*=\"archivos\"]" - - override fun popularMangaFromElement(element: Element) = SManga.create().apply { - element.select("a").let { - setUrlWithoutDomain(it.attr("href")) - title = it.attr("title") - thumbnail_url = it.select("img").attr("src").replace("-150x150", "") - } - } - - private fun mangaUrlBuilderFromChapterUrl(chapterUrl: String): String { - val postName = chapterUrl.substringAfter("read/").substringBefore("/chapter") - return "/archivos/manga/$postName/" - } - - override fun popularMangaNextPageSelector() = "div.page-nav a:has(i)" - - override fun latestUpdatesRequest(page: Int) = GET("$baseUrl/", headers) - - override fun latestUpdatesSelector() = "div.row.last-updates div.item" - - override fun latestUpdatesFromElement(element: Element) = SManga.create().apply { - element.select("div.item").let { - setUrlWithoutDomain(mangaUrlBuilderFromChapterUrl(it.select("a.lastup").attr("href"))) - title = it.select("a.lastup").text() - thumbnail_url = it.select("img.lazy.imgigh").attr("data-lazy-src") - } - } - - override fun latestUpdatesNextPageSelector(): String? = null - - override fun mangaDetailsParse(document: Document) = SManga.create().apply { - document.select("article[id^=post-]").let { it -> - thumbnail_url = it.select("img.entry-thumb").attr("src") - description = it.select("strong")?.text() - genre = it.select("div.mangaInfo a").joinToString(", ") { - it.text() - } - } - } - - override fun chapterListSelector() = throw Exception("Not Used") - - private fun chapterUrlBuilder(postName: String, chapterNumber: String): String { - return "/read/$postName/chapter-$chapterNumber/" - } - - private fun paginationFormBuilder(page: Int, mangaId: Int) = FormBody.Builder().apply { - add("action", "lcap") - add("manga_id", mangaId.toString()) - add("pageNumber", page.toString()) - } - - private fun parseJson(json: String): JsonElement { - return JsonParser().parse(json) - } - - private fun fetchChaptersPertPage(page: Int, mangaId: Int): JsonArray { - val res = client.newCall(POST("$baseUrl/wp-admin/admin-ajax.php", headers, paginationFormBuilder(page, mangaId).build())).execute().body()!!.string() - return parseJson(res.toString()).array - } - - private fun chapterFromJsonElement(jsonElement: JsonElement) = SChapter.create().apply { - val nameStr = jsonElement["chapter_name"].string - val chapterNumber = jsonElement["chapter_number"].string - - name = if (nameStr.contains("Capitulo") || nameStr.contains("Capítulo")) { - nameStr - } else if (nameStr.contains("apítulo")) { - nameStr.replace("í", "í") - } else { - "Capítulo $chapterNumber: $nameStr" - } - - url = chapterUrlBuilder(jsonElement["post_name"].string, chapterNumber) - scanlator = "Plot Twist No Fansub" - } - - override fun chapterListParse(response: Response): List<SChapter> = mutableListOf<SChapter>().apply { - val document = response.asJsoup() - val mangaId = document.select("link[rel=shortlink]") - .attr("href") - .substringAfter("?p=") - .toIntOrNull() - - if (mangaId != null) { - var page = 1 - var moreChapters = true - - // This source uses an AJAX paginated plugin to get the chapter list (5 chapters per page), - // if there are no more chapters it returns [], knowing that: - var currentPageChaptersList: JsonArray - val allChaptersList = JsonArray() - - while (moreChapters) { - currentPageChaptersList = fetchChaptersPertPage(page, mangaId) - allChaptersList.addAll(currentPageChaptersList) - - if (currentPageChaptersList.size() == 5) page++ - else moreChapters = false - } - - allChaptersList.forEach { - add(chapterFromJsonElement(it)) - } - } else throw Exception("No fue posible obtener la lista capítulos") - } - - override fun chapterFromElement(element: Element) = throw Exception("Not Used") - - private fun imageUrlBuilder(postName: String, mangaId: String, chapterNumber: String, imgName: String): String { - return "$baseUrl/wp-manga/${postName}_$mangaId/ch_$chapterNumber/$imgName" - } - - override fun pageListParse(document: Document): List<Page> = mutableListOf<Page>().apply { - val jsonStr = document.select("script:containsData(var obj =)") - .toString() - .substringAfter("obj =") - .substringBeforeLast(";").trim() - - val jsonObject = parseJson(jsonStr) - val imagesList = jsonObject["images"].array - val mangaPostName = jsonObject["title"].string - val chapterNumber = jsonObject["actual"].string - - imagesList.forEach { - add(Page(size, "", imageUrlBuilder(mangaPostName, it["manga_id"].string, chapterNumber, it["image_name"].string))) - } - } - - override fun imageUrlParse(document: Document) = throw Exception("Not Used") - - override fun searchMangaRequest(page: Int, query: String, filters: FilterList) = GET("$baseUrl/page/$page/?s=$query") - - override fun searchMangaFromElement(element: Element) = popularMangaFromElement(element) - - override fun searchMangaNextPageSelector() = popularMangaNextPageSelector() - - override fun searchMangaSelector() = popularMangaSelector() -}