14
15
file containing all linked files. This plugin is run \
15
16
every time you add an HTML file to the library.\
17
version = tuple(map(int, (__version__.split('.'))[:3]))
18
file_types = set(['html', 'htm', 'xhtml', 'xhtm'])
18
version = numeric_version
19
file_types = set(['html', 'htm', 'xhtml', 'xhtm', 'shtm', 'shtml'])
19
20
supported_platforms = ['windows', 'osx', 'linux']
22
23
def run(self, htmlfile):
23
of = self.temporary_file('_plugin_html2zip.zip')
24
from calibre.ebooks.html import gui_main as html2oeb
25
html2oeb(htmlfile, of)
24
from calibre.ptempfile import TemporaryDirectory
25
from calibre.gui2.convert.gui_conversion import gui_convert
26
from calibre.customize.conversion import OptionRecommendation
27
from calibre.ebooks.epub import initialize_container
29
with TemporaryDirectory('_plugin_html2zip') as tdir:
30
recs =[('debug_input', tdir, OptionRecommendation.HIGH)]
31
if self.site_customization and self.site_customization.strip():
32
recs.append(['input_encoding', self.site_customization.strip(),
33
OptionRecommendation.HIGH])
34
gui_convert(htmlfile, tdir, recs)
35
of = self.temporary_file('_plugin_html2zip.zip')
36
opf = glob.glob(os.path.join(tdir, '*.opf'))[0]
37
ncx = glob.glob(os.path.join(tdir, '*.ncx'))
40
epub = initialize_container(of.name, os.path.basename(opf))
28
class OPFMetadataReader(MetadataReaderPlugin):
30
name = 'Read OPF metadata'
31
file_types = set(['opf'])
32
description = _('Read metadata from %s files')%'OPF'
46
def customization_help(self, gui=False):
47
return _('Character encoding for the input HTML files. Common choices '
48
'include: cp1252, latin1, iso-8859-1 and utf-8.')
51
class ComicMetadataReader(MetadataReaderPlugin):
53
name = 'Read comic metadata'
54
file_types = set(['cbr', 'cbz'])
55
description = _('Extract cover from comic files')
34
57
def get_metadata(self, stream, ftype):
35
from calibre.ebooks.metadata.opf2 import OPF
59
from calibre.libunrar import extract_member as extract_first
62
from calibre.libunzip import extract_member as extract_first
36
63
from calibre.ebooks.metadata import MetaInformation
37
return MetaInformation(OPF(stream, os.getcwd()))
39
class RTFMetadataReader(MetadataReaderPlugin):
41
name = 'Read RTF metadata'
42
file_types = set(['rtf'])
43
description = _('Read metadata from %s files')%'RTF'
64
ret = extract_first(stream)
65
mi = MetaInformation(None, None)
68
ext = os.path.splitext(path)[1][1:]
69
mi.cover_data = (ext.lower(), data)
72
class EPUBMetadataReader(MetadataReaderPlugin):
74
name = 'Read EPUB metadata'
75
file_types = set(['epub'])
76
description = _('Read metadata from %s files')%'EPUB'
45
78
def get_metadata(self, stream, ftype):
46
from calibre.ebooks.metadata.rtf import get_metadata
79
from calibre.ebooks.metadata.epub import get_metadata
47
80
return get_metadata(stream)
49
82
class FB2MetadataReader(MetadataReaderPlugin):
51
84
name = 'Read FB2 metadata'
52
85
file_types = set(['fb2'])
53
86
description = _('Read metadata from %s files')%'FB2'
55
88
def get_metadata(self, stream, ftype):
56
89
from calibre.ebooks.metadata.fb2 import get_metadata
57
90
return get_metadata(stream)
92
class HTMLMetadataReader(MetadataReaderPlugin):
94
name = 'Read HTML metadata'
95
file_types = set(['html'])
96
description = _('Read metadata from %s files')%'HTML'
98
def get_metadata(self, stream, ftype):
99
from calibre.ebooks.metadata.html import get_metadata
100
return get_metadata(stream)
102
class IMPMetadataReader(MetadataReaderPlugin):
104
name = 'Read IMP metadata'
105
file_types = set(['imp'])
106
description = _('Read metadata from %s files')%'IMP'
107
author = 'Ashish Kulkarni'
109
def get_metadata(self, stream, ftype):
110
from calibre.ebooks.metadata.imp import get_metadata
111
return get_metadata(stream)
113
class LITMetadataReader(MetadataReaderPlugin):
115
name = 'Read LIT metadata'
116
file_types = set(['lit'])
117
description = _('Read metadata from %s files')%'LIT'
119
def get_metadata(self, stream, ftype):
120
from calibre.ebooks.metadata.lit import get_metadata
121
return get_metadata(stream)
60
123
class LRFMetadataReader(MetadataReaderPlugin):
62
125
name = 'Read LRF metadata'
63
126
file_types = set(['lrf'])
64
127
description = _('Read metadata from %s files')%'LRF'
66
129
def get_metadata(self, stream, ftype):
67
130
from calibre.ebooks.lrf.meta import get_metadata
68
131
return get_metadata(stream)
133
class LRXMetadataReader(MetadataReaderPlugin):
135
name = 'Read LRX metadata'
136
file_types = set(['lrx'])
137
description = _('Read metadata from %s files')%'LRX'
139
def get_metadata(self, stream, ftype):
140
from calibre.ebooks.metadata.lrx import get_metadata
141
return get_metadata(stream)
143
class MOBIMetadataReader(MetadataReaderPlugin):
145
name = 'Read MOBI metadata'
146
file_types = set(['mobi', 'prc', 'azw'])
147
description = _('Read metadata from %s files')%'MOBI'
149
def get_metadata(self, stream, ftype):
150
from calibre.ebooks.mobi.reader import get_metadata
151
return get_metadata(stream)
153
class ODTMetadataReader(MetadataReaderPlugin):
155
name = 'Read ODT metadata'
156
file_types = set(['odt'])
157
description = _('Read metadata from %s files')%'ODT'
159
def get_metadata(self, stream, ftype):
160
from calibre.ebooks.metadata.odt import get_metadata
161
return get_metadata(stream)
163
class OPFMetadataReader(MetadataReaderPlugin):
165
name = 'Read OPF metadata'
166
file_types = set(['opf'])
167
description = _('Read metadata from %s files')%'OPF'
169
def get_metadata(self, stream, ftype):
170
from calibre.ebooks.metadata.opf2 import OPF
171
from calibre.ebooks.metadata import MetaInformation
172
return MetaInformation(OPF(stream, os.getcwd()))
174
class PDBMetadataReader(MetadataReaderPlugin):
176
name = 'Read PDB metadata'
177
file_types = set(['pdb'])
178
description = _('Read metadata from %s files') % 'PDB'
179
author = 'John Schember'
181
def get_metadata(self, stream, ftype):
182
from calibre.ebooks.metadata.pdb import get_metadata
183
return get_metadata(stream)
70
185
class PDFMetadataReader(MetadataReaderPlugin):
72
187
name = 'Read PDF metadata'
73
188
file_types = set(['pdf'])
74
189
description = _('Read metadata from %s files')%'PDF'
76
def get_metadata(self, stream, ftype):
77
from calibre.ebooks.metadata.pdf import get_metadata
78
return get_metadata(stream)
80
class LITMetadataReader(MetadataReaderPlugin):
82
name = 'Read LIT metadata'
83
file_types = set(['lit'])
84
description = _('Read metadata from %s files')%'LIT'
86
def get_metadata(self, stream, ftype):
87
from calibre.ebooks.metadata.lit import get_metadata
88
return get_metadata(stream)
90
class IMPMetadataReader(MetadataReaderPlugin):
92
name = 'Read IMP metadata'
93
file_types = set(['imp'])
94
description = _('Read metadata from %s files')%'IMP'
95
author = 'Ashish Kulkarni'
97
def get_metadata(self, stream, ftype):
98
from calibre.ebooks.metadata.imp import get_metadata
191
def get_metadata(self, stream, ftype):
192
from calibre.ebooks.metadata.pdf import get_metadata, get_quick_metadata
194
return get_quick_metadata(stream)
195
return get_metadata(stream)
197
class RARMetadataReader(MetadataReaderPlugin):
199
name = 'Read RAR metadata'
200
file_types = set(['rar'])
201
description = _('Read metadata from ebooks in RAR archives')
203
def get_metadata(self, stream, ftype):
204
from calibre.ebooks.metadata.rar import get_metadata
99
205
return get_metadata(stream)
101
207
class RBMetadataReader(MetadataReaderPlugin):
103
209
name = 'Read RB metadata'
104
210
file_types = set(['rb'])
105
211
description = _('Read metadata from %s files')%'RB'
106
212
author = 'Ashish Kulkarni'
108
214
def get_metadata(self, stream, ftype):
109
215
from calibre.ebooks.metadata.rb import get_metadata
110
216
return get_metadata(stream)
112
class EPUBMetadataReader(MetadataReaderPlugin):
114
name = 'Read EPUB metadata'
115
file_types = set(['epub'])
116
description = _('Read metadata from %s files')%'EPUB'
118
def get_metadata(self, stream, ftype):
119
from calibre.ebooks.metadata.epub import get_metadata
120
return get_metadata(stream)
122
class HTMLMetadataReader(MetadataReaderPlugin):
124
name = 'Read HTML metadata'
125
file_types = set(['html'])
126
description = _('Read metadata from %s files')%'HTML'
128
def get_metadata(self, stream, ftype):
129
from calibre.ebooks.metadata.html import get_metadata
130
return get_metadata(stream)
132
class MOBIMetadataReader(MetadataReaderPlugin):
134
name = 'Read MOBI metadata'
135
file_types = set(['mobi', 'prc', 'azw'])
136
description = _('Read metadata from %s files')%'MOBI'
138
def get_metadata(self, stream, ftype):
139
from calibre.ebooks.mobi.reader import get_metadata
140
return get_metadata(stream)
218
class RTFMetadataReader(MetadataReaderPlugin):
220
name = 'Read RTF metadata'
221
file_types = set(['rtf'])
222
description = _('Read metadata from %s files')%'RTF'
224
def get_metadata(self, stream, ftype):
225
from calibre.ebooks.metadata.rtf import get_metadata
226
return get_metadata(stream)
143
228
class TOPAZMetadataReader(MetadataReaderPlugin):
145
230
name = 'Read Topaz metadata'
146
231
file_types = set(['tpz', 'azw1'])
147
232
description = _('Read metadata from %s files')%'MOBI'
149
234
def get_metadata(self, stream, ftype):
150
235
from calibre.ebooks.metadata.topaz import get_metadata
151
236
return get_metadata(stream)
153
class ODTMetadataReader(MetadataReaderPlugin):
155
name = 'Read ODT metadata'
156
file_types = set(['odt'])
157
description = _('Read metadata from %s files')%'ODT'
159
def get_metadata(self, stream, ftype):
160
from calibre.ebooks.metadata.odt import get_metadata
161
return get_metadata(stream)
163
class LRXMetadataReader(MetadataReaderPlugin):
165
name = 'Read LRX metadata'
166
file_types = set(['lrx'])
167
description = _('Read metadata from %s files')%'LRX'
169
def get_metadata(self, stream, ftype):
170
from calibre.ebooks.metadata.lrx import get_metadata
171
return get_metadata(stream)
173
class ComicMetadataReader(MetadataReaderPlugin):
175
name = 'Read comic metadata'
176
file_types = set(['cbr', 'cbz'])
177
description = _('Extract cover from comic files')
179
def get_metadata(self, stream, ftype):
181
from calibre.libunrar import extract_member as extract_first
183
from calibre.libunzip import extract_member as extract_first
184
from calibre.ebooks.metadata import MetaInformation
185
ret = extract_first(stream)
186
mi = MetaInformation(None, None)
189
ext = os.path.splitext(path)[1][1:]
190
mi.cover_data = (ext.lower(), data)
238
class TXTMetadataReader(MetadataReaderPlugin):
240
name = 'Read TXT metadata'
241
file_types = set(['txt'])
242
description = _('Read metadata from %s files') % 'TXT'
243
author = 'John Schember'
245
def get_metadata(self, stream, ftype):
246
from calibre.ebooks.metadata.txt import get_metadata
247
return get_metadata(stream)
193
249
class ZipMetadataReader(MetadataReaderPlugin):
195
251
name = 'Read ZIP metadata'
196
252
file_types = set(['zip', 'oebzip'])
197
253
description = _('Read metadata from ebooks in ZIP archives')
199
255
def get_metadata(self, stream, ftype):
200
256
from calibre.ebooks.metadata.zip import get_metadata
201
257
return get_metadata(stream)
203
class RARMetadataReader(MetadataReaderPlugin):
205
name = 'Read RAR metadata'
206
file_types = set(['rar'])
207
description = _('Read metadata from ebooks in RAR archives')
209
def get_metadata(self, stream, ftype):
210
from calibre.ebooks.metadata.rar import get_metadata
211
return get_metadata(stream)
214
260
class EPUBMetadataWriter(MetadataWriterPlugin):
216
262
name = 'Set EPUB metadata'
217
263
file_types = set(['epub'])
218
264
description = _('Set metadata in %s files')%'EPUB'
220
266
def set_metadata(self, stream, mi, type):
221
267
from calibre.ebooks.metadata.epub import set_metadata
222
268
set_metadata(stream, mi)
224
270
class LRFMetadataWriter(MetadataWriterPlugin):
226
272
name = 'Set LRF metadata'
227
273
file_types = set(['lrf'])
228
274
description = _('Set metadata in %s files')%'LRF'
230
276
def set_metadata(self, stream, mi, type):
231
277
from calibre.ebooks.lrf.meta import set_metadata
232
278
set_metadata(stream, mi)
234
class RTFMetadataWriter(MetadataWriterPlugin):
236
name = 'Set RTF metadata'
237
file_types = set(['rtf'])
238
description = _('Set metadata in %s files')%'RTF'
240
def set_metadata(self, stream, mi, type):
241
from calibre.ebooks.metadata.rtf import set_metadata
242
set_metadata(stream, mi)
244
280
class MOBIMetadataWriter(MetadataWriterPlugin):
246
282
name = 'Set MOBI metadata'
247
283
file_types = set(['mobi', 'prc', 'azw'])
248
284
description = _('Set metadata in %s files')%'MOBI'
249
285
author = 'Marshall T. Vandegrift'
251
287
def set_metadata(self, stream, mi, type):
252
288
from calibre.ebooks.metadata.mobi import set_metadata
253
289
set_metadata(stream, mi)
291
class PDBMetadataWriter(MetadataWriterPlugin):
293
name = 'Set PDB metadata'
294
file_types = set(['pdb'])
295
description = _('Set metadata from %s files') % 'PDB'
296
author = 'John Schember'
298
def set_metadata(self, stream, mi, type):
299
from calibre.ebooks.metadata.pdb import set_metadata
300
set_metadata(stream, mi)
255
302
class PDFMetadataWriter(MetadataWriterPlugin):
257
304
name = 'Set PDF metadata'
258
305
file_types = set(['pdf'])
259
306
description = _('Set metadata in %s files') % 'PDF'
260
author = 'John Schember'
307
author = 'Kovid Goyal'
262
309
def set_metadata(self, stream, mi, type):
263
310
from calibre.ebooks.metadata.pdf import set_metadata
264
311
set_metadata(stream, mi)
313
class RTFMetadataWriter(MetadataWriterPlugin):
315
name = 'Set RTF metadata'
316
file_types = set(['rtf'])
317
description = _('Set metadata in %s files')%'RTF'
319
def set_metadata(self, stream, mi, type):
320
from calibre.ebooks.metadata.rtf import set_metadata
321
set_metadata(stream, mi)
324
from calibre.ebooks.comic.input import ComicInput
325
from calibre.ebooks.epub.input import EPUBInput
326
from calibre.ebooks.fb2.input import FB2Input
327
from calibre.ebooks.html.input import HTMLInput
328
from calibre.ebooks.lit.input import LITInput
329
from calibre.ebooks.mobi.input import MOBIInput
330
from calibre.ebooks.odt.input import ODTInput
331
from calibre.ebooks.pdb.input import PDBInput
332
from calibre.ebooks.pdf.input import PDFInput
333
from calibre.ebooks.pml.input import PMLInput
334
from calibre.ebooks.rb.input import RBInput
335
from calibre.web.feeds.input import RecipeInput
336
from calibre.ebooks.rtf.input import RTFInput
337
from calibre.ebooks.txt.input import TXTInput
339
from calibre.ebooks.epub.output import EPUBOutput
340
from calibre.ebooks.fb2.output import FB2Output
341
from calibre.ebooks.lit.output import LITOutput
342
from calibre.ebooks.lrf.output import LRFOutput
343
from calibre.ebooks.mobi.output import MOBIOutput
344
from calibre.ebooks.oeb.output import OEBOutput
345
from calibre.ebooks.pdb.output import PDBOutput
346
from calibre.ebooks.pdf.output import PDFOutput
347
from calibre.ebooks.pml.output import PMLOutput
348
from calibre.ebooks.rb.output import RBOutput
349
from calibre.ebooks.rtf.output import RTFOutput
350
from calibre.ebooks.txt.output import TXTOutput
352
from calibre.customize.profiles import input_profiles, output_profiles
355
from calibre.devices.bebook.driver import BEBOOK, BEBOOK_MINI
356
from calibre.devices.blackberry.driver import BLACKBERRY
357
from calibre.devices.cybookg3.driver import CYBOOKG3
358
from calibre.devices.eb600.driver import EB600
359
from calibre.devices.irexdr.driver import IREXDR1000
360
from calibre.devices.jetbook.driver import JETBOOK
361
from calibre.devices.kindle.driver import KINDLE, KINDLE2, KINDLE_DX
362
from calibre.devices.prs500.driver import PRS500
363
from calibre.devices.prs505.driver import PRS505
364
from calibre.devices.prs700.driver import PRS700
365
from calibre.devices.android.driver import ANDROID
267
367
plugins = [HTML2ZIP]
268
414
plugins += [x for x in list(locals().values()) if isinstance(x, type) and \
269
415
x.__name__.endswith('MetadataReader')]
270
416
plugins += [x for x in list(locals().values()) if isinstance(x, type) and \
271
417
x.__name__.endswith('MetadataWriter')]
418
plugins += input_profiles + output_profiles