Dynasty fixes (#219)
* add icon fix search add licensed check * fix search urls not being correct for each variation of dynasty * added oneshots switched to factory * changed to plural
This commit is contained in:
parent
45d86d4cd7
commit
8320d2b8a6
|
@ -4,9 +4,9 @@ apply plugin: 'kotlin-android'
|
||||||
ext {
|
ext {
|
||||||
appName = 'Tachiyomi: Dynasty'
|
appName = 'Tachiyomi: Dynasty'
|
||||||
pkgNameSuffix = "en.dynasty"
|
pkgNameSuffix = "en.dynasty"
|
||||||
extClass = '.DynastyAnthologies; .DynastyIssues; .DynastySeries; .DynastyDoujins'
|
extClass = '.DynastyFactory'
|
||||||
extVersionCode = 2
|
extVersionCode = 3
|
||||||
extVersionSuffix = 2
|
extVersionSuffix = 3
|
||||||
libVersion = '1.2'
|
libVersion = '1.2'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 3.4 KiB |
Binary file not shown.
After Width: | Height: | Size: 1.8 KiB |
Binary file not shown.
After Width: | Height: | Size: 5.0 KiB |
Binary file not shown.
After Width: | Height: | Size: 8.6 KiB |
Binary file not shown.
After Width: | Height: | Size: 16 KiB |
Binary file not shown.
After Width: | Height: | Size: 72 KiB |
|
@ -13,7 +13,7 @@ class DynastyAnthologies : DynastyScans() {
|
||||||
override fun popularMangaInitialUrl() = "$baseUrl/anthologies?view=cover"
|
override fun popularMangaInitialUrl() = "$baseUrl/anthologies?view=cover"
|
||||||
|
|
||||||
override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
|
override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
|
||||||
return GET("$baseUrl/search?q=$query&classes[]=Series&sort=", headers)
|
return GET("$baseUrl/search?q=$query&classes%5B%5D=Anthology&sort=", headers)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun mangaDetailsParse(document: Document): SManga {
|
override fun mangaDetailsParse(document: Document): SManga {
|
||||||
|
|
|
@ -13,7 +13,7 @@ class DynastyDoujins : DynastyScans() {
|
||||||
override fun popularMangaInitialUrl() = "$baseUrl/doujins?view=cover"
|
override fun popularMangaInitialUrl() = "$baseUrl/doujins?view=cover"
|
||||||
|
|
||||||
override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
|
override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
|
||||||
return GET("$baseUrl/search?q=$query&classes[]=Series&sort=", headers)
|
return GET("$baseUrl/search?q=$query&classes%5B%5D=Doujin&sort=", headers)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun mangaDetailsParse(document: Document): SManga {
|
override fun mangaDetailsParse(document: Document): SManga {
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
package eu.kanade.tachiyomi.extension.en.dynasty
|
||||||
|
|
||||||
|
import eu.kanade.tachiyomi.source.Source
|
||||||
|
import eu.kanade.tachiyomi.source.SourceFactory
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by Carlos on 2/8/2018.
|
||||||
|
*/
|
||||||
|
class DynastyFactory : SourceFactory {
|
||||||
|
override fun createSources(): List<Source> = getAllDynasty()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getAllDynasty() =
|
||||||
|
listOf(
|
||||||
|
DynastyAnthologies(),
|
||||||
|
DynastyOneshots(),
|
||||||
|
DynastyDoujins(),
|
||||||
|
DynastyIssues(),
|
||||||
|
DynastySeries())
|
|
@ -13,7 +13,7 @@ class DynastyIssues : DynastyScans() {
|
||||||
override fun popularMangaInitialUrl() = "$baseUrl/issues?view=cover"
|
override fun popularMangaInitialUrl() = "$baseUrl/issues?view=cover"
|
||||||
|
|
||||||
override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
|
override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
|
||||||
return GET("$baseUrl/search?q=$query&classes[]=Series&sort=", headers)
|
return GET("$baseUrl/search?q=$query&classes%5B%5D=Issue&sort=", headers)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun mangaDetailsParse(document: Document): SManga {
|
override fun mangaDetailsParse(document: Document): SManga {
|
||||||
|
|
|
@ -0,0 +1,75 @@
|
||||||
|
package eu.kanade.tachiyomi.extension.en.dynasty
|
||||||
|
|
||||||
|
import eu.kanade.tachiyomi.network.GET
|
||||||
|
import eu.kanade.tachiyomi.source.model.FilterList
|
||||||
|
import eu.kanade.tachiyomi.source.model.SChapter
|
||||||
|
import eu.kanade.tachiyomi.source.model.SManga
|
||||||
|
import eu.kanade.tachiyomi.util.asJsoup
|
||||||
|
import okhttp3.Request
|
||||||
|
import okhttp3.Response
|
||||||
|
import org.jsoup.nodes.Document
|
||||||
|
import org.jsoup.nodes.Element
|
||||||
|
import java.text.SimpleDateFormat
|
||||||
|
import java.util.*
|
||||||
|
|
||||||
|
class DynastyOneshots : DynastyScans() {
|
||||||
|
|
||||||
|
override val name = "Dynasty- Oneshots"
|
||||||
|
|
||||||
|
override fun popularMangaInitialUrl() = "$baseUrl/search?q=&with%5B%5D=5102&sort="
|
||||||
|
|
||||||
|
override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
|
||||||
|
return GET("$baseUrl/search?q=$query&with%5B%5D=5102&sort=", headers)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun mangaDetailsParse(document: Document): SManga = SManga.create()
|
||||||
|
|
||||||
|
override fun searchMangaSelector() = "dd"
|
||||||
|
|
||||||
|
override fun searchMangaFromElement(element: Element): SManga {
|
||||||
|
val manga = SManga.create()
|
||||||
|
val titleSelect = element.select("a.name")
|
||||||
|
manga.setUrlWithoutDomain(titleSelect.attr("href"))
|
||||||
|
manga.title = titleSelect.text()
|
||||||
|
val artistAuthorElements = element.select("a")
|
||||||
|
if (!artistAuthorElements.isEmpty()) {
|
||||||
|
if (artistAuthorElements.lastIndex == 1) {
|
||||||
|
manga.author = artistAuthorElements[1].text()
|
||||||
|
} else {
|
||||||
|
manga.artist = artistAuthorElements[1].text()
|
||||||
|
manga.author = artistAuthorElements[2].text()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
val genreElements = element.select("a.label")
|
||||||
|
parseGenres(genreElements, manga)
|
||||||
|
return manga
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun chapterListParse(response: Response): List<SChapter> {
|
||||||
|
val document = response.asJsoup()
|
||||||
|
|
||||||
|
return document.select(chapterListSelector()).map {
|
||||||
|
chapterFromElement(it)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun chapterListSelector() = ".chapters.show#main"
|
||||||
|
|
||||||
|
override fun chapterFromElement(element: Element): SChapter {
|
||||||
|
val chapter = SChapter.create()
|
||||||
|
chapter.setUrlWithoutDomain(element.baseUri())
|
||||||
|
chapter.name = element.select("h3").text()
|
||||||
|
chapter.date_upload = element.select("span.released")?.first().let {
|
||||||
|
SimpleDateFormat("MMM dd, yy", Locale.ENGLISH).parse(it!!.text()).time
|
||||||
|
}
|
||||||
|
return chapter
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun popularMangaSelector() = searchMangaSelector()
|
||||||
|
|
||||||
|
override fun popularMangaFromElement(element: Element) = searchMangaFromElement(element)
|
||||||
|
|
||||||
|
override fun popularMangaParse(response: Response) = searchMangaParse(response)
|
||||||
|
|
||||||
|
}
|
|
@ -15,6 +15,7 @@ import org.jsoup.nodes.Document
|
||||||
import org.jsoup.nodes.Element
|
import org.jsoup.nodes.Element
|
||||||
import org.jsoup.nodes.Node
|
import org.jsoup.nodes.Node
|
||||||
import org.jsoup.nodes.TextNode
|
import org.jsoup.nodes.TextNode
|
||||||
|
import org.jsoup.select.Elements
|
||||||
import java.text.SimpleDateFormat
|
import java.text.SimpleDateFormat
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
|
@ -92,15 +93,17 @@ abstract class DynastyScans : ParsedHttpSource() {
|
||||||
when {
|
when {
|
||||||
it.contains("Ongoing") -> SManga.ONGOING
|
it.contains("Ongoing") -> SManga.ONGOING
|
||||||
it.contains("Completed") -> SManga.COMPLETED
|
it.contains("Completed") -> SManga.COMPLETED
|
||||||
|
it.contains("Licensed") -> SManga.LICENSED
|
||||||
else -> SManga.UNKNOWN
|
else -> SManga.UNKNOWN
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
protected fun parseGenres(document: Document, manga: SManga) {
|
protected fun parseGenres(document: Document, manga: SManga, select: String = "div.tags > div.tag-tags") {
|
||||||
manga.genre = ""
|
manga.genre = ""
|
||||||
val glist = document.select("div.tags > div.tag-tags").first().getElementsByTag("a")
|
val glist = document.select(select).first().getElementsByTag("a")
|
||||||
|
parseGenres(glist, manga)
|
||||||
if (!glist.isEmpty()) {
|
if (!glist.isEmpty()) {
|
||||||
for (g in glist) {
|
for (g in glist) {
|
||||||
val s = g.text()
|
val s = g.text()
|
||||||
|
@ -109,6 +112,15 @@ abstract class DynastyScans : ParsedHttpSource() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected fun parseGenres(elements: Elements, manga: SManga) {
|
||||||
|
if (!elements.isEmpty()) {
|
||||||
|
var genres = mutableListOf<String>()
|
||||||
|
elements?.forEach { genres.add(it.text()) }
|
||||||
|
manga.genre = genres.joinToString(", ")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
protected fun parseDescription(document: Document, manga: SManga) {
|
protected fun parseDescription(document: Document, manga: SManga) {
|
||||||
manga.description = document.select("div.tags > div.row div.description").text()
|
manga.description = document.select("div.tags > div.row div.description").text()
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,7 @@ class DynastySeries : DynastyScans() {
|
||||||
override fun popularMangaInitialUrl() = "$baseUrl/series?view=cover"
|
override fun popularMangaInitialUrl() = "$baseUrl/series?view=cover"
|
||||||
|
|
||||||
override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
|
override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
|
||||||
return GET("$baseUrl/search?q=$query&classes[]=Series&sort=", headers)
|
return GET("$baseUrl/search?q=$query&classes%5B%5D=Series&sort=", headers)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun mangaDetailsParse(document: Document): SManga {
|
override fun mangaDetailsParse(document: Document): SManga {
|
||||||
|
|
Loading…
Reference in New Issue