From 522b8c62935329ce62ebd606d57c8fbdfb7ee64a Mon Sep 17 00:00:00 2001 From: stevenyomi <95685115+stevenyomi@users.noreply.github.com> Date: Thu, 30 Jun 2022 17:53:12 +0800 Subject: [PATCH] Remove CopyManga (#12376) * Remove CopyManga * add to autocloser --- .github/workflows/issue_moderator.yml | 2 +- src/zh/copymanga/AndroidManifest.xml | 2 - src/zh/copymanga/build.gradle | 26 -- .../copymanga/res/mipmap-hdpi/ic_launcher.png | Bin 4099 -> 0 bytes .../copymanga/res/mipmap-mdpi/ic_launcher.png | Bin 2151 -> 0 bytes .../res/mipmap-xhdpi/ic_launcher.png | Bin 5013 -> 0 bytes .../res/mipmap-xxhdpi/ic_launcher.png | Bin 9852 -> 0 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 12719 -> 0 bytes src/zh/copymanga/res/web_hi_res_512.png | Bin 43124 -> 0 bytes .../extension/zh/copymanga/CopyManga.kt | 356 ------------------ .../extension/zh/copymanga/CopyMangaDto.kt | 131 ------- .../zh/copymanga/CopyMangaFilters.kt | 53 --- .../NonblockingRateLimitInterceptor.kt | 58 --- 13 files changed, 1 insertion(+), 627 deletions(-) delete mode 100644 src/zh/copymanga/AndroidManifest.xml delete mode 100644 src/zh/copymanga/build.gradle delete mode 100644 src/zh/copymanga/res/mipmap-hdpi/ic_launcher.png delete mode 100644 src/zh/copymanga/res/mipmap-mdpi/ic_launcher.png delete mode 100644 src/zh/copymanga/res/mipmap-xhdpi/ic_launcher.png delete mode 100644 src/zh/copymanga/res/mipmap-xxhdpi/ic_launcher.png delete mode 100644 src/zh/copymanga/res/mipmap-xxxhdpi/ic_launcher.png delete mode 100644 src/zh/copymanga/res/web_hi_res_512.png delete mode 100644 src/zh/copymanga/src/eu/kanade/tachiyomi/extension/zh/copymanga/CopyManga.kt delete mode 100644 src/zh/copymanga/src/eu/kanade/tachiyomi/extension/zh/copymanga/CopyMangaDto.kt delete mode 100644 src/zh/copymanga/src/eu/kanade/tachiyomi/extension/zh/copymanga/CopyMangaFilters.kt delete mode 100644 src/zh/copymanga/src/eu/kanade/tachiyomi/extension/zh/copymanga/NonblockingRateLimitInterceptor.kt diff --git a/.github/workflows/issue_moderator.yml b/.github/workflows/issue_moderator.yml index 93527ab35..92cd7b72e 100644 --- a/.github/workflows/issue_moderator.yml +++ b/.github/workflows/issue_moderator.yml @@ -35,7 +35,7 @@ jobs: }, { "type": "both", - "regex": ".*(mangago|mangafox|hq\\s*dragon|manga\\s*host|supermangas|superhentais|union\\s*mangas|yes\\s*mangas|manhuascan|heroscan|manhwahot|leitor\\.?net|manga\\s*livre|tsuki\\s*mangas|manga\\s*yabu|mangas\\.in|mangas\\.pw|hentaikai|toptoon\\+?|read\\s*comic\\s*online|coco\\s*manhua|hitomi\\.la).*", + "regex": ".*(mangago|mangafox|hq\\s*dragon|manga\\s*host|supermangas|superhentais|union\\s*mangas|yes\\s*mangas|manhuascan|heroscan|manhwahot|leitor\\.?net|manga\\s*livre|tsuki\\s*mangas|manga\\s*yabu|mangas\\.in|mangas\\.pw|hentaikai|toptoon\\+?|read\\s*comic\\s*online|coco\\s*manhua|hitomi\\.la|copymanga).*", "ignoreCase": true, "message": "{match} will not be added back as it is too difficult to maintain. Read #3475 for more information" }, diff --git a/src/zh/copymanga/AndroidManifest.xml b/src/zh/copymanga/AndroidManifest.xml deleted file mode 100644 index 30deb7f79..000000000 --- a/src/zh/copymanga/AndroidManifest.xml +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/src/zh/copymanga/build.gradle b/src/zh/copymanga/build.gradle deleted file mode 100644 index 280ddfbab..000000000 --- a/src/zh/copymanga/build.gradle +++ /dev/null @@ -1,26 +0,0 @@ -apply plugin: 'com.android.application' -apply plugin: 'kotlin-android' -apply plugin: 'kotlinx-serialization' - -ext { - extName = 'CopyManga' - pkgNameSuffix = 'zh.copymanga' - extClass = '.CopyManga' - extVersionCode = 31 -} - -dependencies { - implementation 'com.luhuiguo:chinese-utils:1.0' -} - -apply from: "$rootDir/common.gradle" - -android { - packagingOptions { - exclude '/pinyin.txt' - exclude '/polyphone.txt' - exclude '/trad.txt' - exclude '/traditional.txt' - exclude '/unknown.txt' - } -} diff --git a/src/zh/copymanga/res/mipmap-hdpi/ic_launcher.png b/src/zh/copymanga/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index d71429b79326fd31c472454ade6313f3855e906c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4099 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 B)r|lE diff --git a/src/zh/copymanga/res/mipmap-mdpi/ic_launcher.png b/src/zh/copymanga/res/mipmap-mdpi/ic_launcher.png deleted file mode 100644 index 5bb6d9327bf303883a12631f5eb996a5bf4f6e55..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2151 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 diff --git a/src/zh/copymanga/res/mipmap-xxhdpi/ic_launcher.png b/src/zh/copymanga/res/mipmap-xxhdpi/ic_launcher.png deleted file mode 100644 index 4f85d5cd48a907bae6d2142fc5867361b800dac1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9852 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 Ml2ezhm9_}|AFguM@Bjb+ diff --git a/src/zh/copymanga/res/mipmap-xxxhdpi/ic_launcher.png b/src/zh/copymanga/res/mipmap-xxxhdpi/ic_launcher.png deleted file mode 100644 index 387681a58f4f05beb80ac616cf578bb6bdf3414d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12719 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 bjRF~26TrV4aB(~}VgM9mRo<0Jn+E+4gF)?^ diff --git a/src/zh/copymanga/res/web_hi_res_512.png b/src/zh/copymanga/res/web_hi_res_512.png deleted file mode 100644 index f2d6b4ab5233c7c5b52f18cb52cd4179fb7d6fde..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43124 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 q;6K3Ex&OTe{_pkw().getSharedPreferences("source_$id", 0x0000) - - private var domain = DOMAINS[preferences.getString(DOMAIN_PREF, "0")!!.toInt().coerceIn(0, DOMAINS.size - 1)] - override val baseUrl = WWW_PREFIX + domain - private var apiUrl = API_PREFIX + domain // www. 也可以 - - override val client: OkHttpClient = network.client.newBuilder() - .addInterceptor(NonblockingRateLimitInterceptor(2, 4)) // 2 requests per 4 seconds - .build() - - private fun Headers.Builder.setUserAgent(userAgent: String) = set("User-Agent", userAgent) - private fun Headers.Builder.setRegion(useOverseasCdn: Boolean) = set("region", if (useOverseasCdn) "0" else "1") - private fun Headers.Builder.setReferer() = set("Referer", WWW_PREFIX + domain) - private fun Headers.Builder.setVersion(version: String) = set("version", version) - - override fun headersBuilder() = Headers.Builder() - .setUserAgent(preferences.getString(USER_AGENT_PREF, DEFAULT_USER_AGENT)!!) - .setRegion(preferences.getBoolean(OVERSEAS_CDN_PREF, false)) - .setReferer() - .add("platform", "1") - .setVersion(preferences.getString(VERSION_PREF, DEFAULT_VERSION)!!) - - private var apiHeaders = headersBuilder().build() - - private var useWebp = preferences.getBoolean(WEBP_PREF, true) - - init { - MangaDto.convertToSc = preferences.getBoolean(SC_TITLE_PREF, false) - } - - override fun popularMangaRequest(page: Int): Request { - val offset = PAGE_SIZE * (page - 1) - return GET("$apiUrl/api/v3/recs?pos=3200102&limit=$PAGE_SIZE&offset=$offset", apiHeaders) - } - - override fun popularMangaParse(response: Response): MangasPage { - val page: ListDto = response.parseAs() - val hasNextPage = page.offset + page.limit < page.total - return MangasPage(page.list.map { it.toSManga() }, hasNextPage) - } - - override fun latestUpdatesRequest(page: Int): Request { - val offset = PAGE_SIZE * (page - 1) - return GET("$apiUrl/api/v3/update/newest?limit=$PAGE_SIZE&offset=$offset", apiHeaders) - } - - override fun latestUpdatesParse(response: Response) = popularMangaParse(response) - - override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { - val offset = PAGE_SIZE * (page - 1) - val builder = apiUrl.toHttpUrl().newBuilder() - .addQueryParameter("limit", "$PAGE_SIZE") - .addQueryParameter("offset", "$offset") - if (query.isNotBlank()) { - builder.addPathSegments("api/v3/search/comic") - .addQueryParameter("q", query) - filters.filterIsInstance().firstOrNull()?.addQuery(builder) - } else { - builder.addPathSegments("api/v3/comics") - filters.filterIsInstance().forEach { - if (it !is SearchFilter) it.addQuery(builder) - } - } - return Request.Builder().url(builder.build()).headers(apiHeaders).build() - } - - override fun searchMangaParse(response: Response): MangasPage { - val page: ListDto = response.parseAs() - val hasNextPage = page.offset + page.limit < page.total - return MangasPage(page.list.map { it.toSManga() }, hasNextPage) - } - - // 让 WebView 打开网页而不是 API - override fun mangaDetailsRequest(manga: SManga) = GET(WWW_PREFIX + domain + manga.url, apiHeaders) - - private fun realMangaDetailsRequest(manga: SManga) = - GET("$apiUrl/api/v3/comic2/${manga.url.removePrefix(MangaDto.URL_PREFIX)}", apiHeaders) - - override fun fetchMangaDetails(manga: SManga): Observable = - client.newCall(realMangaDetailsRequest(manga)).asObservableSuccess().map { mangaDetailsParse(it) } - - override fun mangaDetailsParse(response: Response): SManga = - response.parseAs().toSMangaDetails() - - override fun fetchChapterList(manga: SManga): Observable> = Single.create> { - val result = ArrayList() - val groups = manga.description?.parseChapterGroups() ?: run { - val response = client.newCall(realMangaDetailsRequest(manga)).execute() - response.parseAs().groups!!.values - } - val mangaSlug = manga.url.removePrefix(MangaDto.URL_PREFIX) - result.fetchChapterGroup(mangaSlug, "default", "") - for (group in groups) { - result.fetchChapterGroup(mangaSlug, group.path_word, group.name) - } - it.onSuccess(result) - }.toObservable() - - private fun ArrayList.fetchChapterGroup(manga: String, key: String, name: String) { - val result = ArrayList(0) - var offset = 0 - var hasNextPage = true - while (hasNextPage) { - val response = client.newCall(GET("$apiUrl/api/v3/comic/$manga/group/$key/chapters?limit=$CHAPTER_PAGE_SIZE&offset=$offset", apiHeaders)).execute() - val chapters: ListDto = response.parseAs() - result.ensureCapacity(chapters.total) - chapters.list.mapTo(result) { it.toSChapter(name) } - offset += CHAPTER_PAGE_SIZE - hasNextPage = offset < chapters.total - } - addAll(result.asReversed()) - } - - override fun chapterListRequest(manga: SManga) = throw UnsupportedOperationException("Not used.") - override fun chapterListParse(response: Response) = throw UnsupportedOperationException("Not used.") - - // 新版 API 中间是 /chapter2/ 并且返回值需要排序 - override fun pageListRequest(chapter: SChapter) = GET("$apiUrl/api/v3${chapter.url}", apiHeaders) - - override fun pageListParse(response: Response): List { - val result: ChapterPageListWrapperDto = response.parseAs() - if (result.show_app) { - throw Exception("访问受限,请尝试在插件设置中修改 User Agent") - } - return result.chapter.contents.mapIndexed { i, it -> - Page(i, imageUrl = it.url) - } - } - - override fun imageUrlParse(response: Response) = throw UnsupportedOperationException("Not used.") - - override fun imageRequest(page: Page): Request { - val imageUrl = page.imageUrl!! - return if (useWebp && imageUrl.endsWith(".jpg")) { - GET(imageUrl.removeSuffix(".jpg") + ".webp") - } else { - GET(imageUrl) - } - } - - private inline fun Response.parseAs(): T = use { - if (header("Content-Type") != "application/json") { - throw Exception("访问受限,请尝试在插件设置中修改 User Agent") - } else if (code != 200) { - throw Exception(json.decodeFromStream(body!!.byteStream()).message) - } - json.decodeFromStream>(body!!.byteStream()).results - } - - private var genres: Array = emptyArray() - private var isFetchingGenres = false - - override fun getFilterList(): FilterList { - val genreFilter = if (genres.isEmpty()) { - fetchGenres() - Filter.Header("点击“重置”尝试刷新题材分类") - } else { - GenreFilter(genres) - } - return FilterList( - SearchFilter(), - Filter.Separator(), - Filter.Header("分类(搜索文本时无效)"), - genreFilter, - RegionFilter(), - StatusFilter(), - SortFilter(), - ) - } - - private fun fetchGenres() { - if (genres.isNotEmpty() || isFetchingGenres) return - isFetchingGenres = true - thread { - try { - val response = client.newCall(GET("$apiUrl/api/v3/theme/comic/count?limit=500", apiHeaders)).execute() - val list = response.parseAs>().list - val result = ArrayList(list.size + 1).apply { add(Param("全部", "")) } - genres = list.mapTo(result) { it.toParam() }.toTypedArray() - } catch (e: Exception) { - Log.e("CopyManga", "failed to fetch genres", e) - } finally { - isFetchingGenres = false - } - } - } - - var fetchVersionState = 0 // 0 = not yet or failed, 1 = fetching, 2 = fetched - - override fun setupPreferenceScreen(screen: PreferenceScreen) { - ListPreference(screen.context).apply { - key = DOMAIN_PREF - title = "网址域名" - summary = "连接不稳定时可以尝试切换" - entries = DOMAINS - entryValues = DOMAIN_INDICES - setDefaultValue("0") - setOnPreferenceChangeListener { _, newValue -> - domain = DOMAINS[(newValue as String).toInt()] - apiUrl = API_PREFIX + domain - apiHeaders = apiHeaders.newBuilder().setReferer().build() - true - } - }.let { screen.addPreference(it) } - - EditTextPreference(screen.context).apply { - key = USER_AGENT_PREF - title = "User Agent (UA)" - summary = "可以使用 Windows/macOS/iOS 上浏览器的 UA,不要使用安卓浏览器和 Windows Chrome 103(“在 WebView 中打开”需要重启应用刷新)" - setDefaultValue(DEFAULT_USER_AGENT) - setOnPreferenceChangeListener { _, newValue -> - apiHeaders = apiHeaders.newBuilder().setUserAgent(newValue as String).build() - true - } - }.let { screen.addPreference(it) } - - EditTextPreference(screen.context).apply { - key = UA_CHECKER - title = "获取浏览器 UA 的链接" - summary = "点击后可以在弹出的对话框中复制链接" - setDefaultValue(UA_CHECKER) - setOnPreferenceChangeListener { _, _ -> false } - }.let { screen.addPreference(it) } - - SwitchPreferenceCompat(screen.context).apply { - title = "更新网页版本号" - summary = "点击尝试更新网页版本号,当前为:${preferences.getString(VERSION_PREF, DEFAULT_VERSION)}" - setOnPreferenceChangeListener { _, _ -> - if (fetchVersionState == 1) { - Toast.makeText(screen.context, "已经在尝试更新,请勿反复点击", Toast.LENGTH_SHORT).show() - return@setOnPreferenceChangeListener false - } else if (fetchVersionState == 2) { - Toast.makeText(screen.context, "版本号已经成功更新,返回重进刷新", Toast.LENGTH_SHORT).show() - return@setOnPreferenceChangeListener false - } - Toast.makeText(screen.context, "开始尝试更新网页版本号", Toast.LENGTH_SHORT).show() - fetchVersionState = 1 - thread { - try { - val headers = apiHeaders.newBuilder().setUserAgent(System.getProperty("http.agent")!!).build() - val html = client.newCall(GET("https://www.copymanga.org/h5", headers)).execute().body!!.string() - val jsRegex = Regex("""https\S+?index\.\w+?\.js""") - val jsUrl = jsRegex.find(html)!!.value - val js = client.newCall(GET(jsUrl, headers)).execute().body!!.string() - val versionRegex = Regex("""VERSION:"([\d.]+?)"""", RegexOption.IGNORE_CASE) - val version = versionRegex.find(js)!!.groupValues[1] - preferences.edit().putString(VERSION_PREF, version).apply() - apiHeaders = apiHeaders.newBuilder().setVersion(version).build() - fetchVersionState = 2 - } catch (e: Throwable) { - fetchVersionState = 0 - Log.e("CopyManga", "failed to fetch version", e) - } - } - false - } - }.let { screen.addPreference(it) } - - SwitchPreferenceCompat(screen.context).apply { - key = OVERSEAS_CDN_PREF - title = "使用“港台及海外线路”" - summary = "连接不稳定时可以尝试切换,关闭时使用“大陆用户线路”,已阅读章节需要清空缓存才能生效" - setDefaultValue(false) - setOnPreferenceChangeListener { _, newValue -> - apiHeaders = apiHeaders.newBuilder().setRegion(newValue as Boolean).build() - true - } - }.let { screen.addPreference(it) } - - SwitchPreferenceCompat(screen.context).apply { - key = WEBP_PREF - title = "使用 WebP 图片格式" - summary = "默认开启,可以节省网站流量" - setDefaultValue(true) - setOnPreferenceChangeListener { _, newValue -> - useWebp = newValue as Boolean - true - } - }.let { screen.addPreference(it) } - - SwitchPreferenceCompat(screen.context).apply { - key = SC_TITLE_PREF - title = "将作品标题转换为简体中文" - summary = "修改后,已添加漫画需要迁移才能更新标题" - setDefaultValue(false) - setOnPreferenceChangeListener { _, newValue -> - MangaDto.convertToSc = newValue as Boolean - true - } - }.let { screen.addPreference(it) } - } - - companion object { - private const val DOMAIN_PREF = "domain" - private const val OVERSEAS_CDN_PREF = "changeCDN" - private const val SC_TITLE_PREF = "showSCTitle" - private const val WEBP_PREF = "webp" - private const val USER_AGENT_PREF = "userAgent" - private const val VERSION_PREF = "version" - // private const val CHROME_VERSION_PREF = "chromeVersion" // default value was "103" - - private const val WWW_PREFIX = "https://www." - private const val API_PREFIX = "https://api." - private val DOMAINS = arrayOf("copymanga.org", "copymanga.info", "copymanga.net") - private val DOMAIN_INDICES = arrayOf("0", "1", "2") - private const val DEFAULT_USER_AGENT = "" - private const val DEFAULT_VERSION = "2022.06.29" - private const val UA_CHECKER = "https://tool.lu/useragent" - - private const val PAGE_SIZE = 20 - private const val CHAPTER_PAGE_SIZE = 500 - } -} diff --git a/src/zh/copymanga/src/eu/kanade/tachiyomi/extension/zh/copymanga/CopyMangaDto.kt b/src/zh/copymanga/src/eu/kanade/tachiyomi/extension/zh/copymanga/CopyMangaDto.kt deleted file mode 100644 index d99bd80c3..000000000 --- a/src/zh/copymanga/src/eu/kanade/tachiyomi/extension/zh/copymanga/CopyMangaDto.kt +++ /dev/null @@ -1,131 +0,0 @@ -package eu.kanade.tachiyomi.extension.zh.copymanga - -import com.luhuiguo.chinese.ChineseUtils -import eu.kanade.tachiyomi.source.model.SChapter -import eu.kanade.tachiyomi.source.model.SManga -import kotlinx.serialization.Serializable -import java.text.SimpleDateFormat -import java.util.Locale - -@Serializable -class MangaDto( - val name: String, - val path_word: String, - val author: List, - val cover: String, - val region: ValueDto? = null, - val status: ValueDto? = null, - val theme: List? = null, - val brief: String? = null, -) { - fun toSManga() = SManga.create().apply { - url = URL_PREFIX + path_word - title = if (convertToSc) ChineseUtils.toSimplified(name) else name - author = this@MangaDto.author.joinToString { it.name } - thumbnail_url = cover.removeSuffix(".328x422.jpg") - } - - fun toSMangaDetails(groups: ChapterGroups) = toSManga().apply { - description = brief + groups.toDescription() - genre = buildList(theme!!.size + 1) { - add(region!!.display) - theme.mapTo(this) { it.name } - }.joinToString { ChineseUtils.toSimplified(it) } - status = when (this@MangaDto.status!!.value) { - 0 -> SManga.ONGOING - 1 -> SManga.COMPLETED - else -> SManga.UNKNOWN - } - initialized = true - } - - companion object { - internal var convertToSc = false - - const val URL_PREFIX = "/comic/" - - private const val CHAPTER_GROUP_DELIMITER = "," - private const val CHAPTER_GROUP_PREFIX = "\n\n【其他版本:" - private const val CHAPTER_GROUP_POSTFIX = "】" - private const val NO_CHAPTER_GROUP = "无" - - private fun ChapterGroups.toDescription(): String { - if (size <= 1) return CHAPTER_GROUP_PREFIX + NO_CHAPTER_GROUP + CHAPTER_GROUP_POSTFIX - val groups = ArrayList(size - 1) - for ((key, group) in this) { - if (key != "default") groups.add(group) - } - return groups.joinToString(CHAPTER_GROUP_DELIMITER, CHAPTER_GROUP_PREFIX, CHAPTER_GROUP_POSTFIX) { - it.name + '#' + it.path_word - } - } - - fun String.parseChapterGroups(): List? { - val index = lastIndexOf(CHAPTER_GROUP_PREFIX) - if (index < 0) return null - val groups = substring(index + CHAPTER_GROUP_PREFIX.length, length - CHAPTER_GROUP_POSTFIX.length) - if (groups == NO_CHAPTER_GROUP) return emptyList() - return groups.split(CHAPTER_GROUP_DELIMITER).map { - val delimiterIndex = it.indexOf('#') - KeywordDto(it.substring(0, delimiterIndex), it.substring(delimiterIndex + 1, it.length)) - } - } - } -} - -@Serializable -class ChapterDto( - val uuid: String, - val name: String, - val comic_path_word: String, - val datetime_created: String, -) { - fun toSChapter(group: String) = SChapter.create().apply { - url = "/comic/$comic_path_word/chapter/$uuid" - name = if (group.isEmpty()) this@ChapterDto.name else group + ':' + this@ChapterDto.name - date_upload = dateFormat.parse(datetime_created)?.time ?: 0 - } - - companion object { - val dateFormat by lazy { SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH) } - } -} - -@Serializable -class KeywordDto(val name: String, val path_word: String) { - fun toParam() = Param(ChineseUtils.toSimplified(name), path_word) -} - -@Serializable -class ValueDto(val value: Int, val display: String) - -@Serializable -class MangaWrapperDto(val comic: MangaDto, val groups: ChapterGroups? = null) { - fun toSManga() = comic.toSManga() - fun toSMangaDetails() = comic.toSMangaDetails(groups!!) -} - -typealias ChapterGroups = LinkedHashMap - -@Serializable -class ChapterPageListDto(val contents: List) - -@Serializable -class UrlDto(val url: String) - -@Serializable -class ChapterPageListWrapperDto(val chapter: ChapterPageListDto, val show_app: Boolean) - -@Serializable -class ListDto( - val total: Int, - val limit: Int, - val offset: Int, - val list: List, -) - -@Serializable -class ResultDto(val results: T) - -@Serializable -class ResultMessageDto(val code: Int, val message: String) diff --git a/src/zh/copymanga/src/eu/kanade/tachiyomi/extension/zh/copymanga/CopyMangaFilters.kt b/src/zh/copymanga/src/eu/kanade/tachiyomi/extension/zh/copymanga/CopyMangaFilters.kt deleted file mode 100644 index 74ef8726c..000000000 --- a/src/zh/copymanga/src/eu/kanade/tachiyomi/extension/zh/copymanga/CopyMangaFilters.kt +++ /dev/null @@ -1,53 +0,0 @@ -package eu.kanade.tachiyomi.extension.zh.copymanga - -import eu.kanade.tachiyomi.source.model.Filter -import okhttp3.HttpUrl - -class Param(val name: String, val value: String) - -open class CopyMangaFilter(name: String, private val key: String, private val params: Array) : - Filter.Select(name, params.map { it.name }.toTypedArray()) { - fun addQuery(builder: HttpUrl.Builder) { - val param = params[state].value - if (param.isNotEmpty()) - builder.addQueryParameter(key, param) - } -} - -class SearchFilter : CopyMangaFilter("文本搜索范围", "q_type", SEARCH_FILTER_VALUES) - -private val SEARCH_FILTER_VALUES = arrayOf( - Param("全部", ""), - Param("名称", "name"), - Param("作者", "author"), - Param("汉化组", "local"), -) - -class GenreFilter(genres: Array) : CopyMangaFilter("题材", "theme", genres) - -class RegionFilter : CopyMangaFilter("地区", "region", REGION_VALUES) - -private val REGION_VALUES = arrayOf( - Param("全部", ""), - Param("日本", "0"), - Param("韩国", "1"), - Param("欧美", "2"), -) - -class StatusFilter : CopyMangaFilter("状态", "status", STATUS_VALUES) - -private val STATUS_VALUES = arrayOf( - Param("全部", ""), - Param("连载中", "0"), - Param("已完结", "1"), - Param("短篇", "2"), -) - -class SortFilter : CopyMangaFilter("排序", "ordering", SORT_VALUES) - -private val SORT_VALUES = arrayOf( - Param("热门", "-popular"), - Param("热门(逆序)", "popular"), - Param("更新时间", "-datetime_updated"), - Param("更新时间(逆序)", "datetime_updated"), -) diff --git a/src/zh/copymanga/src/eu/kanade/tachiyomi/extension/zh/copymanga/NonblockingRateLimitInterceptor.kt b/src/zh/copymanga/src/eu/kanade/tachiyomi/extension/zh/copymanga/NonblockingRateLimitInterceptor.kt deleted file mode 100644 index ccdf8dd92..000000000 --- a/src/zh/copymanga/src/eu/kanade/tachiyomi/extension/zh/copymanga/NonblockingRateLimitInterceptor.kt +++ /dev/null @@ -1,58 +0,0 @@ -package eu.kanade.tachiyomi.extension.zh.copymanga - -import android.os.SystemClock -import okhttp3.Interceptor -import okhttp3.Response -import java.io.IOException -import java.util.concurrent.TimeUnit - -// See https://github.com/tachiyomiorg/tachiyomi/pull/7389 -internal class NonblockingRateLimitInterceptor( - private val permits: Int, - period: Long = 1, - unit: TimeUnit = TimeUnit.SECONDS, -) : Interceptor { - - private val requestQueue = ArrayList(permits) - private val rateLimitMillis = unit.toMillis(period) - - override fun intercept(chain: Interceptor.Chain): Response { - // Ignore canceled calls, otherwise they would jam the queue - if (chain.call().isCanceled()) { - throw IOException() - } - - synchronized(requestQueue) { - val now = SystemClock.elapsedRealtime() - val waitTime = if (requestQueue.size < permits) { - 0 - } else { - val oldestReq = requestQueue[0] - val newestReq = requestQueue[permits - 1] - - if (newestReq - oldestReq > rateLimitMillis) { - 0 - } else { - oldestReq + rateLimitMillis - now // Remaining time - } - } - - // Final check - if (chain.call().isCanceled()) { - throw IOException() - } - - if (requestQueue.size == permits) { - requestQueue.removeAt(0) - } - if (waitTime > 0) { - requestQueue.add(now + waitTime) - Thread.sleep(waitTime) // Sleep inside synchronized to pause queued requests - } else { - requestQueue.add(now) - } - } - - return chain.proceed(chain.request()) - } -}