mirror of
https://github.com/tachiyomiorg/tachiyomi.git
synced 2024-11-10 08:47:49 +01:00
feat: allow option to skip duplicates when downloading chapters
This commit is contained in:
parent
e3fbd26880
commit
6ad6708230
3 changed files with 34 additions and 6 deletions
|
@ -60,6 +60,10 @@ object SettingsDownloadScreen : SearchableSettings {
|
||||||
title = stringResource(R.string.split_tall_images),
|
title = stringResource(R.string.split_tall_images),
|
||||||
subtitle = stringResource(R.string.split_tall_images_summary),
|
subtitle = stringResource(R.string.split_tall_images_summary),
|
||||||
),
|
),
|
||||||
|
Preference.PreferenceItem.SwitchPreference(
|
||||||
|
pref = downloadPreferences.skipDupe(),
|
||||||
|
title = stringResource(R.string.pref_skip_dupe_chapters),
|
||||||
|
),
|
||||||
getDeleteChaptersGroup(
|
getDeleteChaptersGroup(
|
||||||
downloadPreferences = downloadPreferences,
|
downloadPreferences = downloadPreferences,
|
||||||
categories = allCategories,
|
categories = allCategories,
|
||||||
|
|
|
@ -600,13 +600,35 @@ class MangaInfoScreenModel(
|
||||||
}
|
}
|
||||||
|
|
||||||
fun runDownloadAction(action: DownloadAction) {
|
fun runDownloadAction(action: DownloadAction) {
|
||||||
val chaptersToDownload = when (action) {
|
val validChapters = getUnreadChaptersSorted()
|
||||||
DownloadAction.NEXT_1_CHAPTER -> getUnreadChaptersSorted().take(1)
|
val amount = when (action) {
|
||||||
DownloadAction.NEXT_5_CHAPTERS -> getUnreadChaptersSorted().take(5)
|
DownloadAction.NEXT_1_CHAPTER -> 1
|
||||||
DownloadAction.NEXT_10_CHAPTERS -> getUnreadChaptersSorted().take(10)
|
DownloadAction.NEXT_5_CHAPTERS -> 5
|
||||||
DownloadAction.NEXT_25_CHAPTERS -> getUnreadChaptersSorted().take(25)
|
DownloadAction.NEXT_10_CHAPTERS -> 10
|
||||||
DownloadAction.UNREAD_CHAPTERS -> getUnreadChapters()
|
DownloadAction.NEXT_25_CHAPTERS -> 25
|
||||||
|
DownloadAction.UNREAD_CHAPTERS -> validChapters.size
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val chaptersToDownload: List<Chapter> = kotlin.run {
|
||||||
|
if (downloadPreferences.skipDupe().get()) {
|
||||||
|
mutableListOf<Chapter>().apply {
|
||||||
|
val firstChapter = validChapters.firstOrNull() ?: return
|
||||||
|
for (chapterEntry in validChapters.groupBy { it.chapterNumber }) {
|
||||||
|
if (size == amount) break
|
||||||
|
if (any { it.chapterNumber == chapterEntry.key }) continue
|
||||||
|
|
||||||
|
add(
|
||||||
|
chapterEntry.value.find { it.id == firstChapter.id }
|
||||||
|
?: chapterEntry.value.find { it.scanlator == firstChapter.scanlator }
|
||||||
|
?: chapterEntry.value.first(),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
validChapters.take(amount)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (chaptersToDownload.isNotEmpty()) {
|
if (chaptersToDownload.isNotEmpty()) {
|
||||||
startDownload(chaptersToDownload, false)
|
startDownload(chaptersToDownload, false)
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,6 +16,8 @@ class DownloadPreferences(
|
||||||
|
|
||||||
fun splitTallImages() = preferenceStore.getBoolean("split_tall_images", false)
|
fun splitTallImages() = preferenceStore.getBoolean("split_tall_images", false)
|
||||||
|
|
||||||
|
fun skipDupe() = preferenceStore.getBoolean("pref_download_skip_dupe", false)
|
||||||
|
|
||||||
fun autoDownloadWhileReading() = preferenceStore.getInt("auto_download_while_reading", 0)
|
fun autoDownloadWhileReading() = preferenceStore.getInt("auto_download_while_reading", 0)
|
||||||
|
|
||||||
fun removeAfterReadSlots() = preferenceStore.getInt("remove_after_read_slots", -1)
|
fun removeAfterReadSlots() = preferenceStore.getInt("remove_after_read_slots", -1)
|
||||||
|
|
Loading…
Reference in a new issue