JSON metadata for local manga (#1658)
* JSON metadata for local manga * Simplification * Lazy load local data
This commit is contained in:
parent
2d3bfa9a89
commit
1b37c61b5a
@ -1,6 +1,8 @@
|
|||||||
package eu.kanade.tachiyomi.source
|
package eu.kanade.tachiyomi.source
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import com.google.gson.Gson
|
||||||
|
import com.google.gson.JsonObject
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.source.model.Filter
|
import eu.kanade.tachiyomi.source.model.Filter
|
||||||
import eu.kanade.tachiyomi.source.model.FilterList
|
import eu.kanade.tachiyomi.source.model.FilterList
|
||||||
@ -21,6 +23,7 @@ import java.io.File
|
|||||||
import java.io.FileInputStream
|
import java.io.FileInputStream
|
||||||
import java.io.InputStream
|
import java.io.InputStream
|
||||||
import java.util.Locale
|
import java.util.Locale
|
||||||
|
import java.util.Scanner
|
||||||
import java.util.concurrent.TimeUnit
|
import java.util.concurrent.TimeUnit
|
||||||
import java.util.zip.ZipEntry
|
import java.util.zip.ZipEntry
|
||||||
import java.util.zip.ZipFile
|
import java.util.zip.ZipFile
|
||||||
@ -117,8 +120,6 @@ class LocalSource(private val context: Context) : CatalogueSource {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
initialized = true
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return Observable.just(MangasPage(mangas, false))
|
return Observable.just(MangasPage(mangas, false))
|
||||||
@ -126,7 +127,26 @@ class LocalSource(private val context: Context) : CatalogueSource {
|
|||||||
|
|
||||||
override fun fetchLatestUpdates(page: Int) = fetchSearchManga(page, "", LATEST_FILTERS)
|
override fun fetchLatestUpdates(page: Int) = fetchSearchManga(page, "", LATEST_FILTERS)
|
||||||
|
|
||||||
override fun fetchMangaDetails(manga: SManga) = Observable.just(manga)
|
override fun fetchMangaDetails(manga: SManga): Observable<SManga> {
|
||||||
|
getBaseDirectories(context)
|
||||||
|
.mapNotNull { File(it, manga.url).listFiles()?.toList() }
|
||||||
|
.flatten()
|
||||||
|
.filter { it.extension.equals("json") }
|
||||||
|
.firstOrNull()
|
||||||
|
?.apply {
|
||||||
|
val json = Gson().fromJson(Scanner(this).useDelimiter("\\Z").next(), JsonObject::class.java)
|
||||||
|
manga.title = json["title"]?.asString ?: manga.title
|
||||||
|
manga.author = json["author"]?.asString ?: manga.author
|
||||||
|
manga.artist = json["artist"]?.asString ?: manga.artist
|
||||||
|
manga.description = json["description"]?.asString ?: manga.description
|
||||||
|
manga.genre = json["genre"]?.asJsonArray
|
||||||
|
?.map { it.asString }
|
||||||
|
?.joinToString(", ")
|
||||||
|
?: manga.genre
|
||||||
|
manga.status = json["status"]?.asInt ?: manga.status
|
||||||
|
}
|
||||||
|
return Observable.just(manga)
|
||||||
|
}
|
||||||
|
|
||||||
override fun fetchChapterList(manga: SManga): Observable<List<SChapter>> {
|
override fun fetchChapterList(manga: SManga): Observable<List<SChapter>> {
|
||||||
val chapters = getBaseDirectories(context)
|
val chapters = getBaseDirectories(context)
|
||||||
|
Loading…
Reference in New Issue
Block a user