Split Bilibili and make it multisrc. (#11815)
17
.run/BilibiliGenerator.run.xml
Normal file
@ -0,0 +1,17 @@
|
||||
<component name="ProjectRunConfigurationManager">
|
||||
<configuration default="false" name="BilibiliGenerator" type="JetRunConfigurationType" nameIsGenerated="true">
|
||||
<module name="tachiyomi-extensions.multisrc" />
|
||||
<option name="VM_PARAMETERS" value="" />
|
||||
<option name="PROGRAM_PARAMETERS" value="" />
|
||||
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
|
||||
<option name="ALTERNATIVE_JRE_PATH" />
|
||||
<option name="PASS_PARENT_ENVS" value="true" />
|
||||
<option name="MAIN_CLASS_NAME" value="eu.kanade.tachiyomi.multisrc.bilibili.BilibiliGenerator" />
|
||||
<option name="WORKING_DIRECTORY" value="" />
|
||||
<method v="2">
|
||||
<option name="Make" enabled="true" />
|
||||
<option name="Gradle.BeforeRunTask" enabled="true" tasks="ktFormat" externalProjectPath="$PROJECT_DIR$/multisrc" vmOptions="" scriptParameters="" />
|
||||
<option name="Gradle.BeforeRunTask" enabled="true" tasks="ktLint" externalProjectPath="$PROJECT_DIR$/multisrc" vmOptions="" scriptParameters="" />
|
||||
</method>
|
||||
</configuration>
|
||||
</component>
|
@ -4,7 +4,7 @@
|
||||
|
||||
<application>
|
||||
<activity
|
||||
android:name=".all.bilibili.BilibiliUrlActivity"
|
||||
android:name="eu.kanade.tachiyomi.multisrc.bilibili.BilibiliUrlActivity"
|
||||
android:excludeFromRecents="true"
|
||||
android:exported="true"
|
||||
android:theme="@android:style/Theme.NoDisplay">
|
||||
@ -33,17 +33,7 @@
|
||||
android:host="m.bilibilicomics.com"
|
||||
android:pathPattern="/detail/mc..*"
|
||||
android:scheme="https" />
|
||||
|
||||
<data
|
||||
android:host="manga.bilibili.com"
|
||||
android:pathPattern="/detail/mc..*"
|
||||
android:scheme="https" />
|
||||
|
||||
<data
|
||||
android:host="manga.bilibili.com"
|
||||
android:pathPattern="/m/detail/mc..*"
|
||||
android:scheme="https" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
</application>
|
||||
</manifest>
|
||||
</manifest>
|
@ -1,6 +1,17 @@
|
||||
package eu.kanade.tachiyomi.extension.all.bilibili
|
||||
package eu.kanade.tachiyomi.extension.all.bilibilicomics
|
||||
|
||||
import eu.kanade.tachiyomi.lib.ratelimit.SpecificHostRateLimitInterceptor
|
||||
import eu.kanade.tachiyomi.multisrc.bilibili.Bilibili
|
||||
import eu.kanade.tachiyomi.multisrc.bilibili.BilibiliAccessToken
|
||||
import eu.kanade.tachiyomi.multisrc.bilibili.BilibiliAccessTokenCookie
|
||||
import eu.kanade.tachiyomi.multisrc.bilibili.BilibiliComicDto
|
||||
import eu.kanade.tachiyomi.multisrc.bilibili.BilibiliCredential
|
||||
import eu.kanade.tachiyomi.multisrc.bilibili.BilibiliGetCredential
|
||||
import eu.kanade.tachiyomi.multisrc.bilibili.BilibiliTag
|
||||
import eu.kanade.tachiyomi.multisrc.bilibili.BilibiliUnlockedEpisode
|
||||
import eu.kanade.tachiyomi.multisrc.bilibili.BilibiliUserEpisodes
|
||||
import eu.kanade.tachiyomi.network.POST
|
||||
import eu.kanade.tachiyomi.source.SourceFactory
|
||||
import eu.kanade.tachiyomi.source.model.Page
|
||||
import eu.kanade.tachiyomi.source.model.SChapter
|
||||
import kotlinx.serialization.decodeFromString
|
||||
@ -17,13 +28,26 @@ import okio.Buffer
|
||||
import java.io.IOException
|
||||
import java.net.URLDecoder
|
||||
|
||||
class BilibiliComicsFactory : SourceFactory {
|
||||
override fun createSources() = listOf(
|
||||
BilibiliComicsEn(),
|
||||
BilibiliComicsCn(),
|
||||
BilibiliComicsId(),
|
||||
)
|
||||
}
|
||||
|
||||
abstract class BilibiliComics(lang: String) : Bilibili(
|
||||
"BILIBILI COMICS",
|
||||
"https://www.bilibilicomics.com",
|
||||
lang
|
||||
) {
|
||||
|
||||
override val client: OkHttpClient = super.client.newBuilder()
|
||||
.addInterceptor(::signedInIntercept)
|
||||
.addInterceptor(::expiredTokenIntercept)
|
||||
.addInterceptor(SpecificHostRateLimitInterceptor(baseUrl.toHttpUrl(), 1))
|
||||
.addInterceptor(SpecificHostRateLimitInterceptor(CDN_URL.toHttpUrl(), 2))
|
||||
.addInterceptor(SpecificHostRateLimitInterceptor(COVER_CDN_URL.toHttpUrl(), 2))
|
||||
.build()
|
||||
|
||||
override val signedIn: Boolean
|
||||
@ -246,3 +270,74 @@ abstract class BilibiliComics(lang: String) : Bilibili(
|
||||
"Failed to get the credential to read the chapter."
|
||||
}
|
||||
}
|
||||
|
||||
class BilibiliComicsEn : BilibiliComics("en") {
|
||||
|
||||
override fun getAllGenres(): Array<BilibiliTag> = arrayOf(
|
||||
BilibiliTag("All", -1),
|
||||
BilibiliTag("Action", 19),
|
||||
BilibiliTag("Adventure", 22),
|
||||
BilibiliTag("BL", 3),
|
||||
BilibiliTag("Comedy", 14),
|
||||
BilibiliTag("Eastern", 30),
|
||||
BilibiliTag("Fantasy", 11),
|
||||
BilibiliTag("GL", 16),
|
||||
BilibiliTag("Harem", 15),
|
||||
BilibiliTag("Historical", 12),
|
||||
BilibiliTag("Horror", 23),
|
||||
BilibiliTag("Mistery", 17),
|
||||
BilibiliTag("Romance", 13),
|
||||
BilibiliTag("Slice of Life", 21),
|
||||
BilibiliTag("Suspense", 41),
|
||||
BilibiliTag("Teen", 20)
|
||||
)
|
||||
}
|
||||
|
||||
class BilibiliComicsCn : BilibiliComics("zh-Hans") {
|
||||
|
||||
override fun getAllSortOptions(): Array<String> = arrayOf("为你推荐", "人气推荐", "更新时间")
|
||||
|
||||
override fun getAllStatus(): Array<String> = arrayOf("全部", "连载中", "已完结")
|
||||
|
||||
override fun getAllPrices(): Array<String> = arrayOf("全部", "免费", "付费")
|
||||
|
||||
override fun getAllGenres(): Array<BilibiliTag> = arrayOf(
|
||||
BilibiliTag("全部", -1),
|
||||
BilibiliTag("校园", 18),
|
||||
BilibiliTag("都市", 9),
|
||||
BilibiliTag("耽美", 3),
|
||||
BilibiliTag("少女", 20),
|
||||
BilibiliTag("恋爱", 13),
|
||||
BilibiliTag("奇幻", 11),
|
||||
BilibiliTag("热血", 19),
|
||||
BilibiliTag("冒险", 22),
|
||||
BilibiliTag("古风", 12),
|
||||
BilibiliTag("百合", 16),
|
||||
BilibiliTag("玄幻", 30),
|
||||
BilibiliTag("悬疑", 41),
|
||||
BilibiliTag("科幻", 8)
|
||||
)
|
||||
}
|
||||
|
||||
class BilibiliComicsId : BilibiliComics("id") {
|
||||
|
||||
override fun getAllSortOptions(): Array<String> = arrayOf("Kamu Mungkin Suka", "Populer", "Terbaru")
|
||||
|
||||
override fun getAllStatus(): Array<String> = arrayOf("Semua", "Berlangsung", "Tamat")
|
||||
|
||||
override fun getAllPrices(): Array<String> = arrayOf("Semua", "Bebas", "Dibayar")
|
||||
|
||||
override fun getAllGenres(): Array<BilibiliTag> = arrayOf(
|
||||
BilibiliTag("Semua", -1),
|
||||
BilibiliTag("Aksi", 19),
|
||||
BilibiliTag("Fantasi Timur", 30),
|
||||
BilibiliTag("Fantasi", 11),
|
||||
BilibiliTag("Historis", 12),
|
||||
BilibiliTag("Horror", 23),
|
||||
BilibiliTag("Kampus", 18),
|
||||
BilibiliTag("Komedi", 14),
|
||||
BilibiliTag("Menegangkan", 41),
|
||||
BilibiliTag("Remaja", 20),
|
||||
BilibiliTag("Romantis", 13)
|
||||
)
|
||||
}
|
@ -0,0 +1,29 @@
|
||||
<?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.bilibili.BilibiliUrlActivity"
|
||||
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="manga.bilibili.com"
|
||||
android:pathPattern="/detail/mc..*"
|
||||
android:scheme="https" />
|
||||
|
||||
<data
|
||||
android:host="manga.bilibili.com"
|
||||
android:pathPattern="/m/detail/mc..*"
|
||||
android:scheme="https" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
</application>
|
||||
</manifest>
|
@ -0,0 +1,64 @@
|
||||
package eu.kanade.tachiyomi.extension.zh.bilibilimanga
|
||||
|
||||
import eu.kanade.tachiyomi.lib.ratelimit.SpecificHostRateLimitInterceptor
|
||||
import eu.kanade.tachiyomi.multisrc.bilibili.Bilibili
|
||||
import eu.kanade.tachiyomi.multisrc.bilibili.BilibiliTag
|
||||
import okhttp3.HttpUrl.Companion.toHttpUrl
|
||||
import okhttp3.OkHttpClient
|
||||
|
||||
class BilibiliManga : Bilibili(
|
||||
"哔哩哔哩漫画",
|
||||
"https://manga.bilibili.com",
|
||||
"zh-Hans"
|
||||
) {
|
||||
|
||||
override val id: Long = 3561131545129718586
|
||||
|
||||
override val client: OkHttpClient = super.client.newBuilder()
|
||||
.addInterceptor(::expiredTokenIntercept)
|
||||
.addInterceptor(SpecificHostRateLimitInterceptor(baseUrl.toHttpUrl(), 1))
|
||||
.addInterceptor(SpecificHostRateLimitInterceptor(CDN_URL.toHttpUrl(), 2))
|
||||
.addInterceptor(SpecificHostRateLimitInterceptor(COVER_CDN_URL.toHttpUrl(), 2))
|
||||
.build()
|
||||
|
||||
override val defaultPopularSort: Int = 0
|
||||
|
||||
override val defaultLatestSort: Int = 1
|
||||
|
||||
override fun getAllStatus(): Array<String> = arrayOf("全部", "连载", "完结")
|
||||
|
||||
override fun getAllSortOptions(): Array<String> = arrayOf("人气推荐", "更新时间", "追漫人数", "上架时间")
|
||||
|
||||
override fun getAllPrices(): Array<String> = arrayOf("全部", "免费", "付费", "等就免费")
|
||||
|
||||
override fun getAllGenres(): Array<BilibiliTag> = arrayOf(
|
||||
BilibiliTag("全部", -1),
|
||||
BilibiliTag("竞技", 1034),
|
||||
BilibiliTag("冒险", 1013),
|
||||
BilibiliTag("热血", 999),
|
||||
BilibiliTag("搞笑", 994),
|
||||
BilibiliTag("恋爱", 995),
|
||||
BilibiliTag("少女", 1026),
|
||||
BilibiliTag("日常", 1020),
|
||||
BilibiliTag("校园", 1001),
|
||||
BilibiliTag("治愈", 1007),
|
||||
BilibiliTag("古风", 997),
|
||||
BilibiliTag("玄幻", 1016),
|
||||
BilibiliTag("奇幻", 998),
|
||||
BilibiliTag("惊奇", 996),
|
||||
BilibiliTag("悬疑", 1023),
|
||||
BilibiliTag("都市", 1002),
|
||||
BilibiliTag("剧情", 1030),
|
||||
BilibiliTag("总裁", 1004),
|
||||
BilibiliTag("科幻", 1015),
|
||||
BilibiliTag("正能量", 1028),
|
||||
)
|
||||
|
||||
override fun getAllAreas(): Array<BilibiliTag> = arrayOf(
|
||||
BilibiliTag("全部", -1),
|
||||
BilibiliTag("大陆", 1),
|
||||
BilibiliTag("日本", 2),
|
||||
BilibiliTag("韩国", 6),
|
||||
BilibiliTag("其他", 5),
|
||||
)
|
||||
}
|
23
multisrc/overrides/bilibili/default/AndroidManifest.xml
Normal file
@ -0,0 +1,23 @@
|
||||
<?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.bilibili.BilibiliUrlActivity"
|
||||
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="/detail/mc..*"
|
||||
android:scheme="${SOURCESCHEME}" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
</application>
|
||||
</manifest>
|
@ -0,0 +1,4 @@
|
||||
|
||||
dependencies {
|
||||
implementation project(':lib-ratelimit')
|
||||
}
|
Before Width: | Height: | Size: 8.0 KiB After Width: | Height: | Size: 8.0 KiB |
Before Width: | Height: | Size: 4.0 KiB After Width: | Height: | Size: 4.0 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 35 KiB |
Before Width: | Height: | Size: 235 KiB After Width: | Height: | Size: 235 KiB |
@ -1,10 +1,9 @@
|
||||
package eu.kanade.tachiyomi.extension.all.bilibili
|
||||
package eu.kanade.tachiyomi.multisrc.bilibili
|
||||
|
||||
import android.app.Application
|
||||
import android.content.SharedPreferences
|
||||
import androidx.preference.ListPreference
|
||||
import androidx.preference.PreferenceScreen
|
||||
import eu.kanade.tachiyomi.lib.ratelimit.SpecificHostRateLimitInterceptor
|
||||
import eu.kanade.tachiyomi.network.POST
|
||||
import eu.kanade.tachiyomi.network.asObservableSuccess
|
||||
import eu.kanade.tachiyomi.source.ConfigurableSource
|
||||
@ -44,12 +43,7 @@ abstract class Bilibili(
|
||||
|
||||
override val supportsLatest = true
|
||||
|
||||
override val client: OkHttpClient = network.cloudflareClient.newBuilder()
|
||||
.addInterceptor(::expiredTokenIntercept)
|
||||
.addInterceptor(SpecificHostRateLimitInterceptor(baseUrl.toHttpUrl(), 1))
|
||||
.addInterceptor(SpecificHostRateLimitInterceptor(CDN_URL.toHttpUrl(), 2))
|
||||
.addInterceptor(SpecificHostRateLimitInterceptor(COVER_CDN_URL.toHttpUrl(), 2))
|
||||
.build()
|
||||
override val client: OkHttpClient = network.cloudflareClient
|
||||
|
||||
override fun headersBuilder(): Headers.Builder = Headers.Builder()
|
||||
.add("Accept", ACCEPT_JSON)
|
||||
@ -516,7 +510,7 @@ abstract class Bilibili(
|
||||
return FilterList(filters)
|
||||
}
|
||||
|
||||
private fun expiredTokenIntercept(chain: Interceptor.Chain): Response {
|
||||
protected fun expiredTokenIntercept(chain: Interceptor.Chain): Response {
|
||||
val response = chain.proceed(chain.request())
|
||||
|
||||
// Get a new image token if the current one expired.
|
||||
@ -562,8 +556,8 @@ abstract class Bilibili(
|
||||
}
|
||||
|
||||
companion object {
|
||||
private const val CDN_URL = "https://manga.hdslb.com"
|
||||
private const val COVER_CDN_URL = "https://i0.hdslb.com"
|
||||
const val CDN_URL = "https://manga.hdslb.com"
|
||||
const val COVER_CDN_URL = "https://i0.hdslb.com"
|
||||
|
||||
const val BASE_API_COMIC_ENDPOINT = "twirp/comic.v1.Comic"
|
||||
const val BASE_API_USER_ENDPOINT = "twirp/comic.v1.User"
|
@ -1,4 +1,4 @@
|
||||
package eu.kanade.tachiyomi.extension.all.bilibili
|
||||
package eu.kanade.tachiyomi.multisrc.bilibili
|
||||
|
||||
import kotlinx.serialization.SerialName
|
||||
import kotlinx.serialization.Serializable
|
@ -1,4 +1,4 @@
|
||||
package eu.kanade.tachiyomi.extension.all.bilibili
|
||||
package eu.kanade.tachiyomi.multisrc.bilibili
|
||||
|
||||
import eu.kanade.tachiyomi.source.model.Filter
|
||||
|
@ -0,0 +1,26 @@
|
||||
package eu.kanade.tachiyomi.multisrc.bilibili
|
||||
|
||||
import generator.ThemeSourceData.MultiLang
|
||||
import generator.ThemeSourceData.SingleLang
|
||||
import generator.ThemeSourceGenerator
|
||||
|
||||
class BilibiliGenerator : ThemeSourceGenerator {
|
||||
|
||||
override val themePkg = "bilibili"
|
||||
|
||||
override val themeClass = "Bilibili"
|
||||
|
||||
override val baseVersionCode: Int = 1
|
||||
|
||||
override val sources = listOf(
|
||||
MultiLang("BILIBILI COMICS", "https://www.bilibilicomics.com", listOf("en", "zh-Hans", "id"), className = "BilibiliComicsFactory"),
|
||||
SingleLang("BILIBILI MANGA", "https://manga.bilibili.com", "zh-Hans", className = "BilibiliManga")
|
||||
)
|
||||
|
||||
companion object {
|
||||
@JvmStatic
|
||||
fun main(args: Array<String>) {
|
||||
BilibiliGenerator().createAll()
|
||||
}
|
||||
}
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package eu.kanade.tachiyomi.extension.all.bilibili
|
||||
package eu.kanade.tachiyomi.multisrc.bilibili
|
||||
|
||||
import android.app.Activity
|
||||
import android.content.ActivityNotFoundException
|
@ -5,7 +5,7 @@ Table of Content
|
||||
- [Why are some chapters missing?](#why-are-some-chapters-missing)
|
||||
- [Guides](#Guides)
|
||||
- [Reading already paid chapters](#reading-already-paid-chapters)
|
||||
|
||||
|
||||
Don't find the question you are looking for? Go check out our general FAQs and Guides
|
||||
over at [Extension FAQ] or [Getting Started].
|
||||
|
||||
@ -36,8 +36,8 @@ Follow the following steps to be able to sign in and get access to them:
|
||||
#### Observations
|
||||
|
||||
- Sign in with your Google account is not supported due to WebView restrictions
|
||||
access that Google have. You need to have a simple account in order to be able
|
||||
to login via WebView.
|
||||
access that Google have. **You need to have a simple account in order to be able
|
||||
to login via WebView**.
|
||||
- You may sometime face the *"Failed to refresh the token"* error. To fix it,
|
||||
you just need to open the WebView, await for the website to completely load.
|
||||
After that, you can close the WebView and try again.
|
@ -1,16 +0,0 @@
|
||||
apply plugin: 'com.android.application'
|
||||
apply plugin: 'kotlin-android'
|
||||
apply plugin: 'kotlinx-serialization'
|
||||
|
||||
ext {
|
||||
extName = 'BILIBILI'
|
||||
pkgNameSuffix = 'all.bilibili'
|
||||
extClass = '.BilibiliFactory'
|
||||
extVersionCode = 7
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation project(':lib-ratelimit')
|
||||
}
|
||||
|
||||
apply from: "$rootDir/common.gradle"
|
@ -1,134 +0,0 @@
|
||||
package eu.kanade.tachiyomi.extension.all.bilibili
|
||||
|
||||
import eu.kanade.tachiyomi.source.Source
|
||||
import eu.kanade.tachiyomi.source.SourceFactory
|
||||
|
||||
class BilibiliFactory : SourceFactory {
|
||||
override fun createSources(): List<Source> = listOf(
|
||||
BilibiliComicsEn(),
|
||||
BilibiliComicsCn(),
|
||||
BilibiliComicsId(),
|
||||
BilibiliManga()
|
||||
)
|
||||
}
|
||||
|
||||
class BilibiliComicsEn : BilibiliComics("en") {
|
||||
|
||||
override fun getAllGenres(): Array<BilibiliTag> = arrayOf(
|
||||
BilibiliTag("All", -1),
|
||||
BilibiliTag("Action", 19),
|
||||
BilibiliTag("Adventure", 22),
|
||||
BilibiliTag("BL", 3),
|
||||
BilibiliTag("Comedy", 14),
|
||||
BilibiliTag("Eastern", 30),
|
||||
BilibiliTag("Fantasy", 11),
|
||||
BilibiliTag("GL", 16),
|
||||
BilibiliTag("Harem", 15),
|
||||
BilibiliTag("Historical", 12),
|
||||
BilibiliTag("Horror", 23),
|
||||
BilibiliTag("Mistery", 17),
|
||||
BilibiliTag("Romance", 13),
|
||||
BilibiliTag("Slice of Life", 21),
|
||||
BilibiliTag("Suspense", 41),
|
||||
BilibiliTag("Teen", 20)
|
||||
)
|
||||
}
|
||||
|
||||
class BilibiliComicsCn : BilibiliComics("zh-Hans") {
|
||||
|
||||
override fun getAllSortOptions(): Array<String> = arrayOf("为你推荐", "人气推荐", "更新时间")
|
||||
|
||||
override fun getAllStatus(): Array<String> = arrayOf("全部", "连载中", "已完结")
|
||||
|
||||
override fun getAllPrices(): Array<String> = arrayOf("全部", "免费", "付费")
|
||||
|
||||
override fun getAllGenres(): Array<BilibiliTag> = arrayOf(
|
||||
BilibiliTag("全部", -1),
|
||||
BilibiliTag("校园", 18),
|
||||
BilibiliTag("都市", 9),
|
||||
BilibiliTag("耽美", 3),
|
||||
BilibiliTag("少女", 20),
|
||||
BilibiliTag("恋爱", 13),
|
||||
BilibiliTag("奇幻", 11),
|
||||
BilibiliTag("热血", 19),
|
||||
BilibiliTag("冒险", 22),
|
||||
BilibiliTag("古风", 12),
|
||||
BilibiliTag("百合", 16),
|
||||
BilibiliTag("玄幻", 30),
|
||||
BilibiliTag("悬疑", 41),
|
||||
BilibiliTag("科幻", 8)
|
||||
)
|
||||
}
|
||||
|
||||
class BilibiliComicsId : BilibiliComics("id") {
|
||||
|
||||
override fun getAllSortOptions(): Array<String> = arrayOf("Kamu Mungkin Suka", "Populer", "Terbaru")
|
||||
|
||||
override fun getAllStatus(): Array<String> = arrayOf("Semua", "Berlangsung", "Tamat")
|
||||
|
||||
override fun getAllPrices(): Array<String> = arrayOf("Semua", "Bebas", "Dibayar")
|
||||
|
||||
override fun getAllGenres(): Array<BilibiliTag> = arrayOf(
|
||||
BilibiliTag("Semua", -1),
|
||||
BilibiliTag("Aksi", 19),
|
||||
BilibiliTag("Fantasi Timur", 30),
|
||||
BilibiliTag("Fantasi", 11),
|
||||
BilibiliTag("Historis", 12),
|
||||
BilibiliTag("Horror", 23),
|
||||
BilibiliTag("Kampus", 18),
|
||||
BilibiliTag("Komedi", 14),
|
||||
BilibiliTag("Menegangkan", 41),
|
||||
BilibiliTag("Remaja", 20),
|
||||
BilibiliTag("Romantis", 13)
|
||||
)
|
||||
}
|
||||
|
||||
class BilibiliManga : Bilibili(
|
||||
"哔哩哔哩漫画",
|
||||
"https://manga.bilibili.com",
|
||||
"zh-Hans"
|
||||
) {
|
||||
|
||||
override val id: Long = 3561131545129718586
|
||||
|
||||
override val defaultPopularSort: Int = 0
|
||||
|
||||
override val defaultLatestSort: Int = 1
|
||||
|
||||
override fun getAllStatus(): Array<String> = arrayOf("全部", "连载", "完结")
|
||||
|
||||
override fun getAllSortOptions(): Array<String> = arrayOf("人气推荐", "更新时间", "追漫人数", "上架时间")
|
||||
|
||||
override fun getAllPrices(): Array<String> = arrayOf("全部", "免费", "付费", "等就免费")
|
||||
|
||||
override fun getAllGenres(): Array<BilibiliTag> = arrayOf(
|
||||
BilibiliTag("全部", -1),
|
||||
BilibiliTag("竞技", 1034),
|
||||
BilibiliTag("冒险", 1013),
|
||||
BilibiliTag("热血", 999),
|
||||
BilibiliTag("搞笑", 994),
|
||||
BilibiliTag("恋爱", 995),
|
||||
BilibiliTag("少女", 1026),
|
||||
BilibiliTag("日常", 1020),
|
||||
BilibiliTag("校园", 1001),
|
||||
BilibiliTag("治愈", 1007),
|
||||
BilibiliTag("古风", 997),
|
||||
BilibiliTag("玄幻", 1016),
|
||||
BilibiliTag("奇幻", 998),
|
||||
BilibiliTag("惊奇", 996),
|
||||
BilibiliTag("悬疑", 1023),
|
||||
BilibiliTag("都市", 1002),
|
||||
BilibiliTag("剧情", 1030),
|
||||
BilibiliTag("总裁", 1004),
|
||||
BilibiliTag("科幻", 1015),
|
||||
BilibiliTag("正能量", 1028),
|
||||
)
|
||||
|
||||
override fun getAllAreas(): Array<BilibiliTag> = arrayOf(
|
||||
BilibiliTag("全部", -1),
|
||||
BilibiliTag("大陆", 1),
|
||||
BilibiliTag("日本", 2),
|
||||
BilibiliTag("韩国", 6),
|
||||
BilibiliTag("其他", 5),
|
||||
)
|
||||
}
|