ReImplement Mangadex deeplink
This commit is contained in:
parent
90654dc027
commit
d788585d14
@ -312,7 +312,7 @@
|
||||
android:scheme="https" />
|
||||
|
||||
<!-- MangaDex -->
|
||||
<!--<data
|
||||
<data
|
||||
android:scheme="https"
|
||||
android:host="www.mangadex.org"
|
||||
android:pathPrefix="/manga/" />
|
||||
@ -320,14 +320,6 @@
|
||||
android:scheme="https"
|
||||
android:host="mangadex.org"
|
||||
android:pathPrefix="/manga/" />
|
||||
<data
|
||||
android:scheme="https"
|
||||
android:host="www.mangadex.cc"
|
||||
android:pathPrefix="/manga/" />
|
||||
<data
|
||||
android:scheme="https"
|
||||
android:host="www.mangadex.cc"
|
||||
android:pathPrefix="/manga/" />
|
||||
|
||||
<data
|
||||
android:scheme="https"
|
||||
@ -337,14 +329,6 @@
|
||||
android:scheme="https"
|
||||
android:host="mangadex.org"
|
||||
android:pathPrefix="/title/" />
|
||||
<data
|
||||
android:scheme="https"
|
||||
android:host="www.mangadex.cc"
|
||||
android:pathPrefix="/title/" />
|
||||
<data
|
||||
android:scheme="https"
|
||||
android:host="www.mangadex.cc"
|
||||
android:pathPrefix="/title/" />
|
||||
|
||||
<data
|
||||
android:scheme="https"
|
||||
@ -354,14 +338,6 @@
|
||||
android:scheme="https"
|
||||
android:host="mangadex.org"
|
||||
android:pathPrefix="/chapter/" />
|
||||
<data
|
||||
android:scheme="https"
|
||||
android:host="www.mangadex.cc"
|
||||
android:pathPrefix="/chapter/" />
|
||||
<data
|
||||
android:scheme="https"
|
||||
android:host="www.mangadex.cc"
|
||||
android:pathPrefix="/chapter/" />-->
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<activity
|
||||
|
@ -2,6 +2,7 @@ package eu.kanade.tachiyomi.source.online.all
|
||||
|
||||
import android.content.Context
|
||||
import android.content.SharedPreferences
|
||||
import android.net.Uri
|
||||
import eu.kanade.tachiyomi.data.database.models.Track
|
||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||
import eu.kanade.tachiyomi.data.track.TrackManager
|
||||
@ -19,6 +20,7 @@ import eu.kanade.tachiyomi.source.online.LoginSource
|
||||
import eu.kanade.tachiyomi.source.online.MetadataSource
|
||||
import eu.kanade.tachiyomi.source.online.NamespaceSource
|
||||
import eu.kanade.tachiyomi.source.online.RandomMangaSource
|
||||
import eu.kanade.tachiyomi.source.online.UrlImportableSource
|
||||
import eu.kanade.tachiyomi.ui.base.controller.BaseController
|
||||
import eu.kanade.tachiyomi.ui.manga.MangaController
|
||||
import eu.kanade.tachiyomi.util.lang.runAsObservable
|
||||
@ -37,7 +39,9 @@ import exh.md.service.MangaDexAuthService
|
||||
import exh.md.service.MangaDexService
|
||||
import exh.md.service.SimilarService
|
||||
import exh.md.utils.FollowStatus
|
||||
import exh.md.utils.MdApi
|
||||
import exh.md.utils.MdLang
|
||||
import exh.md.utils.MdUtil
|
||||
import exh.metadata.metadata.MangaDexSearchMetadata
|
||||
import exh.source.DelegatedHttpSource
|
||||
import exh.ui.metadata.adapters.MangaDexDescriptionAdapter
|
||||
@ -54,7 +58,7 @@ import kotlin.reflect.KClass
|
||||
class MangaDex(delegate: HttpSource, val context: Context) :
|
||||
DelegatedHttpSource(delegate),
|
||||
MetadataSource<MangaDexSearchMetadata, MangaDto>,
|
||||
// UrlImportableSource,
|
||||
UrlImportableSource,
|
||||
FollowsSource,
|
||||
LoginSource,
|
||||
BrowseSourceFilterHeader,
|
||||
@ -66,7 +70,7 @@ class MangaDex(delegate: HttpSource, val context: Context) :
|
||||
MdLang.fromExt(lang) ?: MdLang.ENGLISH
|
||||
}
|
||||
|
||||
// override val matchingHosts: List<String> = listOf("mangadex.org", "www.mangadex.org")
|
||||
override val matchingHosts: List<String> = listOf("mangadex.org", "www.mangadex.org")
|
||||
|
||||
val preferences = Injekt.get<PreferencesHelper>()
|
||||
val mdList: MdList = Injekt.get<TrackManager>().mdList
|
||||
@ -114,18 +118,11 @@ class MangaDex(delegate: HttpSource, val context: Context) :
|
||||
PageHandler(headers, mangadexService, mangaPlusHandler, preferences, mdList)
|
||||
}
|
||||
|
||||
/*override fun fetchSearchManga(page: Int, query: String, filters: FilterList): Observable<MangasPage> =
|
||||
urlImportFetchSearchManga(context, query) {
|
||||
importIdToMdId(query) {
|
||||
super.fetchSearchManga(page, query, filters)
|
||||
}
|
||||
}*/
|
||||
|
||||
/*override suspend fun mapUrlToMangaUrl(uri: Uri): String? {
|
||||
val lcFirstPathSegment = uri.pathSegments.firstOrNull()?.toLowerCase() ?: return null
|
||||
override suspend fun mapUrlToMangaUrl(uri: Uri): String? {
|
||||
val lcFirstPathSegment = uri.pathSegments.firstOrNull()?.lowercase() ?: return null
|
||||
|
||||
return if (lcFirstPathSegment == "title" || lcFirstPathSegment == "manga") {
|
||||
"/manga/" + uri.pathSegments[1]
|
||||
MdUtil.buildMangaUrl(uri.pathSegments[1])
|
||||
} else {
|
||||
null
|
||||
}
|
||||
@ -133,15 +130,14 @@ class MangaDex(delegate: HttpSource, val context: Context) :
|
||||
|
||||
override fun mapUrlToChapterUrl(uri: Uri): String? {
|
||||
if (!uri.pathSegments.firstOrNull().equals("chapter", true)) return null
|
||||
val id = uri.pathSegments.getOrNull(1)?.toIntOrNull() ?: return null
|
||||
return MdUtil.oldApiChapter + id
|
||||
val id = uri.pathSegments.getOrNull(1) ?: return null
|
||||
return MdApi.chapter + '/' + id
|
||||
}
|
||||
|
||||
override suspend fun mapChapterUrlToMangaUrl(uri: Uri): String? {
|
||||
val id = uri.pathSegments.getOrNull(2) ?: return null
|
||||
val mangaId = MangaHandler(baseHttpClient, headers, mdLang).getMangaIdFromChapterId(id)
|
||||
return MdUtil.mapMdIdToMangaUrl(mangaId)
|
||||
}*/
|
||||
val id = uri.pathSegments.getOrNull(1) ?: return null
|
||||
return mangaHandler.getMangaFromChapterId(id)?.let { MdUtil.buildMangaUrl(it) }
|
||||
}
|
||||
|
||||
override fun fetchMangaDetails(manga: SManga): Observable<SManga> {
|
||||
return mangaHandler.fetchMangaDetailsObservable(manga, id, preferences.mangaDexForceLatestCovers().get())
|
||||
@ -240,9 +236,6 @@ class MangaDex(delegate: HttpSource, val context: Context) :
|
||||
}*/
|
||||
|
||||
override suspend fun fetchTrackingInfo(url: String): Track {
|
||||
if (!isLogged()) {
|
||||
throw Exception("Not Logged in")
|
||||
}
|
||||
return followsHandler.fetchTrackingInfo(url)
|
||||
}
|
||||
|
||||
@ -266,26 +259,6 @@ class MangaDex(delegate: HttpSource, val context: Context) :
|
||||
return similarHandler.getSimilar(manga)
|
||||
}
|
||||
|
||||
/*private fun importIdToMdId(query: String, fail: () -> Observable<MangasPage>): Observable<MangasPage> =
|
||||
when {
|
||||
query.toIntOrNull() != null -> {
|
||||
runAsObservable({
|
||||
GalleryAdder().addGallery(context, MdUtil.baseUrl + MdUtil.mapMdIdToMangaUrl(query.toInt()), false, this@MangaDex)
|
||||
})
|
||||
.map { res ->
|
||||
MangasPage(
|
||||
if (res is GalleryAddEvent.Success) {
|
||||
listOf(res.manga)
|
||||
} else {
|
||||
emptyList()
|
||||
},
|
||||
false
|
||||
)
|
||||
}
|
||||
}
|
||||
else -> fail()
|
||||
}*/
|
||||
|
||||
companion object {
|
||||
private const val dataSaverPref = "dataSaverV5"
|
||||
|
||||
|
@ -1,7 +1,6 @@
|
||||
package exh.md.handlers
|
||||
|
||||
import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
||||
import eu.kanade.tachiyomi.network.parseAs
|
||||
import eu.kanade.tachiyomi.source.model.SManga
|
||||
import exh.log.xLogE
|
||||
import exh.md.dto.ChapterDto
|
||||
@ -15,7 +14,6 @@ import exh.metadata.metadata.base.insertFlatMetadata
|
||||
import exh.util.capitalize
|
||||
import exh.util.floor
|
||||
import exh.util.nullIfEmpty
|
||||
import okhttp3.Response
|
||||
import tachiyomi.source.model.ChapterInfo
|
||||
import tachiyomi.source.model.MangaInfo
|
||||
import uy.kohesive.injekt.injectLazy
|
||||
@ -200,9 +198,8 @@ class ApiMangaParser(
|
||||
}.toList()
|
||||
}
|
||||
|
||||
fun chapterParseForMangaId(response: Response): String {
|
||||
return response.parseAs<ChapterDto>(MdUtil.jsonParser)
|
||||
.relationships.firstOrNull { it.type.equals("manga", true) }?.id ?: throw Exception("Not found")
|
||||
fun chapterParseForMangaId(chapterDto: ChapterDto): String? {
|
||||
return chapterDto.relationships.find { it.type.equals("manga", true) }?.id
|
||||
}
|
||||
|
||||
fun StringBuilder.appends(string: String): StringBuilder = append("$string ")
|
||||
|
@ -82,4 +82,10 @@ class MangaHandler(
|
||||
remoteTrack.await() to null
|
||||
}
|
||||
}
|
||||
|
||||
suspend fun getMangaFromChapterId(chapterId: String): String? {
|
||||
return withIOContext {
|
||||
apiMangaParser.chapterParseForMangaId(service.viewChapter(chapterId))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user