Giter Site home page Giter Site logo

gotson / komga Goto Github PK

View Code? Open in Web Editor NEW
3.4K 35.0 195.0 56.53 MB

Media server for comics/mangas/BDs/magazines/eBooks with API and OPDS support

Home Page: https://komga.org

License: MIT License

Kotlin 63.95% JavaScript 0.08% HTML 0.13% Vue 28.80% TypeScript 6.92% CSS 0.02% Sass 0.01% Smarty 0.09%
kotlin spring-boot ddd api comics docker domain-driven-design opds opds-feed manga

komga's People

Contributors

awh-tokyo avatar cdloh avatar comradekingu avatar dependabot[bot] avatar edwinbadillo avatar ghostbear avatar github-actions[bot] avatar gotson avatar grim7reaper avatar gryffyn avatar jonoafi avatar jwm-evans avatar kofzhanganguo avatar kurocon avatar kussie avatar nathanbnm avatar nigelzor avatar noaione avatar primetoxinz avatar rouhannb avatar semantic-release-bot avatar shadowfied avatar sheigutn avatar snd-r avatar svew avatar ukenn2112 avatar wccrawford avatar weblate avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

komga's Issues

Collections

Ability to group Series into Collections.

Those collections could be used for different purposes:

  • group related Series, for example from the same universe
  • curate lists, for example reading lists or favorites

Collections should be manually managed by each user.

Collections could also be shareable, but the details of this need to be refined.

Expected behavior:

  • Only admin users can create, update, and delete collections
  • All users can see collections, limited by the libraries they are authorized on
  • When refreshing metadata, the SeriesGroup field from ComicInfo.xml should be used to generate a collection if it doesn't exist, or add the series to an existing collection see #210

Full text search

Replace the existing search which is quite limited.

Should implement the following features:

  • search on multiple words
  • fuzzy search
  • ignore accented characters
  • order results by relevance

Search results page

At the moment the search results are limited, and displayed in the popup under the search box.

Expected behavior:

  • when pressing Enter in the search box, the user should be redirected to the Search Results page
  • a link to the search results page should be shown in the popup if there are too many results
  • the search results page should show all results

Series sorting

Add sorting criterias when browsing/searching for series in Tachiyomi extension.

Criterias should include:

  • name
  • creation date
  • last updated date

Exclude directories during scan

The file scanner currently excludes hidden directories, but it is not enough on some file systems. For example Synology has directories #recycle or @eaDir that would need to be excluded.

A feature to exclude other directories could address this.

Numbering for series with unusual issue numbering

I noticed that a series with either missing issues, strange issue numbers (like the 1.MU books) or series that didn't start with #1 (G.I. Joe ARAH) are numbered 1-XXX inconsistently from their actual issue number.

Wasn't sure if this was intended behavior.

Rar 5

Hi, whats the solution to get CBR Comics/Mangas of RAR Version 5 to work?

System: Raspbian
Error Log:

2020-01-03 11:47:13.876 INFO 27592 --- [analyzeBookTaskExecutor-1] o.g.komga.domain.service.BookLifecycle : Analyze and persist book: /path/to/manga.cbr
2020-01-03 11:47:13.877 INFO 27592 --- [analyzeBookTaskExecutor-1] o.g.komga.domain.service.BookAnalyzer : Trying to analyze book: /path/to/manga.cbr
2020-01-03 11:47:13.911 INFO 27592 --- [analyzeBookTaskExecutor-1] o.g.komga.domain.service.BookAnalyzer : Detected media type: application/x-rar-compressed
2020-01-03 11:47:13.916 WARN 27592 --- [analyzeBookTaskExecutor-1] com.github.junrar.Archive : Support for rar version 5 is not yet implemented!
2020-01-03 11:47:13.918 WARN 27592 --- [analyzeBookTaskExecutor-1] com.github.junrar.Archive : exception in archive constructor maybe file is encrypted, corrupt or support not yet implemented

com.github.junrar.exception.RarException: unsupportedRarArchive
at com.github.junrar.Archive.readHeaders(Archive.java:298) [junrar-4.0.0.jar!/:na]
at com.github.junrar.Archive.setFile(Archive.java:169) [junrar-4.0.0.jar!/:na]
at com.github.junrar.Archive.setVolume(Archive.java:648) [junrar-4.0.0.jar!/:na]
at com.github.junrar.Archive.(Archive.java:124) [junrar-4.0.0.jar!/:na]
at com.github.junrar.Archive.(Archive.java:160) [junrar-4.0.0.jar!/:na]
at org.gotson.komga.infrastructure.archive.RarExtractor.getPagesList(RarExtractor.kt:15) [classes!/:na]
at org.gotson.komga.domain.service.BookAnalyzer.analyze(BookAnalyzer.kt:48) [classes!/:na]
at org.gotson.komga.domain.service.BookLifecycle.analyzeAndPersist(BookLifecycle.kt:35) [classes!/:na]
at org.gotson.komga.domain.service.BookLifecycle$$FastClassBySpringCGLIB$$6608c007.invoke() [classes!/:na]
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) [spring-core-5.2.2.RELEASE.jar!/:5.2.2.RELEASE]
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:769) [spring-aop-5.2.2.RELEASE.jar!/:5.2.2.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) [spring-aop-5.2.2.RELEASE.jar!/:5.2.2.RELEASE]
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747) [spring-aop-5.2.2.RELEASE.jar!/:5.2.2.RELEASE]
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:366) ~[spring-tx-5.2.2.RELEASE.jar!/:5.2.2.RELEASE]
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:99) ~[spring-tx-5.2.2.RELEASE.jar!/:5.2.2.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) [spring-aop-5.2.2.RELEASE.jar!/:5.2.2.RELEASE]
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747) [spring-aop-5.2.2.RELEASE.jar!/:5.2.2.RELEASE]
at org.springframework.aop.interceptor.AsyncExecutionInterceptor.lambda$invoke$0(AsyncExecutionInterceptor.java:115) ~[spring-aop-5.2.2.RELEASE.jar!/:5.2.2.RELEASE]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[na:1.8.0_232]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[na:1.8.0_232]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[na:1.8.0_232]
at java.lang.Thread.run(Thread.java:748) ~[na:1.8.0_232]

2020-01-03 11:47:13.933 ERROR 27592 --- [analyzeBookTaskExecutor-1] o.g.komga.domain.service.BookLifecycle : Error while parsing. Book: /path/to/manga.cbr

Extension does not install

Hi

I am not sure if this is a Tachiyomi issue or Komga issue so posting it here first. When I try to download the extension, it says downloading and never finishes downloading, it never installs it

thanks

Analyze book on demand

