Suwayomi / Suwayomi-Server

A rewrite of Tachiyomi for the Desktop
Mozilla Public License 2.0
3.93k stars 201 forks source link

tachidesk cannot browse 18comic aka "禁漫天堂,jinman tiantang" #444

Open ericvlog opened 1 year ago

ericvlog commented 1 year ago

Device information

Steps to reproduce

  1. Open tachidesk, go to source, select 禁漫天堂.
  2. Select any long comic and open 1st or last chapter
  3. Loading after all it blank.

Expected behavior

It should be open a comic picture after.

Actual behavior

it loading and open black blank page.

Other details

I using debian and install it with docker-compose, and happen as above i descript, then i try download the windows version, test browser mode and electron mode also same, Just extension 18comic or 禁漫天堂 have problem, other extension working great.

I do have android version of tachiyomi, and it working great on the extension.

Hope you can fix it !!

Thanks regard. image

ericvlog commented 1 year ago

NO more support here?

AriaMoradi commented 1 year ago

The extension fails at decoding image files, we have to implement android.graphics.BitmapFactory.decodeStream in order to fix this.

18:30:30.623 [DefaultDispatcher-worker-6] WARN  io.javalin.Javalin - Uncaught exception
java.lang.RuntimeException: Stub!
    at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:43)
    at eu.kanade.tachiyomi.extension.zh.jinmantiantang.ScrambledImageInterceptor.decodeImage(Unknown Source)
    at eu.kanade.tachiyomi.extension.zh.jinmantiantang.ScrambledImageInterceptor.intercept(Unknown Source)
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
    at eu.kanade.tachiyomi.network.interceptor.SpecificHostRateLimitInterceptor.intercept(SpecificHostRateLimitInterceptor.kt:45)
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
    at eu.kanade.tachiyomi.network.interceptor.CloudflareInterceptor.intercept(CloudflareInterceptor.kt:28)
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
    at eu.kanade.tachiyomi.network.interceptor.UserAgentInterceptor.intercept(UserAgentInterceptor.kt:19)
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
    at okhttp3.internal.connection.RealCall.getResponseWithInterceptorChain$okhttp(RealCall.kt:201)
    at okhttp3.internal.connection.RealCall.execute(RealCall.kt:154)
    at eu.kanade.tachiyomi.network.OkHttpExtensionsKt$asObservable$1$requestArbiter$1.request(OkHttpExtensions.kt:32)
    at rx.Subscriber.setProducer(Subscriber.java:211)
    at rx.Subscriber.setProducer(Subscriber.java:205)
    at eu.kanade.tachiyomi.network.OkHttpExtensionsKt.asObservable$lambda$0(OkHttpExtensions.kt:54)
    at rx.Observable.unsafeSubscribe(Observable.java:10327)
    at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:41)
    at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:30)
    at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)
    at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)
    at rx.Observable.subscribe(Observable.java:10423)
    at rx.Observable.subscribe(Observable.java:10390)
    at suwayomi.tachidesk.manga.impl.util.lang.RxCoroutineBridgeKt.awaitOne(RxCoroutineBridge.kt:29)
    at suwayomi.tachidesk.manga.impl.util.lang.RxCoroutineBridgeKt.awaitSingle(RxCoroutineBridge.kt:24)
    at suwayomi.tachidesk.manga.impl.Page$getPageImage$5.invokeSuspend(Page.kt:90)
    at suwayomi.tachidesk.manga.impl.Page$getPageImage$5.invoke(Page.kt)
    at suwayomi.tachidesk.manga.impl.Page$getPageImage$5.invoke(Page.kt)
    at suwayomi.tachidesk.manga.impl.util.storage.ImageResponse.getCachedImageResponse(ImageResponse.kt:43)
    at suwayomi.tachidesk.manga.impl.util.storage.ImageResponse.getImageResponse(ImageResponse.kt:93)
    at suwayomi.tachidesk.manga.impl.Page.getPageImage(Page.kt:89)
    at suwayomi.tachidesk.manga.impl.Page.getPageImage$default(Page.kt:41)
    at suwayomi.tachidesk.manga.controller.MangaController$pageRetrieve$2$1.invokeSuspend(MangaController.kt:387)
    at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
    at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
    at kotlinx.coroutines.internal.LimitedDispatcher.run(LimitedDispatcher.kt:42)
    at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:95)
    at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:570)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:677)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:664)
ericvlog commented 1 year ago

The extension fails at decoding image files, we have to implement android.graphics.BitmapFactory.decodeStream in order to fix this.

