parent
4285114a03
commit
806227b5bb
|
@ -5,13 +5,14 @@ ext {
|
||||||
appName = 'Tachiyomi: Tapas'
|
appName = 'Tachiyomi: Tapas'
|
||||||
pkgNameSuffix = 'en.tapastic'
|
pkgNameSuffix = 'en.tapastic'
|
||||||
extClass = '.Tapastic'
|
extClass = '.Tapastic'
|
||||||
extVersionCode = 7
|
extVersionCode = 8
|
||||||
libVersion = '1.2'
|
libVersion = '1.2'
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
compileOnly 'com.google.code.gson:gson:2.8.2'
|
compileOnly 'com.google.code.gson:gson:2.8.2'
|
||||||
compileOnly 'com.github.salomonbrys.kotson:kotson:2.5.0'
|
compileOnly 'com.github.salomonbrys.kotson:kotson:2.5.0'
|
||||||
|
compileOnly 'com.github.inorichi.injekt:injekt-core:65b0440'
|
||||||
}
|
}
|
||||||
|
|
||||||
apply from: "$rootDir/common.gradle"
|
apply from: "$rootDir/common.gradle"
|
||||||
|
|
|
@ -1,7 +1,12 @@
|
||||||
package eu.kanade.tachiyomi.extension.en.tapastic
|
package eu.kanade.tachiyomi.extension.en.tapastic
|
||||||
|
|
||||||
|
import android.app.Application
|
||||||
|
import android.content.SharedPreferences
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
|
import android.support.v7.preference.ListPreference
|
||||||
|
import android.support.v7.preference.PreferenceScreen
|
||||||
import eu.kanade.tachiyomi.network.GET
|
import eu.kanade.tachiyomi.network.GET
|
||||||
|
import eu.kanade.tachiyomi.source.ConfigurableSource
|
||||||
import eu.kanade.tachiyomi.source.model.Filter
|
import eu.kanade.tachiyomi.source.model.Filter
|
||||||
import eu.kanade.tachiyomi.source.model.FilterList
|
import eu.kanade.tachiyomi.source.model.FilterList
|
||||||
import eu.kanade.tachiyomi.source.model.Page
|
import eu.kanade.tachiyomi.source.model.Page
|
||||||
|
@ -15,14 +20,68 @@ import okhttp3.Request
|
||||||
import okhttp3.Response
|
import okhttp3.Response
|
||||||
import org.jsoup.nodes.Document
|
import org.jsoup.nodes.Document
|
||||||
import org.jsoup.nodes.Element
|
import org.jsoup.nodes.Element
|
||||||
|
import uy.kohesive.injekt.Injekt
|
||||||
|
import uy.kohesive.injekt.api.get
|
||||||
|
|
||||||
class Tapastic : ParsedHttpSource() {
|
class Tapastic : ConfigurableSource, ParsedHttpSource() {
|
||||||
|
|
||||||
|
// Preferences Code
|
||||||
|
|
||||||
|
private val preferences: SharedPreferences by lazy {
|
||||||
|
Injekt.get<Application>().getSharedPreferences("source_$id", 0x0000)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun setupPreferenceScreen(screen: androidx.preference.PreferenceScreen) {
|
||||||
|
val chapterListPref = androidx.preference.ListPreference(screen.context).apply {
|
||||||
|
key = SHOW_LOCKED_CHAPTERS_Title
|
||||||
|
title = SHOW_LOCKED_CHAPTERS_Title
|
||||||
|
entries = prefsEntries
|
||||||
|
entryValues = prefsEntryValues
|
||||||
|
summary = "%s"
|
||||||
|
|
||||||
|
setOnPreferenceChangeListener { _, newValue ->
|
||||||
|
val selected = newValue as String
|
||||||
|
val index = this.findIndexOfValue(selected)
|
||||||
|
val entry = entryValues.get(index) as String
|
||||||
|
preferences.edit().putString(SHOW_LOCKED_CHAPTERS, entry).commit()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
screen.addPreference(chapterListPref)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun setupPreferenceScreen(screen: PreferenceScreen) {
|
||||||
|
val chapterListPref = ListPreference(screen.context).apply {
|
||||||
|
key = SHOW_LOCKED_CHAPTERS_Title
|
||||||
|
title = SHOW_LOCKED_CHAPTERS_Title
|
||||||
|
entries = prefsEntries
|
||||||
|
entryValues = prefsEntryValues
|
||||||
|
summary = "%s"
|
||||||
|
|
||||||
|
setOnPreferenceChangeListener { _, newValue ->
|
||||||
|
val selected = newValue as String
|
||||||
|
val index = this.findIndexOfValue(selected)
|
||||||
|
val entry = entryValues.get(index) as String
|
||||||
|
preferences.edit().putString(SHOW_LOCKED_CHAPTERS, entry).commit()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
screen.addPreference(chapterListPref)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun chapterListPref() = preferences.getString(SHOW_LOCKED_CHAPTERS, "free")
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
private const val SHOW_LOCKED_CHAPTERS_Title = "Show or don't show future/locked chapters"
|
||||||
|
private const val SHOW_LOCKED_CHAPTERS = "tapas_locked_chapters"
|
||||||
|
private val prefsEntries = arrayOf("Show All", "Show free/currently available")
|
||||||
|
private val prefsEntryValues = arrayOf("all", "free")
|
||||||
|
}
|
||||||
|
|
||||||
// Info
|
// Info
|
||||||
override val lang = "en"
|
override val lang = "en"
|
||||||
override val supportsLatest = true
|
override val supportsLatest = true
|
||||||
override val name = "Tapastic"
|
override val name = "Tapas" // originally Tapastic
|
||||||
override val baseUrl = "https://tapas.io"
|
override val baseUrl = "https://tapas.io"
|
||||||
|
override val id = 3825434541981130345
|
||||||
|
|
||||||
// Popular
|
// Popular
|
||||||
|
|
||||||
|
@ -76,12 +135,7 @@ class Tapastic : ParsedHttpSource() {
|
||||||
override fun searchMangaSelector() = "${popularMangaSelector()}, .search-item-wrap"
|
override fun searchMangaSelector() = "${popularMangaSelector()}, .search-item-wrap"
|
||||||
override fun searchMangaFromElement(element: Element): SManga = SManga.create().apply {
|
override fun searchMangaFromElement(element: Element): SManga = SManga.create().apply {
|
||||||
url = element.select(".item__thumb a, .title-section .title a").attr("href")
|
url = element.select(".item__thumb a, .title-section .title a").attr("href")
|
||||||
val browseTitle = element.select(".item__thumb img")
|
title = element.select(".item__thumb img").firstOrNull()?.attr("alt") ?: element.select(".title-section .title a").text()
|
||||||
title = if (browseTitle != null) {
|
|
||||||
browseTitle.attr("alt")
|
|
||||||
} else {
|
|
||||||
element.select(".title-section .title a").text()
|
|
||||||
}
|
|
||||||
thumbnail_url = element.select(".item__thumb img, .thumb-wrap img").attr("src")
|
thumbnail_url = element.select(".item__thumb img, .thumb-wrap img").attr("src")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -117,7 +171,8 @@ class Tapastic : ParsedHttpSource() {
|
||||||
return chapters
|
return chapters
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun chapterListSelector() = "li.content__item"
|
// filter future releases based on user's configuration
|
||||||
|
override fun chapterListSelector() = "li.content__item" + if (chapterListPref() == "free") ":not(:has(.info__tag):contains(release date))" else ""
|
||||||
override fun chapterFromElement(element: Element): SChapter = SChapter.create().apply {
|
override fun chapterFromElement(element: Element): SChapter = SChapter.create().apply {
|
||||||
val lock = !element.select(".sp-ico-episode-lock, .sp-ico-schedule-white").isNullOrEmpty()
|
val lock = !element.select(".sp-ico-episode-lock, .sp-ico-schedule-white").isNullOrEmpty()
|
||||||
name = if (lock) {
|
name = if (lock) {
|
||||||
|
|
Loading…
Reference in New Issue