mirror of
https://github.com/Suwayomi/Suwayomi-Server.git
synced 2026-07-03 10:54:38 -05:00
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.http.Context
|
||||||
import io.javalin.websocket.WsConfig
|
import io.javalin.websocket.WsConfig
|
||||||
import suwayomi.tachidesk.manga.impl.download.DownloadManager
|
import suwayomi.tachidesk.manga.impl.download.DownloadManager
|
||||||
|
import suwayomi.tachidesk.server.JavalinSetup.future
|
||||||
|
|
||||||
object DownloadController {
|
object DownloadController {
|
||||||
/** Download queue stats */
|
/** Download queue stats */
|
||||||
@@ -52,9 +53,11 @@ object DownloadController {
|
|||||||
val chapterIndex = ctx.pathParam("chapterIndex").toInt()
|
val chapterIndex = ctx.pathParam("chapterIndex").toInt()
|
||||||
val mangaId = ctx.pathParam("mangaId").toInt()
|
val mangaId = ctx.pathParam("mangaId").toInt()
|
||||||
|
|
||||||
DownloadManager.enqueue(chapterIndex, mangaId)
|
ctx.future(
|
||||||
|
future {
|
||||||
ctx.status(200)
|
DownloadManager.enqueue(chapterIndex, mangaId)
|
||||||
|
}
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
/** delete chapter from download queue */
|
/** 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.and
|
||||||
import org.jetbrains.exposed.sql.select
|
import org.jetbrains.exposed.sql.select
|
||||||
import org.jetbrains.exposed.sql.transactions.transaction
|
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.DownloadChapter
|
||||||
import suwayomi.tachidesk.manga.impl.download.model.DownloadState.Downloading
|
import suwayomi.tachidesk.manga.impl.download.model.DownloadState.Downloading
|
||||||
import suwayomi.tachidesk.manga.impl.download.model.DownloadStatus
|
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 }) {
|
if (downloadQueue.none { it.mangaId == mangaId && it.chapterIndex == chapterIndex }) {
|
||||||
downloadQueue.add(
|
downloadQueue.add(
|
||||||
DownloadChapter(
|
DownloadChapter(
|
||||||
@@ -80,7 +81,8 @@ object DownloadManager {
|
|||||||
ChapterTable.select { (ChapterTable.manga eq mangaId) and (ChapterTable.sourceOrder eq chapterIndex) }
|
ChapterTable.select { (ChapterTable.manga eq mangaId) and (ChapterTable.sourceOrder eq chapterIndex) }
|
||||||
.first()
|
.first()
|
||||||
}
|
}
|
||||||
)
|
),
|
||||||
|
manga = getManga(mangaId)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
start()
|
start()
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ class Downloader(private val downloadQueue: CopyOnWriteArrayList<DownloadChapter
|
|||||||
download.chapter = runBlocking { getChapter(download.chapterIndex, download.mangaId) }
|
download.chapter = runBlocking { getChapter(download.chapterIndex, download.mangaId) }
|
||||||
step()
|
step()
|
||||||
|
|
||||||
val pageCount = download.chapter!!.pageCount
|
val pageCount = download.chapter.pageCount
|
||||||
for (pageNum in 0 until pageCount) {
|
for (pageNum in 0 until pageCount) {
|
||||||
runBlocking { getPageImage(download.mangaId, download.chapterIndex, pageNum) }
|
runBlocking { getPageImage(download.mangaId, download.chapterIndex, pageNum) }
|
||||||
// TODO: retry on error with 2,4,8 seconds of wait
|
// TODO: retry on error with 2,4,8 seconds of wait
|
||||||
|
|||||||
@@ -9,12 +9,14 @@ package suwayomi.tachidesk.manga.impl.download.model
|
|||||||
|
|
||||||
import suwayomi.tachidesk.manga.impl.download.model.DownloadState.Queued
|
import suwayomi.tachidesk.manga.impl.download.model.DownloadState.Queued
|
||||||
import suwayomi.tachidesk.manga.model.dataclass.ChapterDataClass
|
import suwayomi.tachidesk.manga.model.dataclass.ChapterDataClass
|
||||||
|
import suwayomi.tachidesk.manga.model.dataclass.MangaDataClass
|
||||||
|
|
||||||
class DownloadChapter(
|
class DownloadChapter(
|
||||||
val chapterIndex: Int,
|
val chapterIndex: Int,
|
||||||
val mangaId: Int,
|
val mangaId: Int,
|
||||||
|
var chapter: ChapterDataClass,
|
||||||
|
var manga: MangaDataClass,
|
||||||
var state: DownloadState = Queued,
|
var state: DownloadState = Queued,
|
||||||
var progress: Float = 0f,
|
var progress: Float = 0f,
|
||||||
var tries: Int = 0,
|
var tries: Int = 0,
|
||||||
var chapter: ChapterDataClass? = null,
|
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user