Given some analyzing capabilities are added form times to times (see #50), it would be nice to be able to re-analyze a book that was not properly analyzed before.

Re-analyzing would:

  • analyze the whole book again, with all of it's pages
  • regenerate the thumbnail

It should also invalidate the HTTP cache for thumbnails and pages.

In addition, it would be nice to be able to re-analyze series, or a complete library.

Very slow and unresponsive on Raspberry Pi 4

I like komga very much and tried running it on a Raspberry Pi 4. This is the output from java -Xms256m -Xmx512m -jar komga-0.9.0.jar

LOGBACK: No context given for c.q.l.core.rolling.SizeAndTimeBasedRollingPolicy@23409366
 ____  __.
|    |/ _|____   _____    _________
|      < /  _ \ /     \  / ___\__  \
|    |  (  <_> )  Y Y  \/ /_/  > __ \_
|____|__ \____/|__|_|  /\___  (____  /
        \/           \//_____/     \/

Version: 0.9.0

2019-12-14 07:59:45.654  INFO 5014 --- [           main] org.gotson.komga.ApplicationKt           : Starting ApplicationKt on vulcan with PID 5014 (/home/yannick/komga/komga-0.9.0.jar started by yannick in /home/yannick/komga)
2019-12-14 07:59:45.848  INFO 5014 --- [           main] org.gotson.komga.ApplicationKt           : The following profiles are active: prod,flyway
2019-12-14 08:01:22.881  INFO 5014 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data repositories in DEFAULT mode.
2019-12-14 08:01:30.955  INFO 5014 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 7554ms. Found 5 repository interfaces.
2019-12-14 08:02:07.811  INFO 5014 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2019-12-14 08:02:11.231  INFO 5014 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration' of type [org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2019-12-14 08:02:11.447  INFO 5014 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'objectPostProcessor' of type [org.springframework.security.config.annotation.configuration.AutowireBeanFactoryObjectPostProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2019-12-14 08:02:11.595  INFO 5014 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler@1fe57a9' of type [org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2019-12-14 08:02:11.616  INFO 5014 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration' of type [org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2019-12-14 08:02:11.891  INFO 5014 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'methodSecurityMetadataSource' of type [org.springframework.security.access.method.DelegatingMethodSecurityMetadataSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2019-12-14 08:02:32.486  INFO 5014 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
2019-12-14 08:02:33.292  INFO 5014 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2019-12-14 08:02:33.295  INFO 5014 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.27]
2019-12-14 08:02:38.469  INFO 5014 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2019-12-14 08:02:38.472  INFO 5014 --- [           main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 168778 ms
2019-12-14 08:02:46.520  INFO 5014 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Starting...
2019-12-14 08:02:54.722  INFO 5014 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Start completed.
2019-12-14 08:02:54.976  INFO 5014 --- [           main] o.s.b.a.h2.H2ConsoleAutoConfiguration    : H2 console available at '/h2-console'. Database available at 'jdbc:h2:./komga-database.h2'
2019-12-14 08:03:14.554  INFO 5014 --- [           main] o.f.c.internal.license.VersionPrinter    : Flyway Community Edition 6.0.8 by Redgate
2019-12-14 08:03:15.387  INFO 5014 --- [           main] o.f.c.internal.database.DatabaseFactory  : Database: jdbc:h2:./komga-database.h2 (H2 1.4)
2019-12-14 08:03:16.052  WARN 5014 --- [           main] o.f.c.internal.database.base.Database    : Flyway upgrade recommended: H2 1.4.200 is newer than this version of Flyway and support has not been tested. The latest supported version of H2 is 1.4.199.
2019-12-14 08:03:17.055  INFO 5014 --- [           main] o.f.core.internal.command.DbValidate     : Successfully validated 15 migrations (execution time 00:00.607s)
2019-12-14 08:03:17.285  INFO 5014 --- [           main] o.f.c.i.s.JdbcTableSchemaHistory         : Creating Schema History table "PUBLIC"."flyway_schema_history" ...
2019-12-14 08:03:18.121  INFO 5014 --- [           main] o.f.core.internal.command.DbMigrate      : Current version of schema "PUBLIC": << Empty Schema >>
2019-12-14 08:03:18.380  INFO 5014 --- [           main] o.f.core.internal.command.DbMigrate      : Migrating schema "PUBLIC" to version 20190819161603 - First Version
2019-12-14 08:03:18.941  INFO 5014 --- [           main] o.f.core.internal.command.DbMigrate      : Migrating schema "PUBLIC" to version 20190906100609 - regenerate webp covers
2019-12-14 08:03:19.373  INFO 5014 --- [           main] o.f.core.internal.command.DbMigrate      : Migrating schema "PUBLIC" to version 20190906152334 - reparse pdf files
2019-12-14 08:03:19.777  INFO 5014 --- [           main] o.f.core.internal.command.DbMigrate      : Migrating schema "PUBLIC" to version 20190907104615 - reparse pdf files
2019-12-14 08:03:20.179  INFO 5014 --- [           main] o.f.core.internal.command.DbMigrate      : Migrating schema "PUBLIC" to version 20190907143337 - reparse pdf files
2019-12-14 08:03:20.553  INFO 5014 --- [           main] o.f.core.internal.command.DbMigrate      : Migrating schema "PUBLIC" to version 20190910082852 - rescan series
2019-12-14 08:03:21.001  INFO 5014 --- [           main] o.f.core.internal.command.DbMigrate      : Migrating schema "PUBLIC" to version 20190926112211 - library entity
2019-12-14 08:03:21.523  INFO 5014 --- [           main] o.f.core.internal.command.DbMigrate      : Migrating schema "PUBLIC" to version 20190926114415 - create library from series
2019-12-14 08:03:23.015  INFO 5014 --- [           main] o.f.core.internal.command.DbMigrate      : Migrating schema "PUBLIC" to version 20190927132225 - serie library id not null
2019-12-14 08:03:23.454  INFO 5014 --- [           main] o.f.core.internal.command.DbMigrate      : Migrating schema "PUBLIC" to version 20191008135338 - rename serie to series
2019-12-14 08:03:23.872  INFO 5014 --- [           main] o.f.core.internal.command.DbMigrate      : Migrating schema "PUBLIC" to version 20191010153833 - delete thumbnails to force regeneration in jpeg
2019-12-14 08:03:24.318  INFO 5014 --- [           main] o.f.core.internal.command.DbMigrate      : Migrating schema "PUBLIC" to version 20191014143703 - user entity
2019-12-14 08:03:24.805  INFO 5014 --- [           main] o.f.core.internal.command.DbMigrate      : Migrating schema "PUBLIC" to version 20191021101906 - user library sharing
2019-12-14 08:03:25.323  INFO 5014 --- [           main] o.f.core.internal.command.DbMigrate      : Migrating schema "PUBLIC" to version 20191029153618 - book filesize
2019-12-14 08:03:25.831  INFO 5014 --- [           main] o.f.core.internal.command.DbMigrate      : Migrating schema "PUBLIC" to version 20191122164159 - book number
2019-12-14 08:03:26.524  INFO 5014 --- [           main] o.f.core.internal.command.DbMigrate      : Successfully applied 15 migrations to schema "PUBLIC" (execution time 00:08.555s)
2019-12-14 08:03:33.761  INFO 5014 --- [           main] o.hibernate.jpa.internal.util.LogHelper  : HHH000204: Processing PersistenceUnitInfo [name: default]
2019-12-14 08:03:41.127  INFO 5014 --- [           main] org.hibernate.Version                    : HHH000412: Hibernate Core {5.4.8.Final}
2019-12-14 08:04:01.430  INFO 5014 --- [           main] o.hibernate.annotations.common.Version   : HCANN000001: Hibernate Commons Annotations {5.1.0.Final}
2019-12-14 08:04:12.467  INFO 5014 --- [           main] org.hibernate.dialect.Dialect            : HHH000400: Using dialect: org.hibernate.dialect.H2Dialect
2019-12-14 08:05:01.645  INFO 5014 --- [           main] o.h.e.t.j.p.i.JtaPlatformInitiator       : HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
2019-12-14 08:05:02.182  INFO 5014 --- [           main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2019-12-14 08:05:10.050  INFO 5014 --- [           main] o.g.k.i.image.ImageConverter             : Supported read formats: [JPG, jpg, tiff, bmp, BMP, bigtiff, gif, GIF, WBMP, png, PNG, BIGTIFF, JPEG, JPEG-LOSSLESS, webp, BigTIFF, tif, TIF, TIFF, jpeg, wbmp, jpeg-lossless]
2019-12-14 08:05:10.056  INFO 5014 --- [           main] o.g.k.i.image.ImageConverter             : Supported read mediaTypes: [image/png, image/vnd.wap.wbmp, image/x-png, image/jpeg, image/tiff, image/x-tiff, image/bmp, image/gif, image/webp]
2019-12-14 08:05:10.061  INFO 5014 --- [           main] o.g.k.i.image.ImageConverter             : Supported write formats: [JPG, jpg, tiff, bmp, BMP, gif, GIF, WBMP, png, PNG, JPEG, tif, TIF, TIFF, wbmp, jpeg]
2019-12-14 08:05:10.067  INFO 5014 --- [           main] o.g.k.i.image.ImageConverter             : Supported write mediaTypes: [image/vnd.wap.wbmp, image/png, image/x-png, image/jpeg, image/tiff, image/x-tiff, image/bmp, image/gif]
2019-12-14 08:05:39.858  WARN 5014 --- [           main] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning
2019-12-14 08:06:31.454  INFO 5014 --- [           main] o.s.b.a.e.web.EndpointLinksResolver      : Exposing 16 endpoint(s) beneath base path '/actuator'
2019-12-14 08:06:39.218  INFO 5014 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'parseBookTaskExecutor'
2019-12-14 08:06:39.693  INFO 5014 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'periodicScanTaskExecutor'
2019-12-14 08:06:39.736  INFO 5014 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'regenerateThumbnailsTaskExecutor'
2019-12-14 08:06:40.806  INFO 5014 --- [           main] pertySourcedRequestMappingHandlerMapping : Mapped URL path [/v2/api-docs] onto method [springfox.documentation.swagger2.web.Swagger2Controller#getDocumentation(String, HttpServletRequest)]
2019-12-14 08:06:51.225  INFO 5014 --- [           main] o.s.s.web.DefaultSecurityFilterChain     : Creating filter chain: Ant [pattern='/error**'], []
2019-12-14 08:06:51.228  INFO 5014 --- [           main] o.s.s.web.DefaultSecurityFilterChain     : Creating filter chain: Ant [pattern='/css/**'], []
2019-12-14 08:06:51.230  INFO 5014 --- [           main] o.s.s.web.DefaultSecurityFilterChain     : Creating filter chain: Ant [pattern='/img/**'], []
2019-12-14 08:06:51.233  INFO 5014 --- [           main] o.s.s.web.DefaultSecurityFilterChain     : Creating filter chain: Ant [pattern='/js/**'], []
2019-12-14 08:06:51.235  INFO 5014 --- [           main] o.s.s.web.DefaultSecurityFilterChain     : Creating filter chain: Ant [pattern='/favicon.ico'], []
2019-12-14 08:06:51.237  INFO 5014 --- [           main] o.s.s.web.DefaultSecurityFilterChain     : Creating filter chain: Ant [pattern='/'], []
2019-12-14 08:06:51.240  INFO 5014 --- [           main] o.s.s.web.DefaultSecurityFilterChain     : Creating filter chain: Ant [pattern='/index.html'], []
2019-12-14 08:06:55.048  INFO 5014 --- [           main] o.s.b.a.w.s.WelcomePageHandlerMapping    : Adding welcome page: class path resource [public/index.html]
2019-12-14 08:07:06.222  INFO 5014 --- [           main] o.s.s.web.DefaultSecurityFilterChain     : Creating filter chain: any request, [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@1526f71, org.springframework.security.web.context.SecurityContextPersistenceFilter@13da830, org.springframework.security.web.header.HeaderWriterFilter@f4f8f2, org.springframework.web.filter.CorsFilter@1ca94a9, org.springframework.security.web.authentication.logout.LogoutFilter@12d1782, org.springframework.security.web.session.ConcurrentSessionFilter@f730b2, org.gotson.komga.infrastructure.security.LoggingBasicAuthFilter@1ab310b, org.springframework.security.web.authentication.www.BasicAuthenticationFilter@1c93d16, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@1658133, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@1fd62b, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@140de43, org.springframework.security.web.session.SessionManagementFilter@a72ecd, org.springframework.security.web.access.ExceptionTranslationFilter@166f664, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@7ae90c]
2019-12-14 08:07:25.142  INFO 5014 --- [           main] o.s.s.c.ThreadPoolTaskScheduler          : Initializing ExecutorService 'taskScheduler'
2019-12-14 08:07:28.324  INFO 5014 --- [           main] d.s.w.p.DocumentationPluginsBootstrapper : Context refreshed
2019-12-14 08:07:30.742  INFO 5014 --- [           main] d.s.w.p.DocumentationPluginsBootstrapper : Found 1 custom documentation plugin(s)
2019-12-14 08:07:34.949  INFO 5014 --- [           main] s.d.s.w.s.ApiListingReferenceScanner     : Scanning for api listing references
2019-12-14 08:07:47.706  INFO 5014 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getBookFileUsingGET_1
2019-12-14 08:07:47.837  INFO 5014 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getBookFileFromSeriesUsingGET_1
2019-12-14 08:07:50.377  INFO 5014 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getLatestSeriesUsingGET_1
2019-12-14 08:07:51.028  INFO 5014 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: handleUsingGET_1
2019-12-14 08:07:51.124  INFO 5014 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: handleUsingDELETE_1
2019-12-14 08:07:51.171  INFO 5014 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: handleUsingGET_2
2019-12-14 08:07:51.220  INFO 5014 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: handleUsingGET_3
2019-12-14 08:07:51.269  INFO 5014 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: handleUsingGET_4
2019-12-14 08:07:51.318  INFO 5014 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: handleUsingGET_5
2019-12-14 08:07:51.367  INFO 5014 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: handleUsingGET_6
2019-12-14 08:07:51.421  INFO 5014 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: handleUsingGET_7
2019-12-14 08:07:51.470  INFO 5014 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: handleUsingGET_8
2019-12-14 08:07:51.519  INFO 5014 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: handleUsingGET_9
2019-12-14 08:07:51.567  INFO 5014 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: handleUsingGET_10
2019-12-14 08:07:51.616  INFO 5014 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: handleUsingGET_11
2019-12-14 08:07:51.666  INFO 5014 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: handleUsingGET_12
2019-12-14 08:07:51.714  INFO 5014 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: handleUsingGET_13
2019-12-14 08:07:51.761  INFO 5014 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: handleUsingGET_14
2019-12-14 08:07:51.854  INFO 5014 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: handleUsingGET_15
2019-12-14 08:07:51.903  INFO 5014 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: handleUsingGET_16
2019-12-14 08:07:51.952  INFO 5014 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: handleUsingGET_17
2019-12-14 08:07:52.002  INFO 5014 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: handleUsingGET_18
2019-12-14 08:07:52.051  INFO 5014 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: handleUsingGET_19
2019-12-14 08:07:52.105  INFO 5014 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: handleUsingGET_20
2019-12-14 08:07:52.735  INFO 5014 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getAllSeriesUsingGET_1
2019-12-14 08:07:52.824  INFO 5014 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getLatestSeriesUsingGET_2
2019-12-14 08:07:52.886  INFO 5014 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getOneSeriesUsingGET_1
2019-12-14 08:07:53.330  INFO 5014 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addOneUsingPOST_1
2019-12-14 08:07:53.616  INFO 5014 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getAllUsingGET_1
2019-12-14 08:07:56.694  INFO 5014 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2019-12-14 08:07:56.717  INFO 5014 --- [           main] org.gotson.komga.ApplicationKt           : Started ApplicationKt in 533.304 seconds (JVM running for 550.357)
2019-12-14 08:07:57.339  INFO 5014 --- [nTaskExecutor-1] o.g.k.domain.service.AsyncOrchestrator   : Starting periodic libraries scan
2019-12-14 08:07:57.339  INFO 5014 --- [sTaskExecutor-1] o.g.k.domain.service.AsyncOrchestrator   : Regenerate missing thumbnails
2019-12-14 08:08:06.206  INFO 5014 --- [nTaskExecutor-1] o.g.k.domain.service.AsyncOrchestrator   : No libraries defined, nothing to scan
2019-12-14 08:08:06.217  INFO 5014 --- [           main] o.g.k.i.scheduler.InitialUserController  : No users exist in database, creating initial users
2019-12-14 08:08:06.971  INFO 5014 --- [sTaskExecutor-1] o.g.k.domain.service.AsyncOrchestrator   : Generated 0 thumbnails in 00:00:00.000 (virtual: 00:00:00.000)
2019-12-14 08:08:22.385  INFO 5014 --- [           main] o.g.k.i.s.KomgaUserDetailsLifecycle      : Created user: [email protected], roles: [ADMIN]
2019-12-14 08:08:25.536  INFO 5014 --- [           main] o.g.k.i.scheduler.InitialUserController  : Initial user created. Login: [email protected], Password: rTdrf3Vw5HFF
2019-12-14 08:08:40.696  INFO 5014 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet'
2019-12-14 08:08:40.698  INFO 5014 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
2019-12-14 08:08:41.205  INFO 5014 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 504 ms
2019-12-14 08:09:23.789  INFO 5014 --- [nio-8080-exec-5] o.g.k.i.security.LoggingBasicAuthFilter  : Authentication success for user: [email protected], RequestInfo(ip=10.182.72.38, userAgent=Mozilla/5.0 (X11; Linux x86_64; rv:71.0) Gecko/20100101 Firefox/71.0, method=GET, url=http://vulcan:8080/api/v1/users/me, query=null)
2019-12-14 08:09:30.204  INFO 5014 --- [nio-8080-exec-8] o.g.k.i.security.LoggingBasicAuthFilter  : Authentication success for user: [email protected], RequestInfo(ip=10.182.72.38, userAgent=Mozilla/5.0 (X11; Linux x86_64; rv:71.0) Gecko/20100101 Firefox/71.0, method=GET, url=http://vulcan:8080/api/v1/users/me, query=null)
2019-12-14 08:10:14.247  INFO 5014 --- [nio-8080-exec-8] o.g.k.i.s.KomgaUserDetailsLifecycle      : Created user: [email protected], roles: [ADMIN]
2019-12-14 08:10:21.555  INFO 5014 --- [nio-8080-exec-2] o.g.k.i.s.KomgaUserDetailsLifecycle      : Deleting user: [email protected]
2019-12-14 08:10:21.735  INFO 5014 --- [nio-8080-exec-2] o.g.k.i.s.KomgaUserDetailsLifecycle      : Expiring all sessions for user: [email protected]
2019-12-14 08:10:21.742  INFO 5014 --- [nio-8080-exec-2] o.g.k.i.s.KomgaUserDetailsLifecycle      : Expiring session: 4D714A18CA831D8201BBCA3FF0C9F1DE
2019-12-14 08:10:21.745  INFO 5014 --- [nio-8080-exec-2] o.g.k.i.s.KomgaUserDetailsLifecycle      : Expiring session: F44219D573CFB2C30F4A306664094626
^C2019-12-14 08:11:25.953  INFO 5014 --- [extShutdownHook] o.s.s.c.ThreadPoolTaskScheduler          : Shutting down ExecutorService 'taskScheduler'
2019-12-14 08:11:26.010  INFO 5014 --- [extShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor  : Shutting down ExecutorService 'regenerateThumbnailsTaskExecutor'
2019-12-14 08:11:26.016  INFO 5014 --- [extShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor  : Shutting down ExecutorService 'periodicScanTaskExecutor'
2019-12-14 08:11:26.023  INFO 5014 --- [extShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor  : Shutting down ExecutorService 'parseBookTaskExecutor'
2019-12-14 08:11:26.392  INFO 5014 --- [extShutdownHook] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default'
2019-12-14 08:11:26.442  INFO 5014 --- [extShutdownHook] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown initiated...
2019-12-14 08:11:26.458  INFO 5014 --- [extShutdownHook] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown completed.
2019-12-14 08:11:33.800  INFO 5014 --- [nio-8080-exec-9] o.g.k.i.security.LoggingBasicAuthFilter  : Log message invocation failed: java.lang.IllegalStateException: remoteAddr must not be null

As you can see it took 533.304s to start ApplicationKt. Once running it is very unresponsive and uses a lot of system ressources. Am I doing something wrong or is komga simply not optimized for arm7?

Request: Group by Publisher

Just got my library scanned, and I like the layout. I'm going to check the OPDS feed out shortly, but I am looking forward to seeing the web reader.

I noticed you mentioned Collections as a work in progress, but I'd also like to suggest that you make it possible to group by publisher, both for browsing on the web and as an opds category.

I was also wondering, I'm using the docker installation. Are the thumbnails being stored in the database directly, or are they being saved as a file somewhere?

User management

The 2 built-in users are limited, having proper user management would help to increase security, and enable other use cases like personal history or access logs.

HTTP cache for thumbnails and pages

Handle the HTTP cache properly for dynamic resources: thumbnails and pages.

Current behavior:

  • thumbnails are cached for 4h
  • pages are not cached

The HTTP cache should use Last-Modified and If-Modified-Since to always serve up-to-date content, but never process/send data if the underlying book file has not changed.

Remember me option on login

The current session management, even though expiry is set at 7 days, doesn't always work.

Chrome Android in particular asks for login every time.

A specific remember me mechanism should solve this issue.

Integration with manga-py, gallery-dl [request]

manga-py

  • There is a manga downloader manga-py which supports downloading manga from a lot of websites.
  • It can download each chapter as zip or cbz formats.
  • Also provides a Dockerfile.

gallery-dl

  • This is a similar but a more popular one.
  • It supports many sites like Instagram, DeviantArt, Pinterest etc.

Request:

  • I think these go very well with komga.
  • It would be nice if Readme has some examples on how to use them with komga.

How to get and configure the Tachiyomi extension with Komga?

So I did a docker-compose up with this docker-compose.yml

---
version: '3'
services:
nestor:
image: gotson/komga
container_name: komga
volumes:
- ~/opt/appdata/komga:/config
- /mnt/nas/media/Books/:/books
- /etc/timezone:/etc/timezone:ro
ports:
- 8090:8080
environment:
- SPRING_PROFILES_ACTIVE=prod
- SPRING_DATASOURCE_URL=jdbc:h2:/config/database.h2;DB_CLOSE_DELAY=-1
- KOMGA_ROOT_FOLDER=/books
- KOMGA_ROOT_FOLDER_SCAN_CRON=0 0 * * * ? # periodic scan every hour
- KOMGA_USER_PASSWORD=your-admin-password
- KOMGA_ADMIN_PASSWORD=your-user-password
restart: unless-stopped

And the server's running on my pc.

How do I connect it to the android app that's on my mobile? Can you provide an extension apk before the PR gets accepted?

Retrieve metadata from online sources

Mimicking Plex, Komga could manage metadata for series and books, and retrieve metadata from online providers.

See also #48 for manual metadata edition.

Potential providers:

In addition Komga should be able to:

  • Manually override metadata that was retrieved from online sources

use new endpoints

Following version 0.9.0 Tachiyomi extension should be updated to use the /books/{bookId} endpoints instead of the deprecated /series/{seriesId}/books/{bookId} endpoints

get Web UI to acceptable standards

It's time to get the Web UI to acceptable standards, in order to prepare for metadata edition.

  • browse Series, either from all libraries, or from specific library
    • with ability to sort by date added, name (asc/desc)
    • showing the total number of Series
  • browse Books within a Series
    • with ability to sort by date added, number (asc/desc)
    • showing the total number of Books
  • browse Book details
    • with ability to download file
  • search bar to search Series or Books
  • get rid of browser's basic auth popup login, and have a login page instead
  • handle http cache properly for static assets
  • show recently added Series/Books on the home page

Request: Don't separate subfolders into their own series

The typical library folder structure looks like this:

- Manga
-- Naruto
--- Volume 1
--- Volume 2
--- Volume 3
...
-- One Piece
--- Volume 1
--- Volume 2
--- Volume 3
...

Komga displays each folder in a library as its own series just like Ubooquity. So far so good.

vivaldi_2020-01-01_21-56-55

The problem is that Komga does not honor the folder structure of folders that have one or multiple subfolders. For example, the manga Kaiji has several parts which are separated into different subfolders like this:

- Manga
-- Kaiji
--- 01. Part 1
---- Volume 1
---- Volume 2
---- Volume 3
...
--- 02. Part 2
---- Volume 1
---- Volume 2
---- Volume 3
...

Instead of displaying Kaiji as one series with one folder icon and showing you the five subfolders when you click on the icon the way Ubooquity does it, each subfolder is displayed as if it were its own series in the library overview:

vivaldi_2020-01-01_22-13-47

This leads to a messy overview, especially if you have multiple series with subfolders:

vivaldi_2020-01-01_22-18-30

Features roadmap

Here is a list of upcoming features i would like to add to Komga.

If you would like to see a feature that is not part of the list, please open an issue.

Next

  • full text search that can handle accented characters, and order results by relevance. (#24)
  • read status for books, with possibility to manually mark as read/unread from the UI for a book or a whole series. (#25)

Backlog (in no particular order)

  • show all the books in error with error details in one place (admin only) (#26)
  • metadata management (#11)
  • proper handling of the HTTP cache for thumbnails and pages. Those images should be cached until change. (#27)
  • webreader. That would bring Komga at par with Ubooquity. (#28)
  • move library management (add/delete, view path) to Server Settings
  • add result page for search, when search results cannot fit all in the popup (#29)
  • add ability to group Series into Collections. These will be used to group related items (same universe), or to curate lists (reading list, favorites). (#30)
  • [Tachiyomi] use book numbers instead of list index for chapters (#32)
  • [Tachiyomi] use new API endpoints /books (#31)
  • [Tachiyomi] offer sorting options for Series (#33)

Done

  • show all books in the web UI, not just the ones in ready state (4909fb6)
  • hide full path of series/books to non-admin (in the API) (42d6391)
  • add endpoint aliases so that all opds feed urls use the same base path /opds (37fa1d0)
  • backend performance enhancements (v0.9.1)

Unclear OS compatibility information, no CUI/GUI on Fat Jar execution

I first want to thank you for what you are attempting/executing.I have followed other's work on the creation of comic servers namely Tachiyomi-Server (only a client, actually), ubooqity, HappyPanda-X (Most Detailed Metadata+Search), ComicRack. It is awesome to see someone finally adding this func. to Tachiyomi

Even though I kind of settled with Happypanda-X/ComicRack lately, I would like to take this application for a spin, I run Windows 10 Home on the PC that holds my comics. Docker, unfortunately is only Windows 10 Pro. Using the jar, does absolutely nothing, as far as I can tell.

I can also run Ubuntu live on my laptop, and am currently wrangling with wrapping my head getting the container to be created and starting the application.

So I guess my request would be for clearer documentation so that I can know what the application looks like when its running. This might just me being ingorant/dumb, if so my apologies.

Cannot get it to run.

Hey, I wanted to set komga up using docker, but unfortunately this doesnt work.

I use docker-swarm, i dont think this is the reason it doesn't work, so here is my docker-compose file:

version: '3.7'
services:
  komga:
    image: gotson/komga
    volumes:
      - komga_config:/config
      - /mnt/nas/media/manga:/books
      - /etc/timezone:/etc/timezone:ro
    ports:
      - 5030:8080
    networks:
      - public
    user: "1000:1000"
    environment: 
      - KOMGA_LIBRARIES_SCAN_DIRECTORY_EXCLUSIONS=#recycle,@eaDir
    deploy:
      placement:
        constraints:
          - node.hostname == NAS
      labels:
        - traefik.frontend.rule=Host:komga.mydomain.com
        - traefik.enable=true
        - traefik.port=8080
        - traefik.tags=public
        - traefik.docker.network=public
        - traefik.redirectorservice.frontend.entryPoints=http
        - traefik.redirectorservice.frontend.redirect.entryPoint=https
        - traefik.webservice.frontend.entryPoints=https
volumes:
  komga_config:
    driver: local

networks:
  public:
    external: true

And here are the logs i get once i started:

2019-10-22T20:34:37.856170132Z 2019-10-22 22:34:37.855  WARN 1 --- [           main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'flywayInitializer' defined in class path resource [org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration$FlywayConfiguration.class]: Invocation of init method failed; nested exception is org.flywaydb.core.internal.exception.FlywaySqlException: 


2019-10-22T20:34:37.856200116Z Unable to obtain connection from database: IO Exception: null [90028-199]


2019-10-22T20:34:37.856209691Z -------------------------------------------------------------------------


2019-10-22T20:34:37.856217608Z SQL State  : 90028


2019-10-22T20:34:37.856224886Z Error Code : 90028


2019-10-22T20:34:37.856232363Z Message    : IO Exception: null [90028-199]


2019-10-22T20:34:37.856239728Z 


2019-10-22T20:34:37.862091480Z 2019-10-22 22:34:37.861  INFO 1 --- [           main] o.apache.catalina.core.StandardService   : Stopping service [Tomcat]


2019-10-22T20:34:37.877693956Z 2019-10-22 22:34:37.877  INFO 1 --- [           main] ConditionEvaluationReportLoggingListener : 


2019-10-22T20:34:37.877726360Z 


2019-10-22T20:34:37.877730932Z Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.


2019-10-22T20:34:37.879931135Z 2019-10-22 22:34:37.879 ERROR 1 --- [           main] o.s.boot.SpringApplication               : Application run failed


2019-10-22T20:34:37.879954315Z 


2019-10-22T20:34:37.879984471Z org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'flywayInitializer' defined in class path resource [org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration$FlywayConfiguration.class]: Invocation of init method failed; nested exception is org.flywaydb.core.internal.exception.FlywaySqlException: 


2019-10-22T20:34:37.879990285Z Unable to obtain connection from database: IO Exception: null [90028-199]


2019-10-22T20:34:37.879993894Z -------------------------------------------------------------------------


2019-10-22T20:34:37.879997809Z SQL State  : 90028


2019-10-22T20:34:37.880001224Z Error Code : 90028


2019-10-22T20:34:37.880004612Z Message    : IO Exception: null [90028-199]


2019-10-22T20:34:37.880008014Z 


2019-10-22T20:34:37.880011266Z 	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1778) ~[spring-beans-5.1.10.RELEASE.jar:5.1.10.RELEASE]


2019-10-22T20:34:37.880015295Z 	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:593) ~[spring-beans-5.1.10.RELEASE.jar:5.1.10.RELEASE]


2019-10-22T20:34:37.880019118Z 	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:515) ~[spring-beans-5.1.10.RELEASE.jar:5.1.10.RELEASE]


2019-10-22T20:34:37.880023006Z 	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320) ~[spring-beans-5.1.10.RELEASE.jar:5.1.10.RELEASE]


2019-10-22T20:34:37.880026791Z 	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) ~[spring-beans-5.1.10.RELEASE.jar:5.1.10.RELEASE]


2019-10-22T20:34:37.880030649Z 	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318) ~[spring-beans-5.1.10.RELEASE.jar:5.1.10.RELEASE]


2019-10-22T20:34:37.880034385Z 	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) ~[spring-beans-5.1.10.RELEASE.jar:5.1.10.RELEASE]


2019-10-22T20:34:37.880044476Z 	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:307) ~[spring-beans-5.1.10.RELEASE.jar:5.1.10.RELEASE]


2019-10-22T20:34:37.880049107Z 	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) ~[spring-beans-5.1.10.RELEASE.jar:5.1.10.RELEASE]


2019-10-22T20:34:37.880053095Z 	at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1105) ~[spring-context-5.1.10.RELEASE.jar:5.1.10.RELEASE]


2019-10-22T20:34:37.880056968Z 	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867) ~[spring-context-5.1.10.RELEASE.jar:5.1.10.RELEASE]


2019-10-22T20:34:37.880060877Z 	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:549) ~[spring-context-5.1.10.RELEASE.jar:5.1.10.RELEASE]


2019-10-22T20:34:37.880064672Z 	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141) ~[spring-boot-2.1.9.RELEASE.jar:2.1.9.RELEASE]


2019-10-22T20:34:37.880071834Z 	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:744) [spring-boot-2.1.9.RELEASE.jar:2.1.9.RELEASE]


2019-10-22T20:34:37.880075826Z 	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:391) [spring-boot-2.1.9.RELEASE.jar:2.1.9.RELEASE]


2019-10-22T20:34:37.880079609Z 	at org.springframework.boot.SpringApplication.run(SpringApplication.java:312) [spring-boot-2.1.9.RELEASE.jar:2.1.9.RELEASE]


2019-10-22T20:34:37.880083346Z 	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215) [spring-boot-2.1.9.RELEASE.jar:2.1.9.RELEASE]


2019-10-22T20:34:37.880087036Z 	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1204) [spring-boot-2.1.9.RELEASE.jar:2.1.9.RELEASE]


2019-10-22T20:34:37.880090802Z 	at org.gotson.komga.ApplicationKt.main(Application.kt:22) [app/:na]


2019-10-22T20:34:37.880094231Z Caused by: org.flywaydb.core.internal.exception.FlywaySqlException: 


2019-10-22T20:34:37.880097707Z Unable to obtain connection from database: IO Exception: null [90028-199]


2019-10-22T20:34:37.880101156Z -------------------------------------------------------------------------


2019-10-22T20:34:37.880104591Z SQL State  : 90028


2019-10-22T20:34:37.880107907Z Error Code : 90028


2019-10-22T20:34:37.880111324Z Message    : IO Exception: null [90028-199]


2019-10-22T20:34:37.880120310Z 


2019-10-22T20:34:37.880123994Z 	at org.flywaydb.core.internal.jdbc.JdbcUtils.openConnection(JdbcUtils.java:60) ~[flyway-core-5.2.4.jar:na]


2019-10-22T20:34:37.880128267Z 	at org.flywaydb.core.internal.database.DatabaseFactory.createDatabase(DatabaseFactory.java:72) ~[flyway-core-5.2.4.jar:na]


2019-10-22T20:34:37.880132012Z 	at org.flywaydb.core.Flyway.execute(Flyway.java:1670) ~[flyway-core-5.2.4.jar:na]


2019-10-22T20:34:37.880135569Z 	at org.flywaydb.core.Flyway.migrate(Flyway.java:1356) ~[flyway-core-5.2.4.jar:na]


2019-10-22T20:34:37.880139184Z 	at org.springframework.boot.autoconfigure.flyway.FlywayMigrationInitializer.afterPropertiesSet(FlywayMigrationInitializer.java:65) ~[spring-boot-autoconfigure-2.1.9.RELEASE.jar:2.1.9.RELEASE]


2019-10-22T20:34:37.880143051Z 	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1837) ~[spring-beans-5.1.10.RELEASE.jar:5.1.10.RELEASE]


2019-10-22T20:34:37.880146984Z 	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1774) ~[spring-beans-5.1.10.RELEASE.jar:5.1.10.RELEASE]


2019-10-22T20:34:37.880150862Z 	... 18 common frames omitted


2019-10-22T20:34:37.880154314Z Caused by: org.h2.jdbc.JdbcSQLNonTransientException: IO Exception: null [90028-199]


2019-10-22T20:34:37.880157869Z 	at org.h2.message.DbException.getJdbcSQLException(DbException.java:502) ~[h2-1.4.199.jar:1.4.199]


2019-10-22T20:34:37.880161473Z 	at org.h2.message.DbException.getJdbcSQLException(DbException.java:427) ~[h2-1.4.199.jar:1.4.199]


2019-10-22T20:34:37.880167810Z 	at org.h2.message.DbException.get(DbException.java:194) ~[h2-1.4.199.jar:1.4.199]


2019-10-22T20:34:37.880171540Z 	at org.h2.mvstore.db.MVTableEngine$Store.convertIllegalStateException(MVTableEngine.java:197) ~[h2-1.4.199.jar:1.4.199]


2019-10-22T20:34:37.880175231Z 	at org.h2.mvstore.db.MVTableEngine$Store.open(MVTableEngine.java:173) ~[h2-1.4.199.jar:1.4.199]


2019-10-22T20:34:37.880178855Z 	at org.h2.mvstore.db.MVTableEngine.init(MVTableEngine.java:95) ~[h2-1.4.199.jar:1.4.199]


2019-10-22T20:34:37.880182509Z 	at org.h2.engine.Database.getPageStore(Database.java:2739) ~[h2-1.4.199.jar:1.4.199]


2019-10-22T20:34:37.880190891Z 	at org.h2.engine.Database.open(Database.java:769) ~[h2-1.4.199.jar:1.4.199]


2019-10-22T20:34:37.880195070Z 	at org.h2.engine.Database.openDatabase(Database.java:319) ~[h2-1.4.199.jar:1.4.199]


2019-10-22T20:34:37.880198649Z 	at org.h2.engine.Database.<init>(Database.java:313) ~[h2-1.4.199.jar:1.4.199]


2019-10-22T20:34:37.880202388Z 	at org.h2.engine.Engine.openSession(Engine.java:69) ~[h2-1.4.199.jar:1.4.199]


2019-10-22T20:34:37.880205891Z 	at org.h2.engine.Engine.openSession(Engine.java:201) ~[h2-1.4.199.jar:1.4.199]


2019-10-22T20:34:37.880210029Z 	at org.h2.engine.Engine.createSessionAndValidate(Engine.java:178) ~[h2-1.4.199.jar:1.4.199]


2019-10-22T20:34:37.880213688Z 	at org.h2.engine.Engine.createSession(Engine.java:161) ~[h2-1.4.199.jar:1.4.199]


2019-10-22T20:34:37.880217101Z 	at org.h2.engine.Engine.createSession(Engine.java:31) ~[h2-1.4.199.jar:1.4.199]


2019-10-22T20:34:37.880220612Z 	at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:336) ~[h2-1.4.199.jar:1.4.199]


2019-10-22T20:34:37.880224079Z 	at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:169) ~[h2-1.4.199.jar:1.4.199]


2019-10-22T20:34:37.880227673Z 	at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:148) ~[h2-1.4.199.jar:1.4.199]


