janeczku / calibre-web

:books: Web app for browsing, reading and downloading eBooks stored in a Calibre database
GNU General Public License v3.0
11.99k stars 1.28k forks source link

Cover not Available for books uploaded into Calibre-Web #3054

Open kanjieater opened 1 month ago

kanjieater commented 1 month ago

Describe the bug/problem

Books uploaded to Calibre-web don't add covers. Books added via classic Calibre do (Manually updated one that has an image here) image

To Reproduce

Steps to reproduce the behavior:

  1. Upload a few books
  2. No cover is generated.

Logfile

calibre-web.log

Expected behavior

Covers should be generated image

If applicable, add screenshots to help explain your problem.

Environment (please complete the following information):

Additional context Add any other context about the problem here. [e.g. access via reverse proxy, database background sync, special database location]

OzzieIsaacs commented 1 month ago

Please activate debug level logging end check the output. I guess you are missing dependency like imagemagick or so. Please check if the cover files are in the respective folders, if yes, there is a permission problem (should also be visible in the log file afterwards)

kanjieater commented 1 month ago

Switched to docker and it works

kanjieater commented 1 month ago

image

Even after switching to the linuxserver docker image, a lot of books do add images, but some do not. They always do from calibre classic though

Trying to add it again image

calibre-web  | Message: 'Author アサギリ カフカ not found to display name in right order'
                    calibre-web  | Arguments: ()
                    calibre-web  | --- Logging error ---
                    calibre-web  | Traceback (most recent call last):
                    calibre-web  |   File "/usr/lib/python3.10/logging/handlers.py", line 74, in emit
                    calibre-web  |     self.doRollover()
                    calibre-web  |   File "/usr/lib/python3.10/logging/handlers.py", line 179, in doRollover
                    calibre-web  |     self.rotate(self.baseFilename, dfn)
                    calibre-web  |   File "/usr/lib/python3.10/logging/handlers.py", line 115, in rotate
                    calibre-web  |     os.rename(source, dest)
                    calibre-web  | PermissionError: [Errno 13] Permission denied: '/config/calibre-web.log' -> '/config/calibre-web.log.1'
                    calibre-web  | Call stack:
                    calibre-web  |   File "/lsiopy/lib/python3.10/site-packages/gevent/baseserver.py", line 34, in _handle_and_close_when_done
                    calibre-web  |     return handle(*args_tuple)
                    calibre-web  |   File "/lsiopy/lib/python3.10/site-packages/gevent/pywsgi.py", line 1700, in handle
                    calibre-web  |     handler.handle()
                    calibre-web  |   File "/lsiopy/lib/python3.10/site-packages/gevent/pywsgi.py", line 574, in handle
                    calibre-web  |     result = self.handle_one_request()
                    calibre-web  |   File "/lsiopy/lib/python3.10/site-packages/gevent/pywsgi.py", line 804, in handle_one_request
                    calibre-web  |     self.handle_one_response()
                    calibre-web  |   File "/lsiopy/lib/python3.10/site-packages/gevent/pywsgi.py", line 1107, in handle_one_response
                    calibre-web  |     self.run_application()
                    calibre-web  |   File "/lsiopy/lib/python3.10/site-packages/gevent/pywsgi.py", line 1053, in run_application
                    calibre-web  |     self.result = self.application(self.environ, self.start_response)
                    calibre-web  |   File "/lsiopy/lib/python3.10/site-packages/flask/app.py", line 2213, in __call__
                    calibre-web  |     return self.wsgi_app(environ, start_response)
                    calibre-web  |   File "/app/calibre-web/cps/reverseproxy.py", line 79, in __call__
                    calibre-web  |     return self.app(environ, start_response)
                    calibre-web  |   File "/lsiopy/lib/python3.10/site-packages/flask/app.py", line 2190, in wsgi_app
                    calibre-web  |     response = self.full_dispatch_request()
                    calibre-web  |   File "/lsiopy/lib/python3.10/site-packages/flask/app.py", line 1484, in full_dispatch_request
                    calibre-web  |     rv = self.dispatch_request()
                    calibre-web  |   File "/lsiopy/lib/python3.10/site-packages/flask/app.py", line 1469, in dispatch_request
                    calibre-web  |     return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
                    calibre-web  |   File "/app/calibre-web/cps/usermanagement.py", line 35, in decorated_view
                    calibre-web  |     return login_required(func)(*args, **kwargs)
                    calibre-web  |   File "/lsiopy/lib/python3.10/site-packages/flask_login/utils.py", line 290, in decorated_view
                    calibre-web  |     return current_app.ensure_sync(func)(*args, **kwargs)
                    calibre-web  |   File "/app/calibre-web/cps/web.py", line 790, in index
                    calibre-web  |     return render_books_list("newest", sort_param, 1, page)
                    calibre-web  |   File "/app/calibre-web/cps/web.py", line 408, in render_books_list
                    calibre-web  |     entries, random, pagination = calibre_db.fill_indexpage(page, 0, db.Books, True, order[0],
                    calibre-web  |   File "/app/calibre-web/cps/db.py", line 803, in fill_indexpage
                    calibre-web  |     return self.fill_indexpage_with_archived_books(page, database, pagesize, db_filter, order, False,
                    calibre-web  |   File "/app/calibre-web/cps/db.py", line 848, in fill_indexpage_with_archived_books
                    calibre-web  |     entries = self.order_authors(entries, True, join_archive_read)
                    calibre-web  |   File "/app/calibre-web/cps/db.py", line 867, in order_authors
                    calibre-web  |     log.error("Author {} not found to display name in right order".format(auth.strip()))
                    calibre-web  | Message: 'Author ユキナリ カオル not found to display name in right order'
                    calibre-web  | Arguments: ()
                    calibre-web  | --- Logging error ---
                    calibre-web  | Traceback (most recent call last):
                    calibre-web  |   File "/usr/lib/python3.10/logging/handlers.py", line 74, in emit
                    calibre-web  |     self.doRollover()
                    calibre-web  |   File "/usr/lib/python3.10/logging/handlers.py", line 179, in doRollover
                    calibre-web  |     self.rotate(self.baseFilename, dfn)
                    calibre-web  |   File "/usr/lib/python3.10/logging/handlers.py", line 115, in rotate
                    calibre-web  |     os.rename(source, dest)
                    calibre-web  | PermissionError: [Errno 13] Permission denied: '/config/calibre-web.log' -> '/config/calibre-web.log.1'
                    calibre-web  | Call stack:
                    calibre-web  |   File "/lsiopy/lib/python3.10/site-packages/gevent/baseserver.py", line 34, in _handle_and_close_when_done
                    calibre-web  |     return handle(*args_tuple)
                    calibre-web  |   File "/lsiopy/lib/python3.10/site-packages/gevent/pywsgi.py", line 1700, in handle
                    calibre-web  |     handler.handle()
                    calibre-web  |   File "/lsiopy/lib/python3.10/site-packages/gevent/pywsgi.py", line 574, in handle
                    calibre-web  |     result = self.handle_one_request()
                    calibre-web  |   File "/lsiopy/lib/python3.10/site-packages/gevent/pywsgi.py", line 804, in handle_one_request
                    calibre-web  |     self.handle_one_response()
                    calibre-web  |   File "/lsiopy/lib/python3.10/site-packages/gevent/pywsgi.py", line 1107, in handle_one_response
                    calibre-web  |     self.run_application()
                    calibre-web  |   File "/lsiopy/lib/python3.10/site-packages/gevent/pywsgi.py", line 1053, in run_application
                    calibre-web  |     self.result = self.application(self.environ, self.start_response)
                    calibre-web  |   File "/lsiopy/lib/python3.10/site-packages/flask/app.py", line 2213, in __call__
                    calibre-web  |     return self.wsgi_app(environ, start_response)
                    calibre-web  |   File "/app/calibre-web/cps/reverseproxy.py", line 79, in __call__
                    calibre-web  |     return self.app(environ, start_response)
                    calibre-web  |   File "/lsiopy/lib/python3.10/site-packages/flask/app.py", line 2190, in wsgi_app
                    calibre-web  |     response = self.full_dispatch_request()
                    calibre-web  |   File "/lsiopy/lib/python3.10/site-packages/flask/app.py", line 1484, in full_dispatch_request
                    calibre-web  |     rv = self.dispatch_request()
                    calibre-web  |   File "/lsiopy/lib/python3.10/site-packages/flask/app.py", line 1469, in dispatch_request
                    calibre-web  |     return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
                    calibre-web  |   File "/app/calibre-web/cps/usermanagement.py", line 35, in decorated_view
                    calibre-web  |     return login_required(func)(*args, **kwargs)
                    calibre-web  |   File "/lsiopy/lib/python3.10/site-packages/flask_login/utils.py", line 290, in decorated_view
                    calibre-web  |     return current_app.ensure_sync(func)(*args, **kwargs)
                    calibre-web  |   File "/app/calibre-web/cps/web.py", line 790, in index
                    calibre-web  |     return render_books_list("newest", sort_param, 1, page)
                    calibre-web  |   File "/app/calibre-web/cps/web.py", line 408, in render_books_list
                    calibre-web  |     entries, random, pagination = calibre_db.fill_indexpage(page, 0, db.Books, True, order[0],
                    calibre-web  |   File "/app/calibre-web/cps/db.py", line 803, in fill_indexpage
                    calibre-web  |     return self.fill_indexpage_with_archived_books(page, database, pagesize, db_filter, order, False,
                    calibre-web  |   File "/app/calibre-web/cps/db.py", line 848, in fill_indexpage_with_archived_books
                    calibre-web  |     entries = self.order_authors(entries, True, join_archive_read)
                    calibre-web  |   File "/app/calibre-web/cps/db.py", line 867, in order_authors
                    calibre-web  |     log.error("Author {} not found to display name in right order".format(auth.strip()))
                    calibre-web  | Message: 'Author ナナシノコウセイ not found to display name in right order'
                    calibre-web  | Arguments: ()
                    calibre-web  | --- Logging error ---
                    calibre-web  | Traceback (most recent call last):
                    calibre-web  |   File "/usr/lib/python3.10/logging/handlers.py", line 74, in emit
                    calibre-web  |     self.doRollover()
                    calibre-web  |   File "/usr/lib/python3.10/logging/handlers.py", line 179, in doRollover
                    calibre-web  |     self.rotate(self.baseFilename, dfn)
                    calibre-web  |   File "/usr/lib/python3.10/logging/handlers.py", line 115, in rotate
                    calibre-web  |     os.rename(source, dest)
                    calibre-web  | PermissionError: [Errno 13] Permission denied: '/config/calibre-web.log' -> '/config/calibre-web.log.1'
                    calibre-web  | Call stack:
                    calibre-web  |   File "/lsiopy/lib/python3.10/site-packages/gevent/baseserver.py", line 34, in _handle_and_close_when_done
                    calibre-web  |     return handle(*args_tuple)
                    calibre-web  |   File "/lsiopy/lib/python3.10/site-packages/gevent/pywsgi.py", line 1700, in handle
                    calibre-web  |     handler.handle()
                    calibre-web  |   File "/lsiopy/lib/python3.10/site-packages/gevent/pywsgi.py", line 574, in handle
                    calibre-web  |     result = self.handle_one_request()
                    calibre-web  |   File "/lsiopy/lib/python3.10/site-packages/gevent/pywsgi.py", line 804, in handle_one_request
                    calibre-web  |     self.handle_one_response()
                    calibre-web  |   File "/lsiopy/lib/python3.10/site-packages/gevent/pywsgi.py", line 1107, in handle_one_response
                    calibre-web  |     self.run_application()
                    calibre-web  |   File "/lsiopy/lib/python3.10/site-packages/gevent/pywsgi.py", line 1053, in run_application
                    calibre-web  |     self.result = self.application(self.environ, self.start_response)
                    calibre-web  |   File "/lsiopy/lib/python3.10/site-packages/flask/app.py", line 2213, in __call__
                    calibre-web  |     return self.wsgi_app(environ, start_response)
                    calibre-web  |   File "/app/calibre-web/cps/reverseproxy.py", line 79, in __call__
                    calibre-web  |     return self.app(environ, start_response)
                    calibre-web  |   File "/lsiopy/lib/python3.10/site-packages/flask/app.py", line 2190, in wsgi_app
                    calibre-web  |     response = self.full_dispatch_request()
                    calibre-web  |   File "/lsiopy/lib/python3.10/site-packages/flask/app.py", line 1484, in full_dispatch_request
                    calibre-web  |     rv = self.dispatch_request()
                    calibre-web  |   File "/lsiopy/lib/python3.10/site-packages/flask/app.py", line 1469, in dispatch_request
                    calibre-web  |     return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
                    calibre-web  |   File "/app/calibre-web/cps/usermanagement.py", line 35, in decorated_view
                    calibre-web  |     return login_required(func)(*args, **kwargs)
                    calibre-web  |   File "/lsiopy/lib/python3.10/site-packages/flask_login/utils.py", line 290, in decorated_view
                    calibre-web  |     return current_app.ensure_sync(func)(*args, **kwargs)
                    calibre-web  |   File "/app/calibre-web/cps/web.py", line 790, in index
                    calibre-web  |     return render_books_list("newest", sort_param, 1, page)
                    calibre-web  |   File "/app/calibre-web/cps/web.py", line 408, in render_books_list
                    calibre-web  |     entries, random, pagination = calibre_db.fill_indexpage(page, 0, db.Books, True, order[0],
                    calibre-web  |   File "/app/calibre-web/cps/db.py", line 803, in fill_indexpage
                    calibre-web  |     return self.fill_indexpage_with_archived_books(page, database, pagesize, db_filter, order, False,
                    calibre-web  |   File "/app/calibre-web/cps/db.py", line 848, in fill_indexpage_with_archived_books
                    calibre-web  |     entries = self.order_authors(entries, True, join_archive_read)
                    calibre-web  |   File "/app/calibre-web/cps/db.py", line 867, in order_authors
                    calibre-web  |     log.error("Author {} not found to display name in right order".format(auth.strip()))
                    calibre-web  | Message: 'Author アサギリ カフカ not found to display name in right order'
                    calibre-web  | Arguments: ()
                    calibre-web  | --- Logging error ---
                    calibre-web  | Traceback (most recent call last):
                    calibre-web  |   File "/usr/lib/python3.10/logging/handlers.py", line 74, in emit
                    calibre-web  |     self.doRollover()
                    calibre-web  |   File "/usr/lib/python3.10/logging/handlers.py", line 179, in doRollover
                    calibre-web  |     self.rotate(self.baseFilename, dfn)
                    calibre-web  |   File "/usr/lib/python3.10/logging/handlers.py", line 115, in rotate
                    calibre-web  |     os.rename(source, dest)
                    calibre-web  | PermissionError: [Errno 13] Permission denied: '/config/calibre-web.log' -> '/config/calibre-web.log.1'
                    calibre-web  | Call stack:
                    calibre-web  |   File "/lsiopy/lib/python3.10/site-packages/gevent/baseserver.py", line 34, in _handle_and_close_when_done
                    calibre-web  |     return handle(*args_tuple)
                    calibre-web  |   File "/lsiopy/lib/python3.10/site-packages/gevent/pywsgi.py", line 1700, in handle
                    calibre-web  |     handler.handle()
                    calibre-web  |   File "/lsiopy/lib/python3.10/site-packages/gevent/pywsgi.py", line 574, in handle
                    calibre-web  |     result = self.handle_one_request()
                    calibre-web  |   File "/lsiopy/lib/python3.10/site-packages/gevent/pywsgi.py", line 804, in handle_one_request
                    calibre-web  |     self.handle_one_response()
                    calibre-web  |   File "/lsiopy/lib/python3.10/site-packages/gevent/pywsgi.py", line 1107, in handle_one_response
                    calibre-web  |     self.run_application()
                    calibre-web  |   File "/lsiopy/lib/python3.10/site-packages/gevent/pywsgi.py", line 1053, in run_application
                    calibre-web  |     self.result = self.application(self.environ, self.start_response)
                    calibre-web  |   File "/lsiopy/lib/python3.10/site-packages/flask/app.py", line 2213, in __call__
                    calibre-web  |     return self.wsgi_app(environ, start_response)
                    calibre-web  |   File "/app/calibre-web/cps/reverseproxy.py", line 79, in __call__
                    calibre-web  |     return self.app(environ, start_response)
                    calibre-web  |   File "/lsiopy/lib/python3.10/site-packages/flask/app.py", line 2190, in wsgi_app
                    calibre-web  |     response = self.full_dispatch_request()
                    calibre-web  |   File "/lsiopy/lib/python3.10/site-packages/flask/app.py", line 1484, in full_dispatch_request
                    calibre-web  |     rv = self.dispatch_request()
                    calibre-web  |   File "/lsiopy/lib/python3.10/site-packages/flask/app.py", line 1469, in dispatch_request
                    calibre-web  |     return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
                    calibre-web  |   File "/app/calibre-web/cps/usermanagement.py", line 35, in decorated_view
                    calibre-web  |     return login_required(func)(*args, **kwargs)
                    calibre-web  |   File "/lsiopy/lib/python3.10/site-packages/flask_login/utils.py", line 290, in decorated_view
                    calibre-web  |     return current_app.ensure_sync(func)(*args, **kwargs)
                    calibre-web  |   File "/app/calibre-web/cps/web.py", line 790, in index
                    calibre-web  |     return render_books_list("newest", sort_param, 1, page)
                    calibre-web  |   File "/app/calibre-web/cps/web.py", line 408, in render_books_list
                    calibre-web  |     entries, random, pagination = calibre_db.fill_indexpage(page, 0, db.Books, True, order[0],
                    calibre-web  |   File "/app/calibre-web/cps/db.py", line 803, in fill_indexpage
                    calibre-web  |     return self.fill_indexpage_with_archived_books(page, database, pagesize, db_filter, order, False,
                    calibre-web  |   File "/app/calibre-web/cps/db.py", line 848, in fill_indexpage_with_archived_books
                    calibre-web  |     entries = self.order_authors(entries, True, join_archive_read)
                    calibre-web  |   File "/app/calibre-web/cps/db.py", line 867, in order_authors
                    calibre-web  |     log.error("Author {} not found to display name in right order".format(auth.strip()))
                    calibre-web  | Message: 'Author アサギリ カフカ not found to display name in right order'
                    calibre-web  | Arguments: ()
                    calibre-web  | --- Logging error ---
                    calibre-web  | Traceback (most recent call last):
                    calibre-web  |   File "/usr/lib/python3.10/logging/handlers.py", line 74, in emit
                    calibre-web  |     self.doRollover()
                    calibre-web  |   File "/usr/lib/python3.10/logging/handlers.py", line 179, in doRollover
                    calibre-web  |     self.rotate(self.baseFilename, dfn)
                    calibre-web  |   File "/usr/lib/python3.10/logging/handlers.py", line 115, in rotate
                    calibre-web  |     os.rename(source, dest)
                    calibre-web  | PermissionError: [Errno 13] Permission denied: '/config/calibre-web.log' -> '/config/calibre-web.log.1'
                    calibre-web  | Call stack:
                    calibre-web  |   File "/lsiopy/lib/python3.10/site-packages/gevent/baseserver.py", line 34, in _handle_and_close_when_done
                    calibre-web  |     return handle(*args_tuple)
                    calibre-web  |   File "/lsiopy/lib/python3.10/site-packages/gevent/pywsgi.py", line 1700, in handle
                    calibre-web  |     handler.handle()
                    calibre-web  |   File "/lsiopy/lib/python3.10/site-packages/gevent/pywsgi.py", line 574, in handle
                    calibre-web  |     result = self.handle_one_request()
                    calibre-web  |   File "/lsiopy/lib/python3.10/site-packages/gevent/pywsgi.py", line 804, in handle_one_request
                    calibre-web  |     self.handle_one_response()
                    calibre-web  |   File "/lsiopy/lib/python3.10/site-packages/gevent/pywsgi.py", line 1107, in handle_one_response
                    calibre-web  |     self.run_application()
                    calibre-web  |   File "/lsiopy/lib/python3.10/site-packages/gevent/pywsgi.py", line 1053, in run_application
                    calibre-web  |     self.result = self.application(self.environ, self.start_response)
                    calibre-web  |   File "/lsiopy/lib/python3.10/site-packages/flask/app.py", line 2213, in __call__
                    calibre-web  |     return self.wsgi_app(environ, start_response)
                    calibre-web  |   File "/app/calibre-web/cps/reverseproxy.py", line 79, in __call__
                    calibre-web  |     return self.app(environ, start_response)
                    calibre-web  |   File "/lsiopy/lib/python3.10/site-packages/flask/app.py", line 2190, in wsgi_app
                    calibre-web  |     response = self.full_dispatch_request()
                    calibre-web  |   File "/lsiopy/lib/python3.10/site-packages/flask/app.py", line 1484, in full_dispatch_request
                    calibre-web  |     rv = self.dispatch_request()
                    calibre-web  |   File "/lsiopy/lib/python3.10/site-packages/flask/app.py", line 1469, in dispatch_request
                    calibre-web  |     return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
                    calibre-web  |   File "/app/calibre-web/cps/usermanagement.py", line 35, in decorated_view
                    calibre-web  |     return login_required(func)(*args, **kwargs)
                    calibre-web  |   File "/lsiopy/lib/python3.10/site-packages/flask_login/utils.py", line 290, in decorated_view
                    calibre-web  |     return current_app.ensure_sync(func)(*args, **kwargs)
                    calibre-web  |   File "/app/calibre-web/cps/editbooks.py", line 62, in inner
                    calibre-web  |     return f(*args, **kwargs)
                    calibre-web  |   File "/app/calibre-web/cps/editbooks.py", line 257, in upload
                    calibre-web  |     db_book, input_authors, title_dir, renamed_authors = create_book_on_upload(modify_date, meta)
                    calibre-web  |   File "/app/calibre-web/cps/editbooks.py", line 666, in create_book_on_upload
                    calibre-web  |     sort_authors, input_authors, db_author, renamed_authors = prepare_authors_on_upload(title, authr)
                    calibre-web  |   File "/app/calibre-web/cps/editbooks.py", line 638, in prepare_authors_on_upload
                    calibre-web  |     log.info("Uploaded book probably exists in library")
                    calibre-web  | Message: 'Uploaded book probably exists in library'
                    calibre-web  | Arguments: ()

Is there something I should be looking for in the logs?

kanjieater commented 1 month ago

@OzzieIsaacs Is docker unsupported? Why the Invalid tag?

OzzieIsaacs commented 1 month ago

I asked you two questions and gave you a hint regarding your problem. I think it would have taken about 1minute to answer it. Instead you installed a docker container, which adds another level of complexity. The outcome was another problem (permission error for log file rotation. So my conclusion is: I can't help you.

And yes,I'm not supporting the docker container