## New
- Option to blacklist libraries from Latest/Popular Feeds & Suggestions - Option to customize Chapter Titles & Scanlator fields - Option to show the release date instead of added date for chapters/volumes (close #37) - Added `formats` for GroupTags - Action to create releases ## Fixes/Enhancements - Pagination bug (closes #33, thanks to @Freezy) - Optimized API calls - Better cache and cleanup - Better cleaned chapter/volumes titles - Fixed Chapter Parsing Logic - Refactored duplicated codes into multiple helpers - Fixed action to update version badge - More feedbacks on errors & graceful degradation for partial failures - Include Suwayomi install & screenshots in README (closes #41)
This commit is contained in:
@@ -1,41 +0,0 @@
|
||||
# Komga
|
||||
|
||||
Table of Content
|
||||
- [FAQ](#FAQ)
|
||||
- [Why do I see no manga?](#why-do-i-see-no-manga)
|
||||
- [Where can I get more information about Komga?](#where-can-i-get-more-information-about-komga)
|
||||
- [The Komga extension stopped working?](#the-komga-extension-stopped-working)
|
||||
- [Can I add more than one Komga server or user?](#can-i-add-more-than-one-komga-server-or-user)
|
||||
- [Can I test the Komga extension before setting up my own server?](#can-i-test-the-komga-extension-before-setting-up-my-own-server)
|
||||
- [Guides](#Guides)
|
||||
- [How do I add my Komga server to the app?](#how-do-i-add-my-komga-server-to-the-app)
|
||||
|
||||
## FAQ
|
||||
|
||||
### Why do I see no manga?
|
||||
Komga is a self-hosted comic/manga media server.
|
||||
|
||||
### Where can I get more information about Komga?
|
||||
You can visit the [Komga](https://komga.org/) website for for more information.
|
||||
|
||||
### The Komga extension stopped working?
|
||||
Make sure that your Komga server and extension are on the newest version.
|
||||
|
||||
### Can I add more than one Komga server or user?
|
||||
Yes, currently you can add up to 11 different Komga instances to the app. The number of instances
|
||||
available can be customized in extension settings.
|
||||
|
||||
### Can I test the Komga extension before setting up my own server?
|
||||
Yes, you can try it out with the DEMO server `https://demo.komga.org`, username `demo@komga.org` and
|
||||
password `komga-demo`.
|
||||
|
||||
### Why are EPUB chapters/books missing?
|
||||
Mihon/Tachiyomi does not support reading text. EPUB files containing only images will be available
|
||||
if your Komga server version is [1.9.0](https://github.com/gotson/komga/releases/tag/1.9.0)
|
||||
or newer.
|
||||
|
||||
## Guides
|
||||
|
||||
### How do I add my Komga server to the app?
|
||||
Go into the settings of the Komga extension (under Browse -> Extensions) and fill in your server
|
||||
address and login details.
|
||||
@@ -1,12 +1,10 @@
|
||||
# ================ #
|
||||
# Authentication #
|
||||
# ================ #
|
||||
login_errors_failed_login=Authentication failed.\nPlease check your credentials
|
||||
login_errors_header_token_empty=Authorization token missing\nPlease open the extension first to generate a token
|
||||
login_errors_invalid_url=Invalid server URL:
|
||||
login_errors_parse_tokendto=Failed to process authentication token
|
||||
http_errors_401=Authentication expired\nPlease log in again
|
||||
http_errors_500=Server error occurred
|
||||
login_errors_failed_login=Authentication failed.\nPlease check your credentials and server URL
|
||||
login_errors_header_token_empty=Authentication required\nPlease open this extension once to generate a login token
|
||||
login_errors_invalid_url=Invalid server URL format:
|
||||
login_errors_parse_tokendto=Server response invalid\nPlease check your Kavita version (requires v0.8.7+)
|
||||
|
||||
# ============== #
|
||||
# Preferences #
|
||||
@@ -15,42 +13,58 @@ pref_customsource_title=Source Display Name
|
||||
pref_edit_customsource_summary=Customize how this Kavita instance appears in your library\nExample: "Home Server" or "Cloud Instance"
|
||||
|
||||
pref_group_tags_title=Tag Grouping (fork must support grouping)
|
||||
pref_group_tags_summary_on=Show tags with category prefixes
|
||||
pref_group_tags_summary_off=Display tags as flat list
|
||||
pref_group_tags_summary_on=Show tags with category prefixes (e.g., "Genre: Action")
|
||||
pref_group_tags_summary_off=Display all tags in a flat list
|
||||
|
||||
pref_last_volume_cover_title=Keep Cover Updated
|
||||
pref_last_volume_cover_summary_off=Keep series cover
|
||||
pref_last_volume_cover_summary_on=Always show current Volume/Issue cover on refresh
|
||||
pref_last_volume_cover_title=Dynamic Cover Updates
|
||||
pref_last_volume_cover_summary_off=Always show the main series cover
|
||||
pref_last_volume_cover_summary_on=Update cover on refresh to show current volume/issue when reading
|
||||
|
||||
pref_show_epub_title=EPUB Visibility
|
||||
pref_show_epub_summary_off=Hide EPUB entries
|
||||
pref_show_epub_summary_on=Show EPUB entries (unreadable in Mihon)
|
||||
pref_show_epub_summary_off=Hide EPUB files
|
||||
pref_show_epub_summary_on=Show EPUB entries (not supported by Mihon)
|
||||
|
||||
pref_release_date_title=Chapters: Display Release Dates
|
||||
pref_release_date_summary_off=Show when chapters were added to Kavita
|
||||
pref_release_date_summary_on=Show original publication dates\n?? May affect chapter sorting if dates are missing
|
||||
|
||||
pref_rd_date_title=Reading List: Display Release Date
|
||||
pref_rd_date_summary_off=Hide publication dates
|
||||
pref_rd_date_summary_off=Hide publication dates from reading lists
|
||||
pref_rd_date_summary_on=Show publication dates\nNote: Once you toggle it on, if you toggle it off again, it will stays as N/A.
|
||||
|
||||
pref_reset_title=Reset Settings
|
||||
pref_reset_title=Reset All Settings
|
||||
pref_reset_summary=Clear all preferences for this Kavita instance
|
||||
|
||||
pref_filters_title=Default Filters
|
||||
pref_filters_summary=Select which filters appear by default
|
||||
pref_allowed_libraries_feed_title=Allowed Libraries on Latest/Popular Feeds & Suggestions
|
||||
pref_allowed_libraries_feed_summary=Select which libraries appear in the Latest/Popular Feeds & Suggestions (Komikku only)
|
||||
|
||||
pref_allowed_libraries_search_title=Allowed Libraries in Search
|
||||
pref_allowed_libraries_search_summary=Select which libraries appear in search results
|
||||
|
||||
pref_chapter_title_format_title=Chapter Title Format
|
||||
pref_chapter_title_format_summary=Customize chapter titles using variables\nCurrent: %s
|
||||
pref_chapter_title_format_dialog=Available variables: (Make sure to remove the {} around like the default)\n\n\n\${Type} - Chapter/Episode/Volume/Issue/Special\n\${No} - Chapter number\n\${Title} - Original chapter title\n\${CleanTitle} - Custom-cleaned chapter title (default)\n\${Pages} - Number of pages\n\${Size} - File size\n\${Volume} - Volume number (If available)\n\${SeriesName} - Series name\n\${LibraryName} - Library name\n\${Format} - File format (CBZ, PDF, etc.)\n\${Created} - Creation date\n\${ReleaseDate} - Release date
|
||||
|
||||
pref_scanlator_format_title=Scanlator Format
|
||||
pref_scanlator_format_summary=Customize scanlator field using variables\nCurrent: %s
|
||||
pref_scanlator_format_dialog=Available variables: (? remove the {} around like the default)\n\n\n\${Type} - Chapter/Episode/Volume/Issue/Special (default)\n\${No} - Chapter number\n\${Title} - Original chapter title\n\${CleanTitle} - Custom-cleaned chapter title\n\${Pages} - Number of pages\n\${Size} - File size\n\${Volume} - Volume number (If available)\n\${SeriesName} - Series name\n\${LibraryName} - Library name\n\${Format} - File format (CBZ, PDF, etc.)\n\${Created} - Creation date\n\${ReleaseDate} - Release date
|
||||
|
||||
|
||||
# ============== #
|
||||
# OPDS Setup #
|
||||
# ============== #
|
||||
pref_opds_must_setup_address=OPDS URL required for connection
|
||||
pref_opds_badformed_url=Invalid OPDS address\nCopy from: User Settings > API Key / OPDS > OPDS URL (settings#clients)
|
||||
pref_opds_duplicated_source_url=URL already used in another source:
|
||||
pref_opds_must_setup_address=OPDS URL required\nPlease configure your Kavita server connection
|
||||
pref_opds_badformed_url=nvalid OPDS address format\nGet this from: User Settings ? API Key/OPDS ? OPDS URL (settings#clients)
|
||||
pref_opds_duplicated_source_url=URL already used in another source:
|
||||
pref_opds_summary=Complete OPDS URL including API key\nFormat: http://address:port/opds?apiKey=XXX
|
||||
|
||||
# ============== #
|
||||
# System Messages #
|
||||
# ============== #
|
||||
restartapp_settings=Restart Mihon to apply changes
|
||||
check_version=Requires Kavita v0.8.7+\nIf issues persist, contact support with logs
|
||||
version_exceptions_chapters_parse=Chapter parsing error\nPlease report with logs
|
||||
version_exceptions_smart_filter=Smart Filter error\nRequires Kavita v0.7.11+
|
||||
check_version=Requires Kavita v0.8.7 or newer\nIf issues persist, open an issue on GitHub
|
||||
version_exceptions_chapters_parse=Failed to parse chapter information\nPlease report this with error logs on Github
|
||||
version_exceptions_smart_filter=Smart filter not supported\nRequires Kavita v0.7.11 or newer
|
||||
|
||||
|
||||
# ============== #
|
||||
@@ -102,6 +116,17 @@ filters_sort_release_date=Release Date
|
||||
filters_sort_read_progress=Read Progress
|
||||
|
||||
# Error messages
|
||||
http_errors_401=Authentication expired\nPlease log in again
|
||||
http_errors_500=Server error occurred
|
||||
http_errors_400=Bad request - Invalid parameters
|
||||
http_errors_403=Access forbidden - Insufficient permissions
|
||||
http_errors_404=Resource not found - The requested item doesn't exist
|
||||
http_errors_429=Too many requests - Please try again later
|
||||
http_errors_502=Bad gateway - Server communication error
|
||||
http_errors_503=Service unavailable - Server is temporarily down
|
||||
filters_error_loading=Failed to load filters
|
||||
filters_empty_list=No filters available
|
||||
|
||||
error_chapter_not_found=Chapter not found in reading list
|
||||
error_no_chapters_found=No chapters found
|
||||
error_invalid_reading_list_item=Invalid reading list item
|
||||
error_failed_parse_chapter=Failed to parse chapter details
|
||||
|
||||
@@ -2,13 +2,16 @@ ext {
|
||||
kmkVersionCode = 1
|
||||
extName = 'Kavita'
|
||||
extClass = '.KavitaFactory'
|
||||
extVersionCode = 20
|
||||
extVersionCode = 21
|
||||
isNsfw = false
|
||||
}
|
||||
|
||||
apply from: "$rootDir/common.gradle"
|
||||
|
||||
dependencies {
|
||||
implementation("org.apache.commons:commons-text:1.11.0")
|
||||
// implementation("org.apache.commons:commons-text:1.14.0")
|
||||
// implementation(libs.lib.i18n)
|
||||
implementation project(':lib:i18n')
|
||||
implementation(libs.commons.text)
|
||||
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -6,67 +6,16 @@ object KavitaConstants {
|
||||
const val UNNUMBERED_VOLUME_STR = "-100000"
|
||||
const val SPECIAL_NUMBER = 100_000
|
||||
const val VOLUME_NUMBER_OFFSET = 10000f
|
||||
|
||||
val PERSON_ROLES = listOf(
|
||||
"Writer", "Penciller", "Inker", "Colorist",
|
||||
"Letterer", "CoverArtist", "Editor",
|
||||
"Publisher", "Character", "Translator",
|
||||
)
|
||||
|
||||
// toggle filters
|
||||
const val toggledFiltersPref = "toggledFilters"
|
||||
val filterPrefEntries = arrayOf(
|
||||
"Sort Options",
|
||||
"Special Lists",
|
||||
"Format",
|
||||
"Libraries",
|
||||
"Read Status",
|
||||
"Genres",
|
||||
"Tags",
|
||||
"Collections",
|
||||
"Languages",
|
||||
"Publication Status",
|
||||
"Rating",
|
||||
"Age Rating",
|
||||
"ReleaseYearRange",
|
||||
"Random",
|
||||
"Read Progress",
|
||||
)
|
||||
val filterPrefEntriesValue = arrayOf(
|
||||
"Sort Options",
|
||||
"Special Lists",
|
||||
"Format",
|
||||
"Libraries",
|
||||
"Read Status",
|
||||
"Genres",
|
||||
"Tags",
|
||||
"Collections",
|
||||
"Languages",
|
||||
"Publication Status",
|
||||
"Rating",
|
||||
"Age Rating",
|
||||
"ReleaseYearRange",
|
||||
"Random",
|
||||
"Read Progress",
|
||||
)
|
||||
val defaultFilterPrefEntries = setOf(
|
||||
"Sort Options",
|
||||
"Special Lists",
|
||||
"Format",
|
||||
"Libraries",
|
||||
"Read Status",
|
||||
"Genres",
|
||||
"Tags",
|
||||
"Collections",
|
||||
"Languages",
|
||||
"Publication Status",
|
||||
"Rating",
|
||||
"Age Rating",
|
||||
"ReleaseYearRange",
|
||||
"Random",
|
||||
"Read Progress",
|
||||
)
|
||||
const val SPECIAL_NUMBER_OFFSET = 10000000000f
|
||||
|
||||
const val customSourceNamePref = "customSourceName"
|
||||
const val noSmartFilterSelected = "No smart filter loaded"
|
||||
|
||||
// Template formatting preferences
|
||||
const val CHAPTER_TITLE_FORMAT_DEFAULT = "\$CleanTitle"
|
||||
const val SCANLATOR_FORMAT_DEFAULT = "\$Type"
|
||||
|
||||
// Library filtering preferences
|
||||
const val allowedLibrariesFeedPref = "allowedLibrariesFeed"
|
||||
const val allowedLibrariesSearchPref = "allowedLibrariesSearch"
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -111,6 +111,7 @@ enum class FilterField(val type: Int) {
|
||||
Team(30),
|
||||
Location(31),
|
||||
ReadLast(32),
|
||||
People(33),
|
||||
;
|
||||
|
||||
companion object {
|
||||
|
||||
@@ -88,11 +88,6 @@ data class SeriesDetailPlusDto(
|
||||
seriesDto?.libraryName
|
||||
}
|
||||
}
|
||||
|
||||
// Helper function to get the library ID from SeriesDto if needed
|
||||
fun getLibraryId(seriesDto: SeriesDto?): Int? {
|
||||
return libraryId ?: seriesDto?.libraryId
|
||||
}
|
||||
}
|
||||
|
||||
@Serializable
|
||||
@@ -253,6 +248,7 @@ data class ChapterDto(
|
||||
val volumeId: Int,
|
||||
val created: String,
|
||||
val lastModifiedUtc: String,
|
||||
val releaseDate: String,
|
||||
val files: List<FileDto>? = null,
|
||||
) {
|
||||
val fileCount: Int
|
||||
@@ -262,6 +258,12 @@ data class ChapterDto(
|
||||
@Serializable
|
||||
data class FileDto(
|
||||
val id: Int,
|
||||
val bytes: Long = 0,
|
||||
val pages: Int = 0,
|
||||
val filePath: String = "",
|
||||
val format: Int = 0,
|
||||
val created: String = "",
|
||||
val extension: String = "",
|
||||
)
|
||||
|
||||
@Serializable
|
||||
|
||||
Reference in New Issue
Block a user