2019-10-22T20:34:37.880231411Z 	at org.h2.Driver.connect(Driver.java:69) ~[h2-1.4.199.jar:1.4.199]


2019-10-22T20:34:37.880234844Z 	at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:136) ~[HikariCP-3.2.0.jar:na]


2019-10-22T20:34:37.880238401Z 	at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:369) ~[HikariCP-3.2.0.jar:na]


2019-10-22T20:34:37.880241899Z 	at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:198) ~[HikariCP-3.2.0.jar:na]


2019-10-22T20:34:37.880245419Z 	at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:467) ~[HikariCP-3.2.0.jar:na]


2019-10-22T20:34:37.880248923Z 	at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:541) ~[HikariCP-3.2.0.jar:na]


2019-10-22T20:34:37.880252419Z 	at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:115) ~[HikariCP-3.2.0.jar:na]


2019-10-22T20:34:37.880256143Z 	at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112) ~[HikariCP-3.2.0.jar:na]


2019-10-22T20:34:37.880267504Z 	at org.flywaydb.core.internal.jdbc.JdbcUtils.openConnection(JdbcUtils.java:56) ~[flyway-core-5.2.4.jar:na]


2019-10-22T20:34:37.880271732Z 	... 24 common frames omitted


2019-10-22T20:34:37.880275210Z Caused by: java.lang.IllegalStateException: Could not open file nio:/config/database.h2.mv.db [1.4.199/1]


