Add Collected Curios to Tachiyomi extensions. (#17671)
* Add Collected Curios to Tachiyomi extensions. Still to do: * Add additional pages like Spider and Scorpion, Portfolio, etc. * More refactoring. * * Redone Icon in Android Asset Studio. * Update src/en/collectedcurios/AndroidManifest.xml Fixed AndroidManifest as in draft. Co-authored-by: arkon <arkon@users.noreply.github.com> * Update src/en/collectedcurios/build.gradle extVersionCode 1 is enough. Co-authored-by: arkon <arkon@users.noreply.github.com> * Update Collectedcurios.kt Addressed Arkons suggestions. Further refactoring needed. * Update src/en/collectedcurios/build.gradle * Shorten source to just itself. Co-authored-by: Alessandro Jean <14254807+alessandrojean@users.noreply.github.com> * Apply suggestions from code review Accept all suggestions by alessandrojean. * Exchange blank "date" for "Chapter". * Remove date_upload as not needed. * Restructure when condition in imageUrlParse. Co-authored-by: Alessandro Jean <14254807+alessandrojean@users.noreply.github.com> --------- Co-authored-by: arkon <arkon@users.noreply.github.com> Co-authored-by: Alessandro Jean <14254807+alessandrojean@users.noreply.github.com>
This commit is contained in:
parent
9fcc8867d3
commit
1a959f6ab4
|
@ -0,0 +1,2 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest />
|
|
@ -0,0 +1,12 @@
|
|||
apply plugin: 'com.android.application'
|
||||
apply plugin: 'kotlin-android'
|
||||
apply plugin: 'kotlinx-serialization'
|
||||
|
||||
ext {
|
||||
extName = 'Collected Curios'
|
||||
pkgNameSuffix = 'en.collectedcurios'
|
||||
extClass = '.Collectedcurios'
|
||||
extVersionCode = 1
|
||||
}
|
||||
|
||||
apply from: "$rootDir/common.gradle"
|
Binary file not shown.
After Width: | Height: | Size: 2.5 KiB |
Binary file not shown.
After Width: | Height: | Size: 1.5 KiB |
Binary file not shown.
After Width: | Height: | Size: 3.3 KiB |
Binary file not shown.
After Width: | Height: | Size: 5.8 KiB |
Binary file not shown.
After Width: | Height: | Size: 8.2 KiB |
Binary file not shown.
After Width: | Height: | Size: 27 KiB |
|
@ -0,0 +1,153 @@
|
|||
package eu.kanade.tachiyomi.extension.en.collectedcurios
|
||||
|
||||
import android.util.Log
|
||||
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.ParsedHttpSource
|
||||
import eu.kanade.tachiyomi.util.asJsoup
|
||||
import okhttp3.Request
|
||||
import okhttp3.Response
|
||||
import org.jsoup.nodes.Document
|
||||
import org.jsoup.nodes.Element
|
||||
import rx.Observable
|
||||
|
||||
class Collectedcurios : ParsedHttpSource() {
|
||||
|
||||
override val name = "Collected Curios"
|
||||
|
||||
override val baseUrl = "https://www.collectedcurios.com"
|
||||
|
||||
override val lang = "en"
|
||||
|
||||
override val supportsLatest = false
|
||||
|
||||
override fun fetchPopularManga(page: Int): Observable<MangasPage> {
|
||||
return Observable.just(
|
||||
MangasPage(
|
||||
arrayListOf(
|
||||
SManga.create().apply {
|
||||
title = "Sequential Art"
|
||||
artist = "Jolly Jack aka Phillip M Jackson"
|
||||
author = "Jolly Jack aka Phillip M Jackson"
|
||||
status = SManga.ONGOING
|
||||
url = "/sequentialart.php"
|
||||
description = "Sequential Art webcomic."
|
||||
thumbnail_url = "https://www.collectedcurios.com/images/CC_2011_Sequential_Art_Button.jpg"
|
||||
},
|
||||
|
||||
SManga.create().apply {
|
||||
title = "Battle Bunnies"
|
||||
artist = "Jolly Jack aka Phillip M Jackson"
|
||||
author = "Jolly Jack aka Phillip M Jackson"
|
||||
status = SManga.ONGOING
|
||||
url = "/battlebunnies.php"
|
||||
description = "Battle Bunnies webcomic."
|
||||
thumbnail_url = "https://www.collectedcurios.com/images/CC_2011_Battle_Bunnies_Button.jpg"
|
||||
},
|
||||
|
||||
/*
|
||||
SManga.create().apply {
|
||||
title = "Spider and Scorpion"
|
||||
artist = "Jolly Jack aka Phillip M Jackson"
|
||||
author = "Jolly Jack aka Phillip M Jackson"
|
||||
status = SManga.ONGOING
|
||||
url = "/spiderandscorpion.php"
|
||||
description = "Spider and Scorpion webcomic."
|
||||
thumbnail_url = "https://www.collectedcurios.com/images/CC_2011_Spider_And_Scorpion_Button.jpg"
|
||||
},
|
||||
*/
|
||||
),
|
||||
false,
|
||||
),
|
||||
)
|
||||
}
|
||||
|
||||
override fun fetchSearchManga(page: Int, query: String, filters: FilterList): Observable<MangasPage> {
|
||||
return fetchPopularManga(1)
|
||||
}
|
||||
|
||||
override fun fetchMangaDetails(manga: SManga): Observable<SManga> {
|
||||
return Observable.just(manga)
|
||||
}
|
||||
|
||||
override fun chapterListParse(response: Response): List<SChapter> {
|
||||
val responseJs = response.asJsoup()
|
||||
|
||||
val chapters =
|
||||
if (responseJs.selectFirst("img[title=Last]") == null) {
|
||||
responseJs.selectFirst("input[title=Jump to number]")
|
||||
?.attr("value")?.toInt()
|
||||
} else {
|
||||
responseJs.selectFirst("img[title=Last]")?.parent()
|
||||
?.attr("href")?.substringAfter("=")?.toInt()
|
||||
}
|
||||
|
||||
var chapterList = mutableListOf<SChapter>()
|
||||
|
||||
for (i in chapters?.downTo(1)!!) {
|
||||
chapterList.add(
|
||||
SChapter.create().apply {
|
||||
url = "${response.request.url}?s=$i"
|
||||
name = "Chapter - $i"
|
||||
chapter_number = i.toFloat()
|
||||
date_upload = 0L
|
||||
},
|
||||
)
|
||||
}
|
||||
return chapterList
|
||||
}
|
||||
|
||||
override fun chapterListSelector() = throw Exception("Not used")
|
||||
|
||||
override fun chapterFromElement(element: Element) = SChapter.create().apply {
|
||||
name = element.selectFirst(".w3-round")?.attr("value") ?: "Chapter"
|
||||
}
|
||||
|
||||
override fun pageListParse(document: Document): List<Page> = throw Exception("Not used")
|
||||
|
||||
override fun fetchPageList(chapter: SChapter) = Observable.just(listOf(Page(0, chapter.url)))!!
|
||||
|
||||
override fun imageUrlParse(response: Response): String {
|
||||
val url = response.request.url.toString()
|
||||
val document = response.asJsoup()
|
||||
|
||||
return when {
|
||||
url.contains("sequentialart") ->
|
||||
document.selectFirst(".w3-image")!!.absUrl("src")
|
||||
url.contains("battlebunnies") || url.contains("spiderandscorpion") ->
|
||||
document.selectFirst("#strip")!!.absUrl("src")
|
||||
else -> throw Exception("Could not find the image")
|
||||
}
|
||||
}
|
||||
|
||||
override fun imageUrlParse(document: Document) = throw Exception("Not used")
|
||||
|
||||
override fun popularMangaSelector(): String = throw Exception("Not used")
|
||||
|
||||
override fun searchMangaFromElement(element: Element): SManga = throw Exception("Not used")
|
||||
|
||||
override fun searchMangaNextPageSelector(): String? = throw Exception("Not used")
|
||||
|
||||
override fun searchMangaSelector(): String = throw Exception("Not used")
|
||||
|
||||
override fun popularMangaRequest(page: Int): Request = throw Exception("Not used")
|
||||
|
||||
override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request = throw Exception("Not used")
|
||||
|
||||
override fun popularMangaNextPageSelector(): String? = throw Exception("Not used")
|
||||
|
||||
override fun popularMangaFromElement(element: Element): SManga = throw Exception("Not used")
|
||||
|
||||
override fun mangaDetailsParse(document: Document): SManga = throw Exception("Not used")
|
||||
|
||||
override fun latestUpdatesNextPageSelector(): String? = throw Exception("Not used")
|
||||
|
||||
override fun latestUpdatesFromElement(element: Element): SManga = throw Exception("Not used")
|
||||
|
||||
override fun latestUpdatesRequest(page: Int): Request = throw Exception("Not used")
|
||||
|
||||
override fun latestUpdatesSelector(): String = throw Exception("Not used")
|
||||
}
|
Loading…
Reference in New Issue