add manga data to download queue object (#244)
* add manga data to download queue object * fix lint erro
This commit is contained in:
@@ -10,6 +10,7 @@ package suwayomi.tachidesk.manga.controller
|
||||
import io.javalin.http.Context
|
||||
import io.javalin.websocket.WsConfig
|
||||
import suwayomi.tachidesk.manga.impl.download.DownloadManager
|
||||
import suwayomi.tachidesk.server.JavalinSetup.future
|
||||
|
||||
object DownloadController {
|
||||
/** Download queue stats */
|
||||
@@ -52,9 +53,11 @@ object DownloadController {
|
||||
val chapterIndex = ctx.pathParam("chapterIndex").toInt()
|
||||
val mangaId = ctx.pathParam("mangaId").toInt()
|
||||
|
||||
DownloadManager.enqueue(chapterIndex, mangaId)
|
||||
|
||||
ctx.status(200)
|
||||
ctx.future(
|
||||
future {
|
||||
DownloadManager.enqueue(chapterIndex, mangaId)
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
/** delete chapter from download queue */
|
||||
|
||||
@@ -12,6 +12,7 @@ import io.javalin.websocket.WsMessageContext
|
||||
import org.jetbrains.exposed.sql.and
|
||||
import org.jetbrains.exposed.sql.select
|
||||
import org.jetbrains.exposed.sql.transactions.transaction
|
||||
import suwayomi.tachidesk.manga.impl.Manga.getManga
|
||||
import suwayomi.tachidesk.manga.impl.download.model.DownloadChapter
|
||||
import suwayomi.tachidesk.manga.impl.download.model.DownloadState.Downloading
|
||||
import suwayomi.tachidesk.manga.impl.download.model.DownloadStatus
|
||||
@@ -69,7 +70,7 @@ object DownloadManager {
|
||||
)
|
||||
}
|
||||
|
||||
fun enqueue(chapterIndex: Int, mangaId: Int) {
|
||||
suspend fun enqueue(chapterIndex: Int, mangaId: Int) {
|
||||
if (downloadQueue.none { it.mangaId == mangaId && it.chapterIndex == chapterIndex }) {
|
||||
downloadQueue.add(
|
||||
DownloadChapter(
|
||||
@@ -80,7 +81,8 @@ object DownloadManager {
|
||||
ChapterTable.select { (ChapterTable.manga eq mangaId) and (ChapterTable.sourceOrder eq chapterIndex) }
|
||||
.first()
|
||||
}
|
||||
)
|
||||
),
|
||||
manga = getManga(mangaId)
|
||||
)
|
||||
)
|
||||
start()
|
||||
|
||||
@@ -50,7 +50,7 @@ class Downloader(private val downloadQueue: CopyOnWriteArrayList<DownloadChapter
|
||||
download.chapter = runBlocking { getChapter(download.chapterIndex, download.mangaId) }
|
||||
step()
|
||||
|
||||
val pageCount = download.chapter!!.pageCount
|
||||
val pageCount = download.chapter.pageCount
|
||||
for (pageNum in 0 until pageCount) {
|
||||
runBlocking { getPageImage(download.mangaId, download.chapterIndex, pageNum) }
|
||||
// TODO: retry on error with 2,4,8 seconds of wait
|
||||
|
||||
+3
-1
@@ -9,12 +9,14 @@ package suwayomi.tachidesk.manga.impl.download.model
|
||||
|
||||
import suwayomi.tachidesk.manga.impl.download.model.DownloadState.Queued
|
||||
import suwayomi.tachidesk.manga.model.dataclass.ChapterDataClass
|
||||
import suwayomi.tachidesk.manga.model.dataclass.MangaDataClass
|
||||
|
||||
class DownloadChapter(
|
||||
val chapterIndex: Int,
|
||||
val mangaId: Int,
|
||||
var chapter: ChapterDataClass,
|
||||
var manga: MangaDataClass,
|
||||
var state: DownloadState = Queued,
|
||||
var progress: Float = 0f,
|
||||
var tries: Int = 0,
|
||||
var chapter: ChapterDataClass? = null,
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user