48 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Kotlin
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Kotlin
		
	
	
	
	
	
package eu.kanade.tachiyomi.extension.en.xoxocomics
 | 
						|
 | 
						|
import eu.kanade.tachiyomi.multisrc.wpcomics.WPComics
 | 
						|
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.Locale
 | 
						|
 | 
						|
class XoxoComics : WPComics("XOXO Comics", "https://xoxocomics.com", "en", SimpleDateFormat("MM/dd/yy", Locale.US), null) {
 | 
						|
    override fun latestUpdatesRequest(page: Int): Request = GET("$baseUrl/comic-updates?page=$page", headers)
 | 
						|
    override fun latestUpdatesSelector() = "li.row"
 | 
						|
    override fun latestUpdatesFromElement(element: Element): SManga {
 | 
						|
        return SManga.create().apply {
 | 
						|
            element.select("h3 a").let {
 | 
						|
                title = it.text()
 | 
						|
                setUrlWithoutDomain(it.attr("href"))
 | 
						|
            }
 | 
						|
            thumbnail_url = element.select("img").attr("data-original")
 | 
						|
        }
 | 
						|
    }
 | 
						|
    override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
 | 
						|
        return GET("$baseUrl/search?keyword=$query&page=$page", headers)
 | 
						|
    }
 | 
						|
 | 
						|
    override fun chapterListParse(response: Response): List<SChapter> {
 | 
						|
        val chapters = mutableListOf<SChapter>()
 | 
						|
 | 
						|
        // recursively add chapters from paginated chapter list
 | 
						|
        fun parseChapters(document: Document) {
 | 
						|
            document.select(chapterListSelector()).map { chapters.add(chapterFromElement(it)) }
 | 
						|
            document.select("ul.pagination a[rel=next]").firstOrNull()?.let { a ->
 | 
						|
                parseChapters(client.newCall(GET(a.attr("abs:href"), headers)).execute().asJsoup())
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        parseChapters(response.asJsoup())
 | 
						|
        return chapters
 | 
						|
    }
 | 
						|
    override fun pageListRequest(chapter: SChapter): Request = GET(baseUrl + "${chapter.url}/all")
 | 
						|
}
 |