18:30:30.623 [DefaultDispatcher-worker-6] WARN  io.javalin.Javalin - Uncaught exception
java.lang.RuntimeException: Stub!
  at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:43)
  at eu.kanade.tachiyomi.extension.zh.jinmantiantang.ScrambledImageInterceptor.decodeImage(Unknown Source)
  at eu.kanade.tachiyomi.extension.zh.jinmantiantang.ScrambledImageInterceptor.intercept(Unknown Source)
  at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
  at eu.kanade.tachiyomi.network.interceptor.SpecificHostRateLimitInterceptor.intercept(SpecificHostRateLimitInterceptor.kt:45)
  at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
  at eu.kanade.tachiyomi.network.interceptor.CloudflareInterceptor.intercept(CloudflareInterceptor.kt:28)
  at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
  at eu.kanade.tachiyomi.network.interceptor.UserAgentInterceptor.intercept(UserAgentInterceptor.kt:19)
  at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
  at okhttp3.internal.connection.RealCall.getResponseWithInterceptorChain$okhttp(RealCall.kt:201)
  at okhttp3.internal.connection.RealCall.execute(RealCall.kt:154)
  at eu.kanade.tachiyomi.network.OkHttpExtensionsKt$asObservable$1$requestArbiter$1.request(OkHttpExtensions.kt:32)
  at rx.Subscriber.setProducer(Subscriber.java:211)
  at rx.Subscriber.setProducer(Subscriber.java:205)
  at eu.kanade.tachiyomi.network.OkHttpExtensionsKt.asObservable$lambda$0(OkHttpExtensions.kt:54)
  at rx.Observable.unsafeSubscribe(Observable.java:10327)
  at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:41)
  at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:30)
  at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)
  at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)
  at rx.Observable.subscribe(Observable.java:10423)
  at rx.Observable.subscribe(Observable.java:10390)
  at suwayomi.tachidesk.manga.impl.util.lang.RxCoroutineBridgeKt.awaitOne(RxCoroutineBridge.kt:29)
  at suwayomi.tachidesk.manga.impl.util.lang.RxCoroutineBridgeKt.awaitSingle(RxCoroutineBridge.kt:24)
  at suwayomi.tachidesk.manga.impl.Page$getPageImage$5.invokeSuspend(Page.kt:90)
  at suwayomi.tachidesk.manga.impl.Page$getPageImage$5.invoke(Page.kt)
  at suwayomi.tachidesk.manga.impl.Page$getPageImage$5.invoke(Page.kt)
  at suwayomi.tachidesk.manga.impl.util.storage.ImageResponse.getCachedImageResponse(ImageResponse.kt:43)
  at suwayomi.tachidesk.manga.impl.util.storage.ImageResponse.getImageResponse(ImageResponse.kt:93)
  at suwayomi.tachidesk.manga.impl.Page.getPageImage(Page.kt:89)
  at suwayomi.tachidesk.manga.impl.Page.getPageImage$default(Page.kt:41)
  at suwayomi.tachidesk.manga.controller.MangaController$pageRetrieve$2$1.invokeSuspend(MangaController.kt:387)
  at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
  at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
  at kotlinx.coroutines.internal.LimitedDispatcher.run(LimitedDispatcher.kt:42)
  at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:95)
  at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:570)
  at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
  at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:677)
  at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:664)

it mean a fix soon ? it weird because android version tachiyomi is able to browse it.

Syer10 commented 1 year ago

It depends on how easy it would be to implement image manipulation. Android itself implements it for Tachiyomi to be able to do it, but Tachidesk would have to implement it all by itself or find some kind of shortcut to implement it. It's not a easy thing to do.

ericvlog commented 1 year ago

It depends on how easy it would be to implement image manipulation. Android itself implements it for Tachiyomi to be able to do it, but Tachidesk would have to implement it all by itself or find some kind of shortcut to implement it. It's not a easy thing to do.

Hope you can implement very soon, however thanks for your reply.

animeavi commented 1 year ago

The extension fails at decoding image files, we have to implement android.graphics.BitmapFactory.decodeStream in order to fix this.

I don't know if I should open another bug report but I have the same issue on "MangaReader.to", looks related to scrambled pages, to test it look for Vinland Saga and try to read chapter 1.

Tatchaxzw commented 1 year ago

I also have this problem。

ericvlog commented 6 months ago

hello, how this bug have solve?

Thanks.

jason3232 commented 3 months ago

With FlareSolverr setup I am able to get the catalog and index of mangas but it fails to display any image, using the latest preview docker image version of Tachidesk/Suwayomi


java.io.IOException: java.lang.IllegalArgumentException: no reader for image
        at eu.kanade.tachiyomi.source.online.HttpSource.getImage$suspendImpl(HttpSource.kt:390)
        at eu.kanade.tachiyomi.source.online.HttpSource.getImage(HttpSource.kt)
        at suwayomi.tachidesk.manga.impl.Page$getPageImage$5.invokeSuspend(Page.kt:112)
        at suwayomi.tachidesk.manga.impl.Page$getPageImage$5.invoke(Page.kt)
        at suwayomi.tachidesk.manga.impl.Page$getPageImage$5.invoke(Page.kt)
        at suwayomi.tachidesk.manga.impl.util.storage.ImageResponse.getImageResponse(ImageResponse.kt:70)
        at suwayomi.tachidesk.manga.impl.Page.getPageImage(Page.kt:111)
        at suwayomi.tachidesk.manga.impl.Page.getPageImage$default(Page.kt:44)
        at suwayomi.tachidesk.manga.controller.MangaController$pageRetrieve$2$1.invokeSuspend(MangaController.kt:407)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108)
        at kotlinx.coroutines.internal.LimitedDispatcher$Worker.run(LimitedDispatcher.kt:115)
        at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:103)
        at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:584)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:793)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:697)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:684)
Caused by: java.io.IOException: java.lang.IllegalArgumentException: no reader for image
        at eu.kanade.tachiyomi.lib.randomua.RandomUserAgentInterceptor.intercept(Unknown Source)
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
        at eu.kanade.tachiyomi.extension.zh.jinmantiantang.UpdateUrlInterceptor.intercept(Unknown Source)
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
        at okhttp3.internal.connection.RealCall.getResponseWithInterceptorChain$okhttp(RealCall.kt:205)
        at okhttp3.internal.connection.RealCall$AsyncCall.run(RealCall.kt:537)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.base/java.lang.Thread.run(Unknown Source)```