diff --git a/multisrc/overrides/weebreader/default/AndroidManifest.xml b/multisrc/overrides/weebreader/default/AndroidManifest.xml deleted file mode 100644 index c947ba15b..000000000 --- a/multisrc/overrides/weebreader/default/AndroidManifest.xml +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<manifest xmlns:android="http://schemas.android.com/apk/res/android" - package="eu.kanade.tachiyomi.extension"> - - <application> - <activity - android:name="eu.kanade.tachiyomi.multisrc.weebreader.WeebreaderUrlActivity" - android:excludeFromRecents="true" - android:exported="true" - android:theme="@android:style/Theme.NoDisplay"> - <intent-filter> - <action android:name="android.intent.action.VIEW" /> - - <category android:name="android.intent.category.DEFAULT" /> - <category android:name="android.intent.category.BROWSABLE" /> - <data - android:host="${SOURCEHOST}" - android:pathPattern="/titles/..*" - android:scheme="${SOURCESCHEME}" /> - </intent-filter> - </activity> - </application> -</manifest> diff --git a/multisrc/overrides/weebreader/naniscans/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/weebreader/naniscans/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index 9821a2161..000000000 Binary files a/multisrc/overrides/weebreader/naniscans/res/mipmap-hdpi/ic_launcher.png and /dev/null differ diff --git a/multisrc/overrides/weebreader/naniscans/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/weebreader/naniscans/res/mipmap-mdpi/ic_launcher.png deleted file mode 100644 index 584f7fd82..000000000 Binary files a/multisrc/overrides/weebreader/naniscans/res/mipmap-mdpi/ic_launcher.png and /dev/null differ diff --git a/multisrc/overrides/weebreader/naniscans/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/weebreader/naniscans/res/mipmap-xhdpi/ic_launcher.png deleted file mode 100644 index 7b8855485..000000000 Binary files a/multisrc/overrides/weebreader/naniscans/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ diff --git a/multisrc/overrides/weebreader/naniscans/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/weebreader/naniscans/res/mipmap-xxhdpi/ic_launcher.png deleted file mode 100644 index 21fe8337e..000000000 Binary files a/multisrc/overrides/weebreader/naniscans/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ diff --git a/multisrc/overrides/weebreader/naniscans/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/weebreader/naniscans/res/mipmap-xxxhdpi/ic_launcher.png deleted file mode 100644 index f18241d6a..000000000 Binary files a/multisrc/overrides/weebreader/naniscans/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ diff --git a/multisrc/overrides/weebreader/naniscans/res/web_hi_res_512.png b/multisrc/overrides/weebreader/naniscans/res/web_hi_res_512.png deleted file mode 100644 index 4e3407e0b..000000000 Binary files a/multisrc/overrides/weebreader/naniscans/res/web_hi_res_512.png and /dev/null differ diff --git a/multisrc/overrides/weebreader/naniscans/src/NaniScans.kt b/multisrc/overrides/weebreader/naniscans/src/NaniScans.kt deleted file mode 100644 index 9b1c35109..000000000 --- a/multisrc/overrides/weebreader/naniscans/src/NaniScans.kt +++ /dev/null @@ -1,7 +0,0 @@ -package eu.kanade.tachiyomi.extension.en.naniscans - -import eu.kanade.tachiyomi.multisrc.weebreader.Weebreader - -class NaniScans : Weebreader("NANI? Scans", "https://naniscans.com", "en") { - override val versionId = 2 -} diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/weebreader/Weebreader.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/weebreader/Weebreader.kt deleted file mode 100644 index f5a8f43f6..000000000 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/weebreader/Weebreader.kt +++ /dev/null @@ -1,179 +0,0 @@ -package eu.kanade.tachiyomi.multisrc.weebreader - -import eu.kanade.tachiyomi.network.GET -import eu.kanade.tachiyomi.network.asObservableSuccess -import eu.kanade.tachiyomi.source.model.FilterList -import eu.kanade.tachiyomi.source.model.MangasPage -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.HttpSource -import kotlinx.serialization.json.Json -import kotlinx.serialization.json.JsonObject -import kotlinx.serialization.json.int -import kotlinx.serialization.json.jsonArray -import kotlinx.serialization.json.jsonObject -import kotlinx.serialization.json.jsonPrimitive -import okhttp3.Request -import okhttp3.Response -import rx.Observable -import uy.kohesive.injekt.injectLazy -import java.text.SimpleDateFormat -import java.util.Locale - -abstract class Weebreader( - override val name: String, - override val baseUrl: String, - override val lang: String, -) : HttpSource() { - - override val supportsLatest = true - - private val dateParser = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss", Locale.getDefault()) - - private val json: Json by injectLazy() - - override fun latestUpdatesRequest(page: Int): Request = popularMangaRequest(page) - - override fun latestUpdatesParse(response: Response): MangasPage { - val titlesJson = json.parseToJsonElement(response.body.string()).jsonArray - - val mangaList = titlesJson - .mapNotNull { - val manga = it.jsonObject - - if (manga["type"]!!.jsonPrimitive.content != "Comic") { - return@mapNotNull null - } - - val date = manga["updatedAt"]!!.jsonPrimitive.content.let { datePrimitive -> - if (datePrimitive == "null") "2018-04-10T17:38:56" else datePrimitive - } - - Pair(dateParser.parse(date)!!.time, getBareSManga(manga)) - } - .sortedByDescending { it.first } - .map { it.second } - - return MangasPage(mangaList, false) - } - - override fun popularMangaRequest(page: Int): Request = GET("$baseUrl/api/titles") - - override fun popularMangaParse(response: Response): MangasPage { - val titlesJson = json.parseToJsonElement(response.body.string()).jsonArray - - val mangaList = titlesJson.mapNotNull { - val manga = it.jsonObject - - if (manga["type"]!!.jsonPrimitive.content == "Comic") { - getBareSManga(manga) - } else { - null - } - } - - return MangasPage(mangaList, false) - } - - override fun searchMangaParse(response: Response): MangasPage = popularMangaParse(response) - - override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request = GET("$baseUrl/api/titles/search?term=$query") - - // Workaround to allow "Open in browser" to use the real URL - override fun fetchMangaDetails(manga: SManga): Observable<SManga> = client.newCall(chapterListRequest(manga)).asObservableSuccess().map { mangaDetailsParse(it).apply { initialized = true } } - - // Return the real URL for "Open in browser" - override fun mangaDetailsRequest(manga: SManga) = GET("$baseUrl/titles/${manga.url}") - - override fun mangaDetailsParse(response: Response): SManga { - val titleJson = json.parseToJsonElement(response.body.string()).jsonObject - - if (titleJson["type"]!!.jsonPrimitive.content != "Comic") { - throw UnsupportedOperationException("Tachiyomi only supports Comics.") - } - - return SManga.create().apply { - title = titleJson["name"]!!.jsonPrimitive.content - artist = titleJson["artist"]!!.jsonPrimitive.content.trim() - author = titleJson["author"]!!.jsonPrimitive.content.trim() - description = titleJson["synopsis"]!!.jsonPrimitive.content - status = getStatus(titleJson["status"]!!.jsonPrimitive.content) - thumbnail_url = "$baseUrl${titleJson["coverUrl"]!!.jsonPrimitive.content}" - genre = titleJson["tags"]!!.jsonArray.joinToString { it.jsonPrimitive.content } - url = titleJson["id"]!!.jsonPrimitive.content - } - } - - override fun chapterListRequest(manga: SManga) = GET("$baseUrl/api/titles/${manga.url}") - - override fun chapterListParse(response: Response): List<SChapter> { - val titleJson = json.parseToJsonElement(response.body.string()).jsonObject - - if (titleJson["type"]!!.jsonPrimitive.content != "Comic") { - throw UnsupportedOperationException("Tachiyomi only supports Comics.") - } - - return titleJson["chapters"]!!.jsonArray.map { - val chapter = it.jsonObject - - SChapter.create().apply { - chapter_number = chapter["number"]!!.jsonPrimitive.content.toFloatOrNull() ?: -1f - name = getChapterTitle(chapter) - date_upload = dateParser.parse(chapter["releaseDate"]!!.jsonPrimitive.content)!!.time - url = "${titleJson["id"]!!.jsonPrimitive.content} ${chapter["id"]!!.jsonPrimitive.content}" - } - } - } - - override fun pageListRequest(chapter: SChapter): Request = GET("$baseUrl/api/chapters/${chapter.url.substring(37, 73)}") - - override fun pageListParse(response: Response): List<Page> { - val jsonObject = json.parseToJsonElement(response.body.string()).jsonObject - - return jsonObject["pages"]!!.jsonArray.map { - val item = it.jsonObject - Page(item["number"]!!.jsonPrimitive.int, "", "$baseUrl${item["pageUrl"]!!.jsonPrimitive.content}") - } - } - - override fun imageUrlParse(response: Response): String = throw UnsupportedOperationException("Not Used.") - - private fun getStatus(status: String): Int = when (status) { - "Ongoing" -> SManga.ONGOING - "Completed" -> SManga.COMPLETED - else -> SManga.UNKNOWN - } - - private fun getChapterTitle(chapter: JsonObject): String { - val chapterName = mutableListOf<String>() - - if (chapter["volume"]!!.jsonPrimitive.content != "null") { - chapterName.add("Vol." + chapter["volume"]!!.jsonPrimitive.content) - } - - if (chapter["number"]!!.jsonPrimitive.content != "null") { - chapterName.add("Ch." + chapter["number"]!!.jsonPrimitive.content) - } - - if (chapter["name"]!!.jsonPrimitive.content != "null") { - if (chapterName.isNotEmpty()) { - chapterName.add("-") - } - - chapterName.add(chapter["name"]!!.jsonPrimitive.content) - } - - if (chapterName.isEmpty()) { - chapterName.add("Oneshot") - } - - return chapterName.joinToString(" ") - } - - private fun getBareSManga(manga: JsonObject): SManga = SManga.create().apply { - title = manga["name"]!!.jsonPrimitive.content - thumbnail_url = "$baseUrl${manga["coverUrl"]!!.jsonPrimitive.content}" - url = manga["id"]!!.jsonPrimitive.content - } -} diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/weebreader/WeebreaderGenerator.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/weebreader/WeebreaderGenerator.kt deleted file mode 100644 index 2974e8753..000000000 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/weebreader/WeebreaderGenerator.kt +++ /dev/null @@ -1,24 +0,0 @@ -package eu.kanade.tachiyomi.multisrc.weebreader - -import generator.ThemeSourceData.SingleLang -import generator.ThemeSourceGenerator - -class WeebreaderGenerator : ThemeSourceGenerator { - - override val themePkg = "weebreader" - - override val themeClass = "Weebreader" - - override val baseVersionCode = 2 - - override val sources = listOf( - SingleLang("NANI? Scans", "https://naniscans.com", "en", overrideVersionCode = 6, className = "NaniScans"), - ) - - companion object { - @JvmStatic - fun main(args: Array<String>) { - WeebreaderGenerator().createAll() - } - } -} diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/weebreader/WeebreaderUrlActivity.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/weebreader/WeebreaderUrlActivity.kt deleted file mode 100644 index cd1330deb..000000000 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/weebreader/WeebreaderUrlActivity.kt +++ /dev/null @@ -1,35 +0,0 @@ -package eu.kanade.tachiyomi.multisrc.weebreader - -import android.app.Activity -import android.content.ActivityNotFoundException -import android.content.Intent -import android.os.Bundle -import android.util.Log -import kotlin.system.exitProcess - -class WeebreaderUrlActivity : 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", titleid) - putExtra("filter", packageName) - } - - try { - startActivity(mainIntent) - } catch (e: ActivityNotFoundException) { - Log.e("WeebreaderUrlActivity", e.toString()) - } - } else { - Log.e("WeebreaderUrlActivity", "could not parse uri from intent $intent") - } - - finish() - exitProcess(0) - } -}