Quote:
Originally Posted by minstrel
7) Is there a way to debug Calibre plugins, like writing some debugging text to a console when the run() method is called?
|
A minor update: Reading up some more in an older thread I figured out I can launch "calibredb add [myfile.html]" from the command line, thus enabling nice print debug output from my python plugin.
Thus I nicely was able to verify that my plugin gets called from the importer, and the regular expression works. I even get to see the temporary file name. However, with nicely returning the tempfile's name I still get the original text in my ebook, not the substituted one.
What am I doing wrong?
Code:
import os, re
from calibre.customize import FileTypePlugin
class CleanupLitPlugin(FileTypePlugin):
name = 'Regular Expression plugin' # Name of the plugin
description = 'Apply Regular Expression to input'
supported_platforms = ['windows', 'osx', 'linux'] # Platforms this plugin will run on
author = 'Markus Brenner' # The author of this plugin
version = (1, 0, 0) # The version number of this plugin
file_types = set(['html', 'epub']) # The file types that this plugin will be applied to
on_import = True
def run(self, path_to_ebook):
file = open(path_to_ebook, 'r+b')
outfile = self.temporary_file(".html")
for line in file:
output = re.sub(r'Hello',r'World',line)
print output
outfile.write(output)
outfile.close()
print outfile.name
return outfile.name
Output:
Code:
C:\Users\mab\Documents\Calibre-test\HMTL>calibredb add test.html
Loading plugin from C:\Users\mab\AppData\Roaming\calibre\plugins\Regular Express
ion plugin.zip
<html>
<body>
<p>World, good morning.</p>
</body>
</html>
c:\users\mab\appdata\local\temp\calibre_0.5.6_9qee2x.html
Building file list...
Parsing Calibre-test\HMTL\test.html
Open ebook created in c:\users\mab\appdata\local\temp\calibre_0.5.6_13qosd_create_oebzip
Output saved to c:\users\mab\appdata\local\temp\calibre_0.5.6_svedje_plugin_html
2zip.zip