mirror of
https://github.com/Suwayomi/Suwayomi-Server.git
synced 2026-07-10 22:34:33 -05:00
112 lines
3.4 KiB
Kotlin
112 lines
3.4 KiB
Kotlin
package eu.kanade.tachiyomi.source
|
|
|
|
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.model.SMangaUpdate
|
|
import rx.Observable
|
|
|
|
/**
|
|
* A basic interface for creating a source. It could be an online source, a local source, etc.
|
|
*/
|
|
interface Source {
|
|
/**
|
|
* ID for the source. Must be unique.
|
|
*/
|
|
val id: Long
|
|
|
|
/**
|
|
* Name of the source.
|
|
*/
|
|
val name: String
|
|
|
|
val lang: String
|
|
get() = ""
|
|
|
|
/**
|
|
* Whether the source has support for latest updates.
|
|
*/
|
|
val supportsLatest: Boolean
|
|
|
|
/**
|
|
* Returns the list of filters for the source.
|
|
*/
|
|
fun getFilterList(): FilterList = FilterList()
|
|
|
|
/**
|
|
* Get a page with a list of manga.
|
|
*
|
|
* @since tachiyomix 1.6
|
|
* @param page the page number to retrieve.
|
|
*/
|
|
suspend fun getPopularManga(page: Int): MangasPage
|
|
|
|
/**
|
|
* Get a page with a list of latest manga updates.
|
|
*
|
|
* @since tachiyomix 1.6
|
|
* @param page the page number to retrieve.
|
|
*/
|
|
suspend fun getLatestUpdates(page: Int): MangasPage
|
|
|
|
/**
|
|
* Get a page with a list of manga.
|
|
*
|
|
* @since tachiyomix 1.6
|
|
* @param page the page number to retrieve.
|
|
* @param query the search query.
|
|
* @param filters the list of filters to apply.
|
|
*/
|
|
suspend fun getSearchManga(
|
|
page: Int,
|
|
query: String,
|
|
filters: FilterList,
|
|
): MangasPage
|
|
|
|
/**
|
|
* Fetches updated information for a manga.
|
|
*
|
|
* Depending on the provided flags or source availability, this may include
|
|
* updated manga metadata, available chapters, or both.
|
|
*
|
|
* If a value is not requested, the existing provided value can be returned as-is.
|
|
* The host app may apply any returned updates regardless of the flags,
|
|
* so care should be taken to only return accurate and intentional changes.
|
|
*
|
|
* @since tachiyomix 1.6
|
|
* @param manga The manga to fetch updates for.
|
|
* @param chapters Existing chapters of the manga
|
|
* @param fetchDetails Whether to fetch updated manga details.
|
|
* @param fetchChapters Whether to fetch available chapters.
|
|
*/
|
|
suspend fun getMangaUpdate(
|
|
manga: SManga,
|
|
chapters: List<SChapter>,
|
|
fetchDetails: Boolean,
|
|
fetchChapters: Boolean,
|
|
): SMangaUpdate
|
|
|
|
/**
|
|
* Get the list of pages a chapter has. Pages should be returned
|
|
* in the expected order; the index is ignored.
|
|
*
|
|
* @since tachiyomix 1.6
|
|
* @param chapter the chapter.
|
|
* @return the pages for the chapter.
|
|
*/
|
|
suspend fun getPageList(chapter: SChapter): List<Page>
|
|
|
|
@Deprecated("Use the combined suspend API instead", ReplaceWith("getMangaUpdate"))
|
|
fun fetchMangaDetails(manga: SManga): Observable<SManga> = throw UnsupportedOperationException()
|
|
|
|
@Deprecated("Use the combined suspend API instead", ReplaceWith("getMangaUpdate"))
|
|
fun fetchChapterList(manga: SManga): Observable<List<SChapter>> = throw UnsupportedOperationException()
|
|
|
|
@Deprecated("Use the suspend API instead", ReplaceWith("getPageList"))
|
|
fun fetchPageList(chapter: SChapter): Observable<List<Page>> = throw UnsupportedOperationException()
|
|
}
|
|
|
|
// fun Source.icon(): Drawable? = Injekt.get<ExtensionManager>().getAppIconForSource(this)
|