add komikita source (#12195)
* add komikita source * Update multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/zmanga/ZMangaGenerator.kt Co-authored-by: Alessandro Jean <14254807+alessandrojean@users.noreply.github.com> Co-authored-by: Alessandro Jean <14254807+alessandrojean@users.noreply.github.com>
This commit is contained in:
		
							parent
							
								
									3e74c11917
								
							
						
					
					
						commit
						947fe29781
					
				
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 5.4 KiB  | 
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 2.8 KiB  | 
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 8.0 KiB  | 
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 15 KiB  | 
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 23 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								multisrc/overrides/zmanga/komikita/res/web_hi_res_512.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								multisrc/overrides/zmanga/komikita/res/web_hi_res_512.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 140 KiB  | 
							
								
								
									
										159
									
								
								multisrc/overrides/zmanga/komikita/src/Komikita.kt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										159
									
								
								multisrc/overrides/zmanga/komikita/src/Komikita.kt
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,159 @@
 | 
			
		||||
package eu.kanade.tachiyomi.extension.id.komikita
 | 
			
		||||
 | 
			
		||||
import eu.kanade.tachiyomi.multisrc.zmanga.ZManga
 | 
			
		||||
import eu.kanade.tachiyomi.network.GET
 | 
			
		||||
import eu.kanade.tachiyomi.source.model.Filter
 | 
			
		||||
import eu.kanade.tachiyomi.source.model.FilterList
 | 
			
		||||
import eu.kanade.tachiyomi.source.model.SManga
 | 
			
		||||
import okhttp3.HttpUrl.Companion.toHttpUrlOrNull
 | 
			
		||||
import okhttp3.Request
 | 
			
		||||
import org.jsoup.nodes.Element
 | 
			
		||||
import java.text.SimpleDateFormat
 | 
			
		||||
import java.util.Locale
 | 
			
		||||
 | 
			
		||||
class Komikita : ZManga(
 | 
			
		||||
    "Komikita",
 | 
			
		||||
    "https://komikita.org",
 | 
			
		||||
    "id",
 | 
			
		||||
    SimpleDateFormat("MMM d, yyyy", Locale("id"))
 | 
			
		||||
) {
 | 
			
		||||
    override val hasProjectPage = true
 | 
			
		||||
 | 
			
		||||
    override fun popularMangaRequest(page: Int): Request {
 | 
			
		||||
        return GET("$baseUrl/${pagePathSegment(page)}/?s")
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    override fun latestUpdatesSelector() = "h2:contains(Latest) + .flexbox3 .flexbox3-item"
 | 
			
		||||
 | 
			
		||||
    override fun latestUpdatesRequest(page: Int): Request {
 | 
			
		||||
        return GET("$baseUrl/${pagePathSegment(page)}")
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    override fun latestUpdatesFromElement(element: Element): SManga {
 | 
			
		||||
        return SManga.create().apply {
 | 
			
		||||
            setUrlWithoutDomain(element.select("div.flexbox3-content a").attr("href"))
 | 
			
		||||
            title = element.select("div.flexbox3-content a").attr("title")
 | 
			
		||||
            thumbnail_url = element.select("img").attr("abs:src")
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
 | 
			
		||||
        var url = "$baseUrl/${pagePathSegment(page)}".toHttpUrlOrNull()!!.newBuilder()
 | 
			
		||||
        url.addQueryParameter("s", query)
 | 
			
		||||
        (if (filters.isEmpty()) getFilterList() else filters).forEach { filter ->
 | 
			
		||||
            when (filter) {
 | 
			
		||||
                is GenreList -> {
 | 
			
		||||
                    filter.state
 | 
			
		||||
                        .filter { it.state }
 | 
			
		||||
                        .forEach { url.addQueryParameter("genre[]", it.id) }
 | 
			
		||||
                }
 | 
			
		||||
                // if site has project page, default value "hasProjectPage" = false
 | 
			
		||||
                is ProjectFilter -> {
 | 
			
		||||
                    if (filter.toUriPart() == "project-filter-on") {
 | 
			
		||||
                        url =
 | 
			
		||||
                            "$baseUrl$projectPageString/page/$page".toHttpUrlOrNull()!!.newBuilder()
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        return GET(url.toString(), headers)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    override fun getFilterList(): FilterList {
 | 
			
		||||
        val filters = mutableListOf<Filter<*>>(
 | 
			
		||||
            Filter.Header("NOTE: cant be used with multiple genre!"),
 | 
			
		||||
            GenreList(getGenreList()),
 | 
			
		||||
        )
 | 
			
		||||
        if (hasProjectPage) {
 | 
			
		||||
            filters.addAll(
 | 
			
		||||
                mutableListOf<Filter<*>>(
 | 
			
		||||
                    Filter.Separator(),
 | 
			
		||||
                    Filter.Header("NOTE: cant be used with other filter!"),
 | 
			
		||||
                    Filter.Header("$name Project List page"),
 | 
			
		||||
                    ProjectFilter(),
 | 
			
		||||
                )
 | 
			
		||||
            )
 | 
			
		||||
        }
 | 
			
		||||
        return FilterList(filters)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private fun getGenreList() = listOf(
 | 
			
		||||
        Tag("4-koma", "4-Koma"),
 | 
			
		||||
        Tag("4-koma-comedy", "4-Koma Comedy"),
 | 
			
		||||
        Tag("action", "Action"),
 | 
			
		||||
        Tag("adult", "Adult"),
 | 
			
		||||
        Tag("adventure", "Adventure"),
 | 
			
		||||
        Tag("another-chance", "Another chance"),
 | 
			
		||||
        Tag("city", "City"),
 | 
			
		||||
        Tag("comedy", "Comedy"),
 | 
			
		||||
        Tag("completed", "Completed"),
 | 
			
		||||
        Tag("cooking", "Cooking"),
 | 
			
		||||
        Tag("demons", "Demons"),
 | 
			
		||||
        Tag("drama", "Drama"),
 | 
			
		||||
        Tag("ecchi", "Ecchi"),
 | 
			
		||||
        Tag("fantasy", "Fantasy"),
 | 
			
		||||
        Tag("full-color", "Full Color"),
 | 
			
		||||
        Tag("game", "Game"),
 | 
			
		||||
        Tag("gender-bender", "Gender bender"),
 | 
			
		||||
        Tag("gore", "Gore"),
 | 
			
		||||
        Tag("harem", "Harem"),
 | 
			
		||||
        Tag("historical", "Historical"),
 | 
			
		||||
        Tag("horror", "Horror"),
 | 
			
		||||
        Tag("isekai", "Isekai"),
 | 
			
		||||
        Tag("josei", "Josei"),
 | 
			
		||||
        Tag("kingdom", "Kingdom"),
 | 
			
		||||
        Tag("leveling", "Leveling"),
 | 
			
		||||
        Tag("loli", "Loli"),
 | 
			
		||||
        Tag("magic", "Magic"),
 | 
			
		||||
        Tag("manga", "Manga"),
 | 
			
		||||
        Tag("manhua", "Manhua"),
 | 
			
		||||
        Tag("manhwa", "Manhwa"),
 | 
			
		||||
        Tag("martial-arts", "Martial Arts"),
 | 
			
		||||
        Tag("mature", "Mature"),
 | 
			
		||||
        Tag("mecha", "Mecha"),
 | 
			
		||||
        Tag("medical", "Medical"),
 | 
			
		||||
        Tag("military", "Military"),
 | 
			
		||||
        Tag("monster", "Monster"),
 | 
			
		||||
        Tag("monsters", "Monsters"),
 | 
			
		||||
        Tag("monster-girls", "Monster Girls"),
 | 
			
		||||
        Tag("music", "Music"),
 | 
			
		||||
        Tag("mystery", "Mystery"),
 | 
			
		||||
        Tag("n-a", "N/A"),
 | 
			
		||||
        Tag("one-shot", "One Shot"),
 | 
			
		||||
        Tag("overpowered", "Overpowered"),
 | 
			
		||||
        Tag("parody", "Parody"),
 | 
			
		||||
        Tag("police", "Police"),
 | 
			
		||||
        Tag("post-apocalyptic", "Post Apocalyptic"),
 | 
			
		||||
        Tag("psychological", "Psychological"),
 | 
			
		||||
        Tag("reincarnation", "Reincarnation"),
 | 
			
		||||
        Tag("returned", "Returned"),
 | 
			
		||||
        Tag("returner", "Returner"),
 | 
			
		||||
        Tag("romance", "Romance"),
 | 
			
		||||
        Tag("school", "School"),
 | 
			
		||||
        Tag("school-life", "School Life"),
 | 
			
		||||
        Tag("sci-fi", "Sci-Fi"),
 | 
			
		||||
        Tag("socks", "Socks"),
 | 
			
		||||
        Tag("seinen", "Seinen"),
 | 
			
		||||
        Tag("shoujo", "Shoujo"),
 | 
			
		||||
        Tag("shoujo-ai", "Shoujo Ai"),
 | 
			
		||||
        Tag("shounen", "Shounen"),
 | 
			
		||||
        Tag("shounen-ai", "Shounen Ai"),
 | 
			
		||||
        Tag("slice-of-life", "Slice of Life"),
 | 
			
		||||
        Tag("smut", "Smut"),
 | 
			
		||||
        Tag("sports", "Sports"),
 | 
			
		||||
        Tag("super-power", "Super Power"),
 | 
			
		||||
        Tag("supernatural", "Supernatural"),
 | 
			
		||||
        Tag("survival", "Survival"),
 | 
			
		||||
        Tag("terror", "Terror"),
 | 
			
		||||
        Tag("thriller", "Thriller"),
 | 
			
		||||
        Tag("tragedy", "Tragedy"),
 | 
			
		||||
        Tag("vampire", "Vampire"),
 | 
			
		||||
        Tag("webtoons", "Webtoons"),
 | 
			
		||||
        Tag("yuri", "Yuri"),
 | 
			
		||||
        Tag("zombies", "Zombies")
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    private class Tag(val id: String, name: String) : Filter.CheckBox(name)
 | 
			
		||||
 | 
			
		||||
    private class GenreList(genres: List<Tag>) : Filter.Group<Tag>("Genres", genres)
 | 
			
		||||
}
 | 
			
		||||
@ -14,6 +14,7 @@ class ZMangaGenerator : ThemeSourceGenerator {
 | 
			
		||||
    override val sources = listOf(
 | 
			
		||||
        SingleLang("Maid - Manga", "https://www.maid.my.id", "id", overrideVersionCode = 10, className = "MaidManga"),
 | 
			
		||||
        SingleLang("KomikPlay", "https://komikplay.com", "id", overrideVersionCode = 1),
 | 
			
		||||
        SingleLang("Komikita", "https://komikita.org", "id"),
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    companion object {
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user