2019-10-22T20:34:37.880278851Z 	at org.h2.mvstore.DataUtils.newIllegalStateException(DataUtils.java:883) ~[h2-1.4.199.jar:1.4.199]


2019-10-22T20:34:37.880282363Z 	at org.h2.mvstore.FileStore.open(FileStore.java:179) ~[h2-1.4.199.jar:1.4.199]


2019-10-22T20:34:37.880285765Z 	at org.h2.mvstore.MVStore.<init>(MVStore.java:390) ~[h2-1.4.199.jar:1.4.199]


2019-10-22T20:34:37.880289463Z 	at org.h2.mvstore.MVStore$Builder.open(MVStore.java:3343) ~[h2-1.4.199.jar:1.4.199]


2019-10-22T20:34:37.880292984Z 	at org.h2.mvstore.db.MVTableEngine$Store.open(MVTableEngine.java:162) ~[h2-1.4.199.jar:1.4.199]


2019-10-22T20:34:37.880296462Z 	... 46 common frames omitted


2019-10-22T20:34:37.880300282Z Caused by: java.io.FileNotFoundException: /config/database.h2.mv.db (Permission denied)


2019-10-22T20:34:37.880303878Z 	at java.io.RandomAccessFile.open0(Native Method) ~[na:1.8.0_232]


