Added initial support for AZW3, validates in Kindle Previewer

This commit is contained in:
GRiker 2012-08-07 04:59:31 -06:00
parent 1792fad11c
commit d4e236c218
3 changed files with 21 additions and 20 deletions

View File

@ -85,7 +85,7 @@ class GenerateCatalogAction(InterfaceAction):
dynamic.set('catalogs_to_be_synced', sync) dynamic.set('catalogs_to_be_synced', sync)
self.gui.status_bar.show_message(_('Catalog generated.'), 3000) self.gui.status_bar.show_message(_('Catalog generated.'), 3000)
self.gui.sync_catalogs() self.gui.sync_catalogs()
if job.fmt not in ['EPUB','MOBI']: if job.fmt not in ['AZW3','EPUB','MOBI']:
export_dir = choose_dir(self.gui, _('Export Catalog Directory'), export_dir = choose_dir(self.gui, _('Export Catalog Directory'),
_('Select destination for %(title)s.%(fmt)s') % dict( _('Select destination for %(title)s.%(fmt)s') % dict(
title=job.catalog_title, fmt=job.fmt.lower())) title=job.catalog_title, fmt=job.fmt.lower()))

View File

@ -25,7 +25,7 @@ from PyQt4.Qt import (Qt, QAbstractItemView, QCheckBox, QComboBox, QDialog,
class PluginWidget(QWidget,Ui_Form): class PluginWidget(QWidget,Ui_Form):
TITLE = _('E-book options') TITLE = _('E-book options')
HELP = _('Options specific to')+' EPUB/MOBI '+_('output') HELP = _('Options specific to')+' AZW3/EPUB/MOBI '+_('output')
# Output synced to the connected device? # Output synced to the connected device?
sync_enabled = True sync_enabled = True

View File

@ -20,7 +20,7 @@ class EPUB_MOBI(CatalogPlugin):
'ePub catalog generator' 'ePub catalog generator'
name = 'Catalog_EPUB_MOBI' name = 'Catalog_EPUB_MOBI'
description = 'EPUB/MOBI catalog generator' description = 'AZW3/EPUB/MOBI catalog generator'
supported_platforms = ['windows', 'osx', 'linux'] supported_platforms = ['windows', 'osx', 'linux']
minimum_calibre_version = (0, 7, 40) minimum_calibre_version = (0, 7, 40)
author = 'Greg Riker' author = 'Greg Riker'
@ -36,7 +36,7 @@ class EPUB_MOBI(CatalogPlugin):
action = None, action = None,
help = _('Title of generated catalog used as title in metadata.\n' help = _('Title of generated catalog used as title in metadata.\n'
"Default: '%default'\n" "Default: '%default'\n"
"Applies to: ePub, MOBI output formats")), "Applies to: AZW3, ePub, MOBI output formats")),
Option('--debug-pipeline', Option('--debug-pipeline',
default=None, default=None,
dest='debug_pipeline', dest='debug_pipeline',
@ -46,17 +46,17 @@ class EPUB_MOBI(CatalogPlugin):
"directory. Useful if you are unsure at which stage " "directory. Useful if you are unsure at which stage "
"of the conversion process a bug is occurring.\n" "of the conversion process a bug is occurring.\n"
"Default: '%default'\n" "Default: '%default'\n"
"Applies to: ePub, MOBI output formats")), "Applies to: AZW3, ePub, MOBI output formats")),
Option('--exclude-genre', Option('--exclude-genre',
default='\[.+\]|\+', default='\[.+\]|\+',
dest='exclude_genre', dest='exclude_genre',
action = None, action = None,
help=_("Regex describing tags to exclude as genres.\n" help=_("Regex describing tags to exclude as genres.\n"
"Default: '%default' excludes bracketed tags, e.g. '[Project Gutenberg]', and '+', the default tag for read books.\n" "Default: '%default' excludes bracketed tags, e.g. '[Project Gutenberg]', and '+', the default tag for read books.\n"
"Applies to: ePub, MOBI output formats")), "Applies to: AZW3, ePub, MOBI output formats")),
Option('--exclusion-rules', Option('--exclusion-rules',
default="(('Excluded tags','Tags','~,Catalog'),)", default="(('Excluded tags','Tags','Catalog'),)",
dest='exclusion_rules', dest='exclusion_rules',
action=None, action=None,
help=_("Specifies the rules used to exclude books from the generated catalog.\n" help=_("Specifies the rules used to exclude books from the generated catalog.\n"
@ -67,7 +67,7 @@ class EPUB_MOBI(CatalogPlugin):
"will exclude a book with a value of 'Archived' in the custom column 'status'.\n" "will exclude a book with a value of 'Archived' in the custom column 'status'.\n"
"When multiple rules are defined, all rules will be applied.\n" "When multiple rules are defined, all rules will be applied.\n"
"Default: \n" + '"' + '%default' + '"' + "\n" "Default: \n" + '"' + '%default' + '"' + "\n"
"Applies to ePub, MOBI output formats")), "Applies to AZW3, ePub, MOBI output formats")),
Option('--generate-authors', Option('--generate-authors',
default=False, default=False,
@ -75,49 +75,49 @@ class EPUB_MOBI(CatalogPlugin):
action = 'store_true', action = 'store_true',
help=_("Include 'Authors' section in catalog.\n" help=_("Include 'Authors' section in catalog.\n"
"Default: '%default'\n" "Default: '%default'\n"
"Applies to: ePub, MOBI output formats")), "Applies to: AZW3, ePub, MOBI output formats")),
Option('--generate-descriptions', Option('--generate-descriptions',
default=False, default=False,
dest='generate_descriptions', dest='generate_descriptions',
action = 'store_true', action = 'store_true',
help=_("Include 'Descriptions' section in catalog.\n" help=_("Include 'Descriptions' section in catalog.\n"
"Default: '%default'\n" "Default: '%default'\n"
"Applies to: ePub, MOBI output formats")), "Applies to: AZW3, ePub, MOBI output formats")),
Option('--generate-genres', Option('--generate-genres',
default=False, default=False,
dest='generate_genres', dest='generate_genres',
action = 'store_true', action = 'store_true',
help=_("Include 'Genres' section in catalog.\n" help=_("Include 'Genres' section in catalog.\n"
"Default: '%default'\n" "Default: '%default'\n"
"Applies to: ePub, MOBI output formats")), "Applies to: AZW3, ePub, MOBI output formats")),
Option('--generate-titles', Option('--generate-titles',
default=False, default=False,
dest='generate_titles', dest='generate_titles',
action = 'store_true', action = 'store_true',
help=_("Include 'Titles' section in catalog.\n" help=_("Include 'Titles' section in catalog.\n"
"Default: '%default'\n" "Default: '%default'\n"
"Applies to: ePub, MOBI output formats")), "Applies to: AZW3, ePub, MOBI output formats")),
Option('--generate-series', Option('--generate-series',
default=False, default=False,
dest='generate_series', dest='generate_series',
action = 'store_true', action = 'store_true',
help=_("Include 'Series' section in catalog.\n" help=_("Include 'Series' section in catalog.\n"
"Default: '%default'\n" "Default: '%default'\n"
"Applies to: ePub, MOBI output formats")), "Applies to: AZW3, ePub, MOBI output formats")),
Option('--generate-recently-added', Option('--generate-recently-added',
default=False, default=False,
dest='generate_recently_added', dest='generate_recently_added',
action = 'store_true', action = 'store_true',
help=_("Include 'Recently Added' section in catalog.\n" help=_("Include 'Recently Added' section in catalog.\n"
"Default: '%default'\n" "Default: '%default'\n"
"Applies to: ePub, MOBI output formats")), "Applies to: AZW3, ePub, MOBI output formats")),
Option('--header-note-source-field', Option('--header-note-source-field',
default='', default='',
dest='header_note_source_field', dest='header_note_source_field',
action = None, action = None,
help=_("Custom field containing note text to insert in Description header.\n" help=_("Custom field containing note text to insert in Description header.\n"
"Default: '%default'\n" "Default: '%default'\n"
"Applies to: ePub, MOBI output formats")), "Applies to: AZW3, ePub, MOBI output formats")),
Option('--merge-comments', Option('--merge-comments',
default='::', default='::',
dest='merge_comments', dest='merge_comments',
@ -127,14 +127,14 @@ class EPUB_MOBI(CatalogPlugin):
" [before|after] Placement of notes with respect to Comments\n" " [before|after] Placement of notes with respect to Comments\n"
" [True|False] - A horizontal rule is inserted between notes and Comments\n" " [True|False] - A horizontal rule is inserted between notes and Comments\n"
"Default: '%default'\n" "Default: '%default'\n"
"Applies to ePub, MOBI output formats")), "Applies to AZW3, ePub, MOBI output formats")),
Option('--output-profile', Option('--output-profile',
default=None, default=None,
dest='output_profile', dest='output_profile',
action = None, action = None,
help=_("Specifies the output profile. In some cases, an output profile is required to optimize the catalog for the device. For example, 'kindle' or 'kindle_dx' creates a structured Table of Contents with Sections and Articles.\n" help=_("Specifies the output profile. In some cases, an output profile is required to optimize the catalog for the device. For example, 'kindle' or 'kindle_dx' creates a structured Table of Contents with Sections and Articles.\n"
"Default: '%default'\n" "Default: '%default'\n"
"Applies to: ePub, MOBI output formats")), "Applies to: AZW3, ePub, MOBI output formats")),
Option('--prefix-rules', Option('--prefix-rules',
default="(('Read books','tags','+','\u2713'),('Wishlist items','tags','Wishlist','\u00d7'))", default="(('Read books','tags','+','\u2713'),('Wishlist items','tags','Wishlist','\u00d7'))",
dest='prefix_rules', dest='prefix_rules',
@ -143,7 +143,7 @@ class EPUB_MOBI(CatalogPlugin):
"The model for a prefix rule is ('<rule name>','<source field>','<pattern>','<prefix>').\n" "The model for a prefix rule is ('<rule name>','<source field>','<pattern>','<prefix>').\n"
"When multiple rules are defined, the first matching rule will be used.\n" "When multiple rules are defined, the first matching rule will be used.\n"
"Default:\n" + '"' + '%default' + '"' + "\n" "Default:\n" + '"' + '%default' + '"' + "\n"
"Applies to ePub, MOBI output formats")), "Applies to AZW3, ePub, MOBI output formats")),
Option('--thumb-width', Option('--thumb-width',
default='1.0', default='1.0',
dest='thumb_width', dest='thumb_width',
@ -151,7 +151,7 @@ class EPUB_MOBI(CatalogPlugin):
help=_("Size hint (in inches) for book covers in catalog.\n" help=_("Size hint (in inches) for book covers in catalog.\n"
"Range: 1.0 - 2.0\n" "Range: 1.0 - 2.0\n"
"Default: '%default'\n" "Default: '%default'\n"
"Applies to ePub, MOBI output formats")), "Applies to AZW3, ePub, MOBI output formats")),
] ]
# }}} # }}}
@ -172,7 +172,8 @@ class EPUB_MOBI(CatalogPlugin):
if op is None: if op is None:
op = 'default' op = 'default'
if opts.connected_device['name'] and 'kindle' in opts.connected_device['name'].lower(): if opts.connected_device['name'] and \
opts.connected_device['short_name'] in ['kindle','kindle dx']:
opts.connected_kindle = True opts.connected_kindle = True
if opts.connected_device['serial'] and \ if opts.connected_device['serial'] and \
opts.connected_device['serial'][:4] in ['B004','B005']: opts.connected_device['serial'][:4] in ['B004','B005']: