10-19-2018, 08:27 PM | #1 |
Junior Member
Posts: 3
Karma: 10
Join Date: Oct 2018
Device: Moonreader+
|
Problems with Plugin Demo
Hi all,
I am using calibre for a while now. Love it, Thanks for all the good work. Also thanks for the many plugins. There are a few things I would like to get done. So I looked into the plugin development. Downloaded the demo code. And voila: It didn't work ? I tried the simple hello_world __init__.py demo, it seems to update the publisher temporarily, but some doesn't save it permanently. PS: I don't know where to post new questions, the only option I am allowed to post seems to be here ?! Then I tried the interface demo. Same effect here. I added some prints for debugging, I am running under Linux, I changed the demo: def update_title(self): ''' Set the metadata in the files in the selected book's record to match the current metadata in the database. ''' from calibre.ebooks.metadata.meta import set_metadata, get_metadata from calibre.gui2 import error_dialog, info_dialog # Get currently selected books rows = self.gui.library_view.selectionModel().selectedRow s() if not rows or len(rows) == 0: return error_dialog(self.gui, 'Cannot update metadata', 'No books selected', show=True) # Map the rows to book ids ids = list(map(self.gui.library_view.model().id, rows)) db = self.db.new_api for book_id in ids: # Get the current metadata for this book from the db mi = db.get_metadata(book_id, get_cover=True, cover_as_data=True) fmts = db.formats(book_id) if not fmts: continue for fmt in fmts: # Get a python file object for the format. This will be either # an in memory file or a temporary on disk file ffile = db.format(book_id, fmt, as_file=True) ffile.seek(0) print ("Original Publisher: ", mi.publisher) #change value mi.publisher = "Test Publisher" # Set metadata in the format set_metadata(ffile, mi, fmt) ffile.seek(0) print ("Updated Publisher: ", mi.publisher) # Now replace the file in the calibre library with the updated # file. We dont use add_format_with_hooks as the hooks were # already run when the file was first added to calibre. db.add_format(book_id, fmt, ffile, run_hooks=False) print ("Refreshed Publisher: ", mi.publisher) info_dialog(self, 'Updated files', 'Updated the metadata in the files of %d book(s)'%len(ids), show=True) the debug output is: einix@Eva:~/workspace/interface_demo_plugin> calibre-customize -b . & calibre-debug -g [1] 20151 calibre 3.27.1 embedded-python: False is64bit: True Linux-4.12.14-lp150.12.22-default-x86_64-with-glibc2.2.5 Linux ('64bit', '') ('Linux', '4.12.14-lp150.12.22-default', '#1 SMP Sat Oct 13 05:05:16 UTC 2018 (09415e8)') Python 2.7.14 Linux: ('', '', '') Interface language: en_GB Plugin updated: Interface Plugin Demo (1, 0, 0) Successfully initialized third party plugins: Quality Check (1, 9, 11) && EpubSplit (2, 4, 0) && Interface Plugin Demo (1, 0, 0) && Find Duplicates (1, 6, 3) Not controlling automatic hidpi scaling devicePixelRatio: 1.0 logicalDpi: 96.3794466403 x 96.4556962025 physicalDpi: 93.7846153846 x 95.25 Using calibre Qt style: True [0.00] Starting up... [0.03] Showing splash screen... [2.06] splash screen shown [2.06] Initializing db... [2.08] db initialized [2.08] Constructing main UI... libpng warning: iCCP: known incorrect sRGB profile libpng warning: iCCP: known incorrect sRGB profile Looking for desktop notifier support from: org.freedesktop.Notifications org.freedesktop.Notifications found in 0.0 seconds [4.76] main UI initialized... [4.76] Hiding splash screen [5.11] splash screen hidden [5.11] Started up in 5.11 seconds with 1 books "First run" Original Publisher: Blackmore Dennett Updated Publisher: Test Publisher Refreshed Publisher: Test Publisher Original Publisher: Test Publisher Updated Publisher: Test Publisher Refreshed Publisher: Test Publisher Also why would the print be repeated twice? "and if I press the button again": Original Publisher: Blackmore Dennett Updated Publisher: Test Publisher Refreshed Publisher: Test Publisher Original Publisher: Test Publisher Updated Publisher: Test Publisher Refreshed Publisher: Test Publisher So it reads the old metadata back, not the new one? Is there any switch I need to flip to get changes actually written? And would that write to the opf file or the database? (I checked both no updates) Thanks guys |
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Kindle Fire Demo Unit...Remove Demo 'Software'? | JayOf72 | Kindle Fire | 23 | 11-11-2016 09:41 PM |
Got a Demo Kindle (k5) from work, need to remove demo software. | Stea1th | Kindle Developer's Corner | 71 | 09-02-2014 02:46 PM |
Demo Kindle Keyboard USB Problems | tommytomtom | Kindle Developer's Corner | 1 | 01-25-2013 03:42 AM |
Problems with MobiDeDrm 0.16 plugin | boothy | Plugins | 4 | 08-30-2010 08:48 AM |
Mobi Dedrm plugin problems | FourGold | Plugins | 9 | 08-01-2010 01:34 PM |