2019-10-22T20:34:37.880307352Z 	at java.io.RandomAccessFile.open(RandomAccessFile.java:316) ~[na:1.8.0_232]


2019-10-22T20:34:37.880310866Z 	at java.io.RandomAccessFile.<init>(RandomAccessFile.java:243) ~[na:1.8.0_232]


2019-10-22T20:34:37.880314469Z 	at java.io.RandomAccessFile.<init>(RandomAccessFile.java:124) ~[na:1.8.0_232]


2019-10-22T20:34:37.880319391Z 	at org.h2.store.fs.FileNio.<init>(FilePathNio.java:43) ~[h2-1.4.199.jar:1.4.199]


2019-10-22T20:34:37.880323003Z 	at org.h2.store.fs.FilePathNio.open(FilePathNio.java:23) ~[h2-1.4.199.jar:1.4.199]


2019-10-22T20:34:37.880326509Z 	at org.h2.mvstore.FileStore.open(FileStore.java:153) ~[h2-1.4.199.jar:1.4.199]


2019-10-22T20:34:37.880330011Z 	... 49 common frames omitted


2019-10-22T20:34:37.880338660Z 


Thanks in advance for your assistance.

How to lower memory usage?

Hi
I am using the Docker method and it seems like it is using about 4gb atm

komga 0.34% 3.514GiB / 11.78GiB 29.83%

