mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-10-31 14:27:57 +01:00 
			
		
		
		
	JSON metadata for local manga (#1658)
* JSON metadata for local manga * Simplification * Lazy load local data
This commit is contained in:
		| @@ -1,6 +1,8 @@ | ||||
| package eu.kanade.tachiyomi.source | ||||
|  | ||||
| import android.content.Context | ||||
| import com.google.gson.Gson | ||||
| import com.google.gson.JsonObject | ||||
| import eu.kanade.tachiyomi.R | ||||
| import eu.kanade.tachiyomi.source.model.Filter | ||||
| import eu.kanade.tachiyomi.source.model.FilterList | ||||
| @@ -21,6 +23,7 @@ import java.io.File | ||||
| import java.io.FileInputStream | ||||
| import java.io.InputStream | ||||
| import java.util.Locale | ||||
| import java.util.Scanner | ||||
| import java.util.concurrent.TimeUnit | ||||
| import java.util.zip.ZipEntry | ||||
| import java.util.zip.ZipFile | ||||
| @@ -117,8 +120,6 @@ class LocalSource(private val context: Context) : CatalogueSource { | ||||
|                         } | ||||
|                     } | ||||
|                 } | ||||
|  | ||||
|                 initialized = true | ||||
|             } | ||||
|         } | ||||
|         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 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>> { | ||||
|         val chapters = getBaseDirectories(context) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user