Register Guidelines E-Books Today's Posts Search

Go Back   MobileRead Forums > Miscellaneous > Introduce Yourself

Notices

Reply
 
Thread Tools Search this Thread
Old 10-19-2018, 08:27 PM   #1
Einix
Junior Member
Einix began at the beginning.
 
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
Einix is offline   Reply With Quote
Old 10-19-2018, 10:23 PM   #2
02xda2
moddedmad
02xda2 ought to be getting tired of karma fortunes by now.02xda2 ought to be getting tired of karma fortunes by now.02xda2 ought to be getting tired of karma fortunes by now.02xda2 ought to be getting tired of karma fortunes by now.02xda2 ought to be getting tired of karma fortunes by now.02xda2 ought to be getting tired of karma fortunes by now.02xda2 ought to be getting tired of karma fortunes by now.02xda2 ought to be getting tired of karma fortunes by now.02xda2 ought to be getting tired of karma fortunes by now.02xda2 ought to be getting tired of karma fortunes by now.02xda2 ought to be getting tired of karma fortunes by now.
 
Posts: 2,120
Karma: 3911694
Join Date: Jan 2018
Device: none
Hi Einix,

Welcome to MobileRead !

Glad you are here. Post your Calibre related queries HERE and especially HERE for what you are facing/trying to do.
02xda2 is offline   Reply With Quote
Reply


Forum Jump

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


All times are GMT -4. The time now is 01:35 AM.


MobileRead.com is a privately owned, operated and funded community.