Is there a way to lower this mem usage beside removing libraries? I was even planning to add more books but as of now I probbaly should not since my system is almost full mem wise after most is used up by Komga.

thanks

Show all books in error

Add a screen to show all the books in error, if possible with a useful error message. This screen would be limited to administrators only.

Request: Show version information in UI

An about page or anything that just shows the current version number would be handy. I updated to the latest docker image this morning, but I can't find the Web Reader, so I'm wondering if the version I'm running has been updated to 0.10.0 or not.

Media analysis fails on ZIP file with exotic charset

I have several manga with Japanese character in the title.
Currently komga shows those manga in the list view but without cover image and when going to the detail pages, it shows "no chapters found" in Tachiyomi and a blank page in the web view.

firefox_LMlDvnR3xv

If I remove non-ascii characters from the title (by renaming the folder & the .zip file in it), everything works again.

No Login options

Hi,

I just installed Komga because I like the interface and want to give it a shot. When I arrive on the welcome page, I don't have any option to log-in, and the account tab shows me an empty email field with the possibility to change the password but does nothing special. I don't think it's normal.
Startup logs are below.

Here is more information about my setup:
VPS Running Debian 9
Using Brave browser
Docker & Docker-compose

Docker-compose.yml:

version: '3.3'
services:
  komga:
    image: gotson/komga
    container_name: komga
    volumes:
      - type: bind
        source: /home/myname/docker/Komga/data/config
        target: /config
      - type: bind
        source: /home/myname/docker/Komga/data/books
        target: /books
      - type: bind
        source: /etc/timezone
        target: /etc/timezone
        read_only: true
    expose:
      - 8080
    environment:
      - PUID=1000
      - GUID=1000
      - KOMGA_LIBRARIES_SCAN_DIRECTORY_EXCLUSIONS=#recycle,@eaDir
      - VIRTUAL_HOST=ebooks.*****.****
      - VIRTUAL_PORT=8080
      - LETSENCRYPT_HOST=ebooks.*****.***
      - VIRTUAL_NETWORK=nginx-proxy

    restart: unless-stopped

networks:
   default:
      external:
        name: reverse

When I do a docker-compose up, here is what I get:

