|  09-16-2021, 01:07 PM | #1 | 
| Connoisseur  Posts: 52 Karma: 10 Join Date: Sep 2021 Location: Upstate NY, USA Device: iPad Pro, Kindle basic |  'calibredb add' throws python error when calibre-server is running 
			
			Raspberry Pi 4 (8gb) Raspbery Pi OS 64-bit (no, not ArchLinuxARM) Calibre installed from the repos (yes, I know they're woefully out of date) Code: $ calibredb --verison
calibredb (Calibre 3.39.1)
$ python -c "import os; print(os.uname())"
('Linux', 'raspberrypi', '5.10.63-v8+', '#1453 SMP PREEMPT Tue Sep 14 15:00:30 BST 2021', 'aarch64')
$ python --version
Python 2.7.16
$ python3 --version
Python 3.7.3
$ cat /etc/default/locale
#  File generated by update-locale
LANG=en_US.UTF-8 However, I’d like to be able to add books to the server without stopping the server then restarting it afterwards. It seems, according to the messages I’ve seen and the manual that calibredb can do this. So, I’m currently trying to figure out how. Looking at the manual page for calibredb, I saw how to list the library_id for each of the libraries on the content server: Code: $ calibredb —with-library 'http://localhost:8080/#-' list —username MyUser —password MyPass cookbooks fiction non-fiction technical Code: calibredb add /path-to-books-to-add-to-library/cookbooks/* —with-library 'http://localhost:8080/#cookbooks' —username MyUser —password MyPass Code: Traceback (most recent call last):
File “/usr/bin/calibredb”, line 20, in <module>
     sys.exit(main())
File “/usr/lib/calibre/calibre/db/cli/main.py”, line 255, in main
     return run_cmd(cmd, opts, args[1:], DBCtx(opts))
File “/usr/lib/calibre/calibre/db/cli/main.py”, line 55, in run_cmd
     ret = m.main(opts, args, dbctx)
File “/usr/lib/calibre/calibre/db/cli/cmd_add.py”, line 366, in main
     identifiers, lcodes, opts.filters
File “/usr/lib/calibre/calibre/db/cli/cmd_add.py”, line 164, in do_add
     oidentifiers, olanguages
File “/usr/lib/calibre/calibre/db/cli/main.py”, line 191, in run
     return self.remote_run(name, m, args)
File “/usr/lib/calibre/calibre/db/cli/main.py”, line 213, in remote_run
     res = self.br.open_novisit(rq)
File “/usr/lib/python2.7/dist-packages/mechanize/_mechanize.py”, line 199, in open_novisit
     return self._mech_open(url, data, visit=False, timeout=timeout)
File “/usr/lib/python2.7/dist-packages/mechanize/_mechanize.py”, line 230, in _mech_open
     response = UserAgentBase.open(self, request, data)
File “/usr/lib/python2.7/dist-packages/mechanize/_opener.py”, line 193, in open
     response = urlopen(self, req, data)
File “/usr/lib/python2.7/dist-packages/mechanize/_urllib2_fork.py”, line 344, in _open
    ’_open’, req)
File “/usr/lib/python2.7/dist-packages/mechanize/_urllib2_fork.py”, line 332, in _call_chain
     result = func(args)
File “/usr/lib/python2.7/dist-packages/mechanize/_urllib2_fork.py”, line 1142, in http_open
     return self.do_open(httplib.HTTPConnection, req)
File “/usr/lib/python2.7/dist-packages/mechanize/_urllib2_fork.py”, line 1115, in do_open
     h.request(req.get_method(), req.get_selector(), req.data, headers)
File “/usr/lib/python2.7/httplib.py”, line 1058, in request
     self._send_request(method, url, body, headers)
File “/usr/lib/python2.7/httplib.py”, line 1098, in _send_request
     self.endheaders(body)
File “/usr/lib/python2.7/httplib.py”, line 1054, in endheaders
     self._send_output(message_body)
File “/usr/lib/python2.7/httplib.py”, line 890, in _send_output
     msg += message_body
UnicodeDecodeError: ‘utf8’ codec can’t decode byte 0x9e in position 0: invalid start byteCode: $ sudo systemctl stop calibre-server $ calibredb add /path-to-books-to-add-to-library/cookbooks/* --with-library ~/calibre-library/cookbooks --username MyUser --password MyPass Added book ids: 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26 $ sudo systemctl start calibre-server Searching, I saw this post by KovidGoyal that showed an equal sign between the --with-library and the http-and-library_id path and no single quotes like when I got the library_id listing. So, I gave that a shot. Code: calibredb add /path-to-books-to-add-to-library/cookbooks/* —with-library=http://localhost:8080/#cookbooks —username MyUser —password MyPass  I can add books if I stop the server, add them and then start the server again.  But using calibredb (which the manual says is used to connect to a server that's running) throws an error.  What am I missing or have misconfigured? | 
|   |   | 
|  09-16-2021, 09:36 PM | #2 | 
| creator of calibre            Posts: 45,604 Karma: 28548974 Join Date: Oct 2006 Location: Mumbai, India Device: Various | 
			
			Your version of calibre is too old.
		 | 
|   |   | 
| Advert | |
|  | 
|  09-17-2021, 11:01 AM | #3 | 
| Connoisseur  Posts: 52 Karma: 10 Join Date: Sep 2021 Location: Upstate NY, USA Device: iPad Pro, Kindle basic | 
			
			Ah.  The functionality of calibredb to interface with a currently-running instance of calibre-server was added in versions after the one available in the repos. Good to know that. Thank you. While it's unfortunate that the ARM repos are so out-of-date, I do appreciate the software and the effort that's gone into creating it. As well as your respose here. Thanks! While i wait for repos to get updated to something approximating "current" i'll set up a cron job to stop the server, the one to import books, and then one to restart the server. best wishes! | 
|   |   | 
|  | 
| Tags | 
| arm64, calibredb, python error, raspberry pi 4 | 
| Thread Tools | Search this Thread | 
| 
 | 
|  Similar Threads | ||||
| Thread | Thread Starter | Forum | Replies | Last Post | 
| Python error when accessing content server with calibredb | drawson1 | Library Management | 1 | 06-19-2018 12:08 PM | 
| calibredb cannot add with content server running | apiontek | Calibre | 10 | 08-04-2017 04:50 AM | 
| Calibre-server / Linux don't see calibreDB update when it's running | aurigod | Calibre | 13 | 11-25-2015 02:44 AM | 
| Running calibre-server with auto add | Hiryu | Library Management | 21 | 12-05-2014 06:15 PM | 
| Add a book from another computer running calibre server | gandor62 | Library Management | 2 | 06-29-2011 11:24 AM |