komga    |  ____  __.
komga    | |    |/ _|____   _____    _________
komga    | |      < /  _ \ /     \  / ___\__  \
komga    | |    |  (  <_> )  Y Y  \/ /_/  > __ \_
komga    | |____|__ \____/|__|_|  /\___  (____  /
komga    |         \/           \//_____/     \/
komga    |
komga    | Version: 0.8.1
komga    |
komga    | 2019-11-29 17:35:04.534  INFO 1 --- [           main] org.gotson.komga.ApplicationKt           : Starting ApplicationKt on a7ae8b1564e5 with PID 1 (/app started by root in /)
komga    | 2019-11-29 17:35:04.554  INFO 1 --- [           main] org.gotson.komga.ApplicationKt           : The following profiles are active: prod,flyway,docker
komga    | 2019-11-29 17:35:10.544  INFO 1 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data repositories in DEFAULT mode.
komga    | 2019-11-29 17:35:10.852  INFO 1 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 293ms. Found 5 repository interfaces.
komga    | 2019-11-29 17:35:12.640  INFO 1 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$b1f3c5d4] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
komga    | 2019-11-29 17:35:12.777  INFO 1 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration' of type [org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration$$EnhancerBySpringCGLIB$$4aa18e0e] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
komga    | 2019-11-29 17:35:12.794  INFO 1 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'objectPostProcessor' of type [org.springframework.security.config.annotation.configuration.AutowireBeanFactoryObjectPostProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
komga    | 2019-11-29 17:35:12.807  INFO 1 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler@3711c71c' of type [org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
komga    | 2019-11-29 17:35:12.823  INFO 1 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration' of type [org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration$$EnhancerBySpringCGLIB$$6f7630c0] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
komga    | 2019-11-29 17:35:12.839  INFO 1 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'methodSecurityMetadataSource' of type [org.springframework.security.access.method.DelegatingMethodSecurityMetadataSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
komga    | 2019-11-29 17:35:13.960  INFO 1 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
komga    | 2019-11-29 17:35:14.063  INFO 1 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
komga    | 2019-11-29 17:35:14.066  INFO 1 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.26]
komga    | 2019-11-29 17:35:14.437  INFO 1 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
komga    | 2019-11-29 17:35:14.441  INFO 1 --- [           main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 9630 ms
komga    | 2019-11-29 17:35:16.917  INFO 1 --- [           main] o.f.c.internal.license.VersionPrinter    : Flyway Community Edition 5.2.4 by Boxfuse
komga    | 2019-11-29 17:35:16.956  INFO 1 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Starting...
komga    | 2019-11-29 17:35:18.634  INFO 1 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Start completed.
komga    | 2019-11-29 17:35:18.655  INFO 1 --- [           main] o.f.c.internal.database.DatabaseFactory  : Database: jdbc:h2:/config/database.h2 (H2 1.4)
komga    | 2019-11-29 17:35:18.885  WARN 1 --- [           main] o.f.c.internal.database.base.Database    : Flyway upgrade recommended: H2 1.4.199 is newer than this version of Flyway and support has not been tested.
komga    | 2019-11-29 17:35:19.359  INFO 1 --- [           main] o.f.core.internal.command.DbValidate     : Successfully validated 14 migrations (execution time 00:00.216s)
komga    | 2019-11-29 17:35:19.511  INFO 1 --- [           main] o.f.c.i.s.JdbcTableSchemaHistory         : Creating Schema History table: "PUBLIC"."flyway_schema_history"
komga    | 2019-11-29 17:35:20.500  INFO 1 --- [           main] o.f.core.internal.command.DbMigrate      : Current version of schema "PUBLIC": << Empty Schema >>
komga    | 2019-11-29 17:35:20.517  INFO 1 --- [           main] o.f.core.internal.command.DbMigrate      : Migrating schema "PUBLIC" to version 20190819161603 - First Version
komga    | 2019-11-29 17:35:20.861  INFO 1 --- [           main] o.f.core.internal.command.DbMigrate      : Migrating schema "PUBLIC" to version 20190906100609 - regenerate webp covers
komga    | 2019-11-29 17:35:20.911  INFO 1 --- [           main] o.f.core.internal.command.DbMigrate      : Migrating schema "PUBLIC" to version 20190906152334 - reparse pdf files
komga    | 2019-11-29 17:35:20.977  INFO 1 --- [           main] o.f.core.internal.command.DbMigrate      : Migrating schema "PUBLIC" to version 20190907104615 - reparse pdf files
komga    | 2019-11-29 17:35:21.042  INFO 1 --- [           main] o.f.core.internal.command.DbMigrate      : Migrating schema "PUBLIC" to version 20190907143337 - reparse pdf files
komga    | 2019-11-29 17:35:21.109  INFO 1 --- [           main] o.f.core.internal.command.DbMigrate      : Migrating schema "PUBLIC" to version 20190910082852 - rescan series
komga    | 2019-11-29 17:35:21.173  INFO 1 --- [           main] o.f.core.internal.command.DbMigrate      : Migrating schema "PUBLIC" to version 20190926112211 - library entity
komga    | 2019-11-29 17:35:21.388  INFO 1 --- [           main] o.f.core.internal.command.DbMigrate      : Migrating schema "PUBLIC" to version 20190926114415 - create library from series
komga    | 2019-11-29 17:35:21.554  INFO 1 --- [           main] o.f.core.internal.command.DbMigrate      : Migrating schema "PUBLIC" to version 20190927132225 - serie library id not null
komga    | 2019-11-29 17:35:21.626  INFO 1 --- [           main] o.f.core.internal.command.DbMigrate      : Migrating schema "PUBLIC" to version 20191008135338 - rename serie to series
komga    | 2019-11-29 17:35:21.707  INFO 1 --- [           main] o.f.core.internal.command.DbMigrate      : Migrating schema "PUBLIC" to version 20191010153833 - delete thumbnails to force regeneration in jpeg
komga    | 2019-11-29 17:35:21.799  INFO 1 --- [           main] o.f.core.internal.command.DbMigrate      : Migrating schema "PUBLIC" to version 20191014143703 - user entity
komga    | 2019-11-29 17:35:21.885  INFO 1 --- [           main] o.f.core.internal.command.DbMigrate      : Migrating schema "PUBLIC" to version 20191021101906 - user library sharing
komga    | 2019-11-29 17:35:22.008  INFO 1 --- [           main] o.f.core.internal.command.DbMigrate      : Migrating schema "PUBLIC" to version 20191029153618 - book filesize
komga    | 2019-11-29 17:35:22.108  INFO 1 --- [           main] o.f.core.internal.command.DbMigrate      : Successfully applied 14 migrations to schema "PUBLIC" (execution time 00:02.671s)
komga    | 2019-11-29 17:35:22.870  INFO 1 --- [           main] o.hibernate.jpa.internal.util.LogHelper  : HHH000204: Processing PersistenceUnitInfo [
komga    |      name: default
komga    |      ...]
komga    | 2019-11-29 17:35:23.210  INFO 1 --- [           main] org.hibernate.Version                    : HHH000412: Hibernate Core {5.3.12.Final}
komga    | 2019-11-29 17:35:23.222  INFO 1 --- [           main] org.hibernate.cfg.Environment            : HHH000206: hibernate.properties not found
komga    | 2019-11-29 17:35:23.982  INFO 1 --- [           main] o.hibernate.annotations.common.Version   : HCANN000001: Hibernate Commons Annotations {5.0.4.Final}
komga    | 2019-11-29 17:35:24.946  INFO 1 --- [           main] org.hibernate.dialect.Dialect            : HHH000400: Using dialect: org.hibernate.dialect.H2Dialect
komga    | 2019-11-29 17:35:28.878  INFO 1 --- [           main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
komga    | 2019-11-29 17:35:32.047  INFO 1 --- [           main] o.g.k.i.image.ImageConverter             : Supported read formats: [JPG, jpg, tiff, bmp, BMP, bigtiff, gif, GIF, WBMP, png, PNG, BIGTIFF, JPEG, webp, JPEG-LOSSLESS, BigTIFF, tif, TIF, TIFF, wbmp, jpeg, jpeg-lossless]
komga    | 2019-11-29 17:35:32.088  INFO 1 --- [           main] o.g.k.i.image.ImageConverter             : Supported read mediaTypes: [image/vnd.wap.wbmp, image/png, image/x-png, image/jpeg, image/tiff, image/x-tiff, image/bmp, image/gif, image/webp]
komga    | 2019-11-29 17:35:32.090  INFO 1 --- [           main] o.g.k.i.image.ImageConverter             : Supported write formats: [JPG, jpg, tiff, bmp, BMP, gif, GIF, WBMP, png, PNG, JPEG, tif, TIF, TIFF, wbmp, jpeg]
komga    | 2019-11-29 17:35:32.092  INFO 1 --- [           main] o.g.k.i.image.ImageConverter             : Supported write mediaTypes: [image/vnd.wap.wbmp, image/png, image/x-png, image/jpeg, image/tiff, image/x-tiff, image/bmp, image/gif]
komga    | 2019-11-29 17:35:33.870  WARN 1 --- [           main] aWebConfiguration$JpaWebMvcConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning
komga    | 2019-11-29 17:35:34.423  INFO 1 --- [           main] o.s.b.a.e.web.EndpointLinksResolver      : Exposing 17 endpoint(s) beneath base path '/actuator'
komga    | 2019-11-29 17:35:34.772  INFO 1 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'parseBookTaskExecutor'
komga    | 2019-11-29 17:35:34.784  INFO 1 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'periodicScanTaskExecutor'
komga    | 2019-11-29 17:35:34.786  INFO 1 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'regenerateThumbnailsTaskExecutor'
komga    | 2019-11-29 17:35:35.121  INFO 1 --- [           main] o.s.s.web.DefaultSecurityFilterChain     : Creating filter chain: Ant [pattern='/error**'], []
komga    | 2019-11-29 17:35:35.125  INFO 1 --- [           main] o.s.s.web.DefaultSecurityFilterChain     : Creating filter chain: Ant [pattern='/'], []
komga    | 2019-11-29 17:35:35.127  INFO 1 --- [           main] o.s.s.web.DefaultSecurityFilterChain     : Creating filter chain: Ant [pattern='/index.html'], []
komga    | 2019-11-29 17:35:35.298  INFO 1 --- [           main] pertySourcedRequestMappingHandlerMapping : Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
komga    | 2019-11-29 17:35:35.421  INFO 1 --- [           main] o.s.b.a.w.s.WelcomePageHandlerMapping    : Adding welcome page: class path resource [public/index.html]
komga    | 2019-11-29 17:35:35.516  INFO 1 --- [           main] o.s.s.web.DefaultSecurityFilterChain     : Creating filter chain: any request, [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@198eeb36, org.springframework.security.web.context.SecurityContextPersistenceFilter@676c3745, org.springframework.security.web.header.HeaderWriterFilter@2b8106fa, org.springframework.web.filter.CorsFilter@4690cb47, org.springframework.security.web.authentication.logout.LogoutFilter@542adcfa, org.springframework.security.web.session.ConcurrentSessionFilter@794daa09, org.gotson.komga.infrastructure.security.LoggingBasicAuthFilter@77d80294, org.springframework.security.web.authentication.www.BasicAuthenticationFilter@740ef827, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@78b20c7f, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@6e0fd2dc, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@74940388, org.springframework.security.web.session.SessionManagementFilter@1a18e18d, org.springframework.security.web.access.ExceptionTranslationFilter@1d5e0621, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@72f86029]
komga    | 2019-11-29 17:35:36.909  INFO 1 --- [           main] o.s.s.c.ThreadPoolTaskScheduler          : Initializing ExecutorService 'taskScheduler'
komga    | 2019-11-29 17:35:37.159  INFO 1 --- [           main] d.s.w.p.DocumentationPluginsBootstrapper : Context refreshed
komga    | 2019-11-29 17:35:37.263  INFO 1 --- [           main] d.s.w.p.DocumentationPluginsBootstrapper : Found 1 custom documentation plugin(s)
komga    | 2019-11-29 17:35:37.439  INFO 1 --- [           main] s.d.s.w.s.ApiListingReferenceScanner     : Scanning for api listing references
komga    | 2019-11-29 17:35:38.479  INFO 1 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: handleUsingGET_1
komga    | 2019-11-29 17:35:38.493  INFO 1 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: handleUsingGET_2
komga    | 2019-11-29 17:35:38.505  INFO 1 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: handleUsingGET_3
komga    | 2019-11-29 17:35:38.507  INFO 1 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: handleUsingDELETE_1
komga    | 2019-11-29 17:35:38.543  INFO 1 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: handleUsingGET_4
komga    | 2019-11-29 17:35:38.546  INFO 1 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: handleUsingGET_5
komga    | 2019-11-29 17:35:38.549  INFO 1 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: handleUsingGET_6
komga    | 2019-11-29 17:35:38.555  INFO 1 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: handleUsingGET_7
komga    | 2019-11-29 17:35:38.562  INFO 1 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: handleUsingGET_8
komga    | 2019-11-29 17:35:38.565  INFO 1 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: handleUsingGET_9
komga    | 2019-11-29 17:35:38.573  INFO 1 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: handleUsingGET_10
komga    | 2019-11-29 17:35:38.582  INFO 1 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: handleUsingGET_11
komga    | 2019-11-29 17:35:38.587  INFO 1 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: handleUsingGET_12
komga    | 2019-11-29 17:35:38.589  INFO 1 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: handleUsingGET_13
komga    | 2019-11-29 17:35:38.598  INFO 1 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: handleUsingGET_14
komga    | 2019-11-29 17:35:38.602  INFO 1 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: handleUsingGET_15
komga    | 2019-11-29 17:35:38.609  INFO 1 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: handleUsingGET_16
komga    | 2019-11-29 17:35:38.617  INFO 1 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: handleUsingGET_17
komga    | 2019-11-29 17:35:38.622  INFO 1 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: handleUsingGET_18
komga    | 2019-11-29 17:35:38.628  INFO 1 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: handleUsingGET_19
komga    | 2019-11-29 17:35:38.637  INFO 1 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: handleUsingGET_20
komga    | 2019-11-29 17:35:38.643  INFO 1 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: handleUsingGET_21
komga    | 2019-11-29 17:35:38.646  INFO 1 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: handleUsingGET_22
komga    | 2019-11-29 17:35:39.058  INFO 1 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getAllSeriesUsingGET_1
komga    | 2019-11-29 17:35:39.076  INFO 1 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getBookFileUsingGET_1
komga    | 2019-11-29 17:35:39.137  INFO 1 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getLatestSeriesUsingGET_1
komga    | 2019-11-29 17:35:39.165  INFO 1 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getOneSeriesUsingGET_1
komga    | 2019-11-29 17:35:39.211  INFO 1 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addOneUsingPOST_1
komga    | 2019-11-29 17:35:39.278  INFO 1 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getAllUsingGET_1
komga    | 2019-11-29 17:35:39.493  INFO 1 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
komga    | 2019-11-29 17:35:39.501  INFO 1 --- [           main] org.gotson.komga.ApplicationKt           : Started ApplicationKt in 37.14 seconds (JVM running for 38.372)
komga    | 2019-11-29 17:35:39.642  INFO 1 --- [           main] o.h.h.i.QueryTranslatorFactoryInitiator  : HHH000397: Using ASTQueryTranslatorFactory
komga    | 2019-11-29 17:35:39.910  INFO 1 --- [           main] o.g.k.i.scheduler.InitialUserController  : No users exist in database, creating initial users
komga    | 2019-11-29 17:35:40.438  INFO 1 --- [           main] o.g.k.i.s.KomgaUserDetailsLifecycle      : Created user: [email protected], roles: [ADMIN]
komga    | 2019-11-29 17:35:40.537  INFO 1 --- [           main] o.g.k.i.scheduler.InitialUserController  : Initial user created. Login: [email protected], Password: ********
komga    | 2019-11-29 17:35:40.581  INFO 1 --- [sTaskExecutor-1] o.g.k.domain.service.AsyncOrchestrator   : Regenerate missing thumbnails
komga    | 2019-11-29 17:35:40.586  INFO 1 --- [nTaskExecutor-1] o.g.k.domain.service.AsyncOrchestrator   : Starting periodic libraries scan
komga    | 2019-11-29 17:35:40.624  INFO 1 --- [nTaskExecutor-1] o.g.k.domain.service.AsyncOrchestrator   : No libraries defined, nothing to scan
komga    | 2019-11-29 17:35:40.690  INFO 1 --- [sTaskExecutor-1] o.g.k.domain.service.AsyncOrchestrator   : Generated 0 thumbnails in 00:00:00.000 (virtual: 00:00:00.000)
komga    | 2019-11-29 17:36:22.676  INFO 1 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet'
komga    | 2019-11-29 17:36:22.682  INFO 1 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
komga    | 2019-11-29 17:36:22.746  INFO 1 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 62 ms

Thanks in advance,
Best,

Convert pages on the fly

Tachiyomi can't read some image formats like tiff. Komga could convert images to other formats on the fly when servings pages.

Edit metadata manually

While #11 is tracking a high level need to handle metadata from various sources, this issue will focus on implementing the metadata model and offer manual edition.

Book metadata fields:

  • Title
    Not all books have names, usually they only have an issue number. However some books do have an explicit name (ex: Blacksad).

  • Number
    The issue number within the series.
    Will need to accommodate for #43, so probably a String.

  • Summary

  • Author(s)
    The name of an individual, group or collective that participates in the creative process of an artistic work.
    Optionally an author can have one or multiple roles (writer, artist, cover...) for this particular book.

  • Release date

  • Age rating
    The minimum age rating for this book, like 12+, 17+, 0+.

  • Reading direction
    One of: Left-to-right, Right-to-left, vertical, webtoon

Series metadata fields:

  • Publisher
    The publishing company (Marvel, DC, Glenat...)
    โš ๏ธ Most of the providers will have the publisher set at book level. Given a serie can only have one publisher, there could be a difficulty to reduce the list of publisher from all the books into one. A mitigation would be to have the publisher set at book level, and to perform a simple string concatenation of the distinct publishers for the series publisher.

  • Genres
    A list of tags like Science-Fiction, Adventure...
    This could also be set at book level, but having it in the series makes more sense to me.

  • Language

  • Status
    One of: ended, ongoing, abandoned, hiatus.

  • Title / Sort Title

Web reader

Add a web reader to read comics from the web interface

Tachiyomi extension not installaling on Android

Hi,

I tried to install the Tachiyomi extension and unfortunately, it doesn't want to install. I tried to install another extension and that one worked.

For information, my Android phone is a Oneplus 5T running Android 9.

Thanks,
Cheers

Read progress

Manage read progress per user for books.

Should implement the following features:

  • manually mark a book or multiple books as read/unread
  • manually mark a series or multiple series as read/unread (would change the status for all books in the series)
  • ability to store progress by page per book per user
  • [api] read status search criteria for books
  • [webui] filter books by read status
  • [api] read status search criteria for series (with at least one book matching the criteria)
  • [webui] filter series by read status
  • add read progress in books retrieved by api (number of page read)
  • add read progress in series retrieved by api (count of read, unread and in progress books)
  • [opds] add views for unread series and books
  • adjust read progress if necessary when a file has changed, and has a different number of pages than previously

Cannot generate thumbnails for WEBP images

There is no webp support in ImageIO, and no pure java implementation. Need to experiment with JNI plugins and native webp libraries for all platforms (Windows, Mac, Linux)

SQL Error: 90098, SQLState: 90098 The database has been closed

Trying to run Komga inside Docker and it all seems to work fine, but after a few minutes of using up 100% of the CPU and ~4.5GB of RAM, it starts showing

WARN 1 --- [kTaskExecutor-1] o.h.engine.jdbc.spi.SqlExceptionHelper   : SQL Error: 90098, SQLState: 90098,
ERROR 1 --- [kTaskExecutor-1] o.h.engine.jdbc.spi.SqlExceptionHelper   : The database has been closed [90098-200],
INFO 1 --- [kTaskExecutor-1] o.h.e.internal.DefaultLoadEventListener  : HHH000327: Error performing load command : org.hibernate.exception.JDBCConnectionException: could not extract ResultSet

in the logs, and all I get is 504 timeouts from that point on. It's still using up a lot of CPU, but the logs have a lot of exceptions about the database being closed.

I have around 600GB of PDFs and CBZ/CBRs.

Books not showing in the web interface

Hi,

I just upload 12 PDF in a library. It's been 6 hours that those comics are on the server. I can see them using an OPDS app on my phone (Librera) but not on the web interface. I can't even click on the library tab (it does nothing). I tried on Chrome and Brave and still don't see it. I

Thanks in advance,
Cheers,

Inconsistent datetime serialization

In the case where a LocalDateTime would fall on an exact second, the JSON serialization would omit the milliseconds in the serialized ISO 8601 string.

Example of expected dateTime: "lastModified": "2019-08-22T12:01:30.611"

Actual dateTime in some cases: "lastModified": "2019-08-22T12:01:31"

It has a side-effect on the Tachiyomi Komga extension which doesn't handle exceptions on datetime parsing.

getAllSeries searchTerm mandatory in Swagger but not in code

When testing with swagger it is not possible to leave "search" field empty in getAllSeries endpoint which is not in adequation with code which is

fun getAllSeries(
      @AuthenticationPrincipal principal: KomgaPrincipal,
      @RequestParam("search") searchTerm: String?,

Keep up the good work anyway, this app looks very promising ๐Ÿ‘
The metadata management is the next big thing if you can get it.

Dual page splitting

It would be convenient to have a dual page splitting functionality server side, since not all readers are able to perform split (Tachiyomi for instance cannot).

It should:

  • be optional, and disabled by default
  • be requested via api
  • play nicely with both LTR and RTL
  • be mindful of image dimensions to reduce false positives as much as possible

use book numbers for chapters

Following the addition of explicit book numbering, Tachiyomi extension should be updated to use those instead of the list index as the chapter number

Advice for running before Apache reverse proxy

Anyone any experience with this through an apache reverse proxy? I usually just do something like this:

RewriteRule ^/komga$ /komga/ [R]
<Location "/komga/">
    ProxyPass "http://localhost:8080/"
    ProxyPassReverse "http://localhost:8080/"
</Location>

Then set within the config of the app itself the baseURI property to be "/komga/" but not sure if this app has such a thing?

Android client - Tachiyomi shortcomings

Tachiyomi is generally doing a good job through the Komga extension, but there's a few things that will limit the experience going forward.

Tachiyomi's code repo is split in 2, one for the main application, and one for extensions. While it's fairly easy to get PRs merged for extensions, it seems it doesn't happen as much for the main app, most likely because inorichi is working on a new 1.0 version.

This issue is to keep track of the limitations, and to consider either a Tachiyomi fork, or a brand new client.

Limitations

  • only one 3 Komga server can be configured. An open PR could fix that, but it hasn't been acknowledged.
  • handling the read status will prove difficult. Tachiyomi has a tracking feature built into the main app, but series need to be manually associated for the feature to work. It also only track chapters read in full, and not per page.
  • books display is limited, it doesn't show the cover nor any other information, only one line of text can be shown.
  • browsing collections is not ideal. There is a filter by collection, but it cannot show the list of series following the collection's order.
  • there is no way to browse reading lists.
  • filters are loaded on app startup only, a restart is needed to update them.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.