diff --git a/calibre-plugin/config.py b/calibre-plugin/config.py index 521b4223..c67f5b56 100644 --- a/calibre-plugin/config.py +++ b/calibre-plugin/config.py @@ -328,6 +328,8 @@ class ConfigWidget(QWidget): prefs['std_cols_newonly'] = colsnewonly prefs['set_author_url'] =self.std_columns_tab.set_author_url.isChecked() + prefs['includecomments'] =self.std_columns_tab.includecomments.isChecked() + prefs['anth_comments_newonly'] =self.std_columns_tab.anth_comments_newonly.isChecked() # Custom Columns tab # error column @@ -1438,6 +1440,17 @@ class StandardColumnsTab(QWidget): self.set_author_url.setToolTip(_("Set Calibre Author URL to Author's URL on story site.")) self.set_author_url.setChecked(prefs['set_author_url']) self.l.addWidget(self.set_author_url) + + self.includecomments = QCheckBox(_("Include Books' Comments in Anthology Comments?"),self) + self.includecomments.setToolTip(_('''Include all the merged books' comments in the new book's comments. +Default is a list of included titles only.''')) + self.includecomments.setChecked(prefs['includecomments']) + self.l.addWidget(self.includecomments) + + self.anth_comments_newonly = QCheckBox(_("Set Anthology Comments only for new books"),self) + self.anth_comments_newonly.setToolTip(_("Comments will only be set for New Anthologies, not updates.\nThat way comments you set manually are retained.")) + self.anth_comments_newonly.setChecked(prefs['anth_comments_newonly']) + self.l.addWidget(self.anth_comments_newonly) self.l.insertStretch(-1) diff --git a/calibre-plugin/fff_plugin.py b/calibre-plugin/fff_plugin.py index 5f623100..809594a7 100644 --- a/calibre-plugin/fff_plugin.py +++ b/calibre-plugin/fff_plugin.py @@ -2468,18 +2468,33 @@ class FanFicFarePlugin(InterfaceAction): book['anthology_meta_list'][k]=True logger.debug("book['url']:%s"%book['url']) + + book['comments'] = _("Anthology containing:")+"\n\n" + if len(book['author']) > 1: + mkbooktitle = lambda x : _("%s by %s") % (x['title'],' & '.join(x['author'])) + else: + mkbooktitle = lambda x : x['title'] + + if prefs['includecomments']: + def mkbookcomments(x): + if x['comments']: + return '%s\n\n%s'%(mkbooktitle(x),x['comments']) + else: + return '%s\n'%mkbooktitle(x) + + book['comments'] += ('
' + + '
'.join([ mkbookcomments(x) for x in book_list]) + + '
') + else: + book['comments'] += '\n'.join( [ mkbooktitle(x) for x in book_list ] ) + configuration = get_fff_config(book['url'],fileform) if existingbook: book['title'] = deftitle = existingbook['title'] - book['comments'] = existingbook['comments'] + if prefs['anth_comments_newonly']: + book['comments'] = existingbook['comments'] else: book['title'] = deftitle = book_list[0]['title'] - if len(book['author']) > 1: - book['comments'] = _("Anthology containing:")+"\n" + \ - "\n".join([ _("%s by %s")%(b['title'],', '.join(b['author'])) for b in book_list ]) - else: - book['comments'] = _("Anthology containing:")+"\n" + \ - "\n".join([ b['title'] for b in book_list ]) # book['all_metadata']['description'] # if all same series, use series for name. But only if all and not previous named diff --git a/calibre-plugin/prefs.py b/calibre-plugin/prefs.py index 9b504c68..6187ecf8 100644 --- a/calibre-plugin/prefs.py +++ b/calibre-plugin/prefs.py @@ -166,6 +166,8 @@ default_prefs['allow_custcol_from_ini'] = True default_prefs['std_cols_newonly'] = {} default_prefs['set_author_url'] = True +default_prefs['includecomments'] = False +default_prefs['anth_comments_newonly'] = True default_prefs['imapserver'] = '' default_prefs['imapuser'] = '' diff --git a/calibre-plugin/translations/messages.pot b/calibre-plugin/translations/messages.pot index 2df1ad3d..bf697ebb 100644 --- a/calibre-plugin/translations/messages.pot +++ b/calibre-plugin/translations/messages.pot @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2016-04-28 16:06+Central Daylight Time\n" +"POT-Creation-Date: 2016-08-12 21:32+Central Daylight Time\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -103,73 +103,73 @@ msgstr "" msgid "Other" msgstr "" -#: config.py:385 +#: config.py:387 msgid "These settings control the basic features of the plugin--downloading FanFiction." msgstr "" -#: config.py:389 +#: config.py:391 msgid "Defaults Options on Download" msgstr "" -#: config.py:393 +#: config.py:395 msgid "On each download, FanFicFare offers an option to select the output format.
This sets what that option will default to." msgstr "" -#: config.py:395 +#: config.py:397 msgid "Default Output &Format:" msgstr "" -#: config.py:410 +#: config.py:412 msgid "On each download, FanFicFare offers an option of what happens if that story already exists.
This sets what that option will default to." msgstr "" -#: config.py:412 +#: config.py:414 msgid "Default If Story Already Exists?" msgstr "" -#: config.py:427 +#: config.py:429 msgid "Default Update Calibre &Metadata?" msgstr "" -#: config.py:428 +#: config.py:430 msgid "On each download, FanFicFare offers an option to update Calibre's metadata (title, author, URL, tags, custom columns, etc) from the web site.
This sets whether that will default to on or off.
Columns set to 'New Only' in the column tabs will only be set for new books." msgstr "" -#: config.py:432 +#: config.py:434 msgid "Default Update EPUB Cover when Updating EPUB?" msgstr "" -#: config.py:433 +#: config.py:435 msgid "On each download, FanFicFare offers an option to update the book cover image inside the EPUB from the web site when the EPUB is updated.
This sets whether that will default to on or off." msgstr "" -#: config.py:437 +#: config.py:439 msgid "Default Background Metadata?" msgstr "" -#: config.py:438 +#: config.py:440 msgid "On each download, FanFicFare offers an option to Collect Metadata from sites in a Background process.
This returns control to you quicker while updating, but you won't be asked for username/passwords or if you are an adult--stories that need those will just fail.
Only available for Update/Overwrite of existing books in case URL given isn't canonical or matches to existing book by Title/Author." msgstr "" -#: config.py:444 +#: config.py:446 msgid "Updating Calibre Options" msgstr "" -#: config.py:448 +#: config.py:450 msgid "Delete other existing formats?" msgstr "" -#: config.py:449 +#: config.py:451 msgid "" "Check this to automatically delete all other ebook formats when updating an existing book.\n" "Handy if you have both a Nook(epub) and Kindle(mobi), for example." msgstr "" -#: config.py:453 +#: config.py:455 msgid "Keep Existing Tags when Updating Metadata?" msgstr "" -#: config.py:454 +#: config.py:456 msgid "" "Existing tags will be kept and any new tags added.\n" "%(cmplt)s and %(inprog)s tags will be still be updated, if known.\n" @@ -177,384 +177,384 @@ msgid "" "(If Tags is set to 'New Only' in the Standard Columns tab, this has no effect.)" msgstr "" -#: config.py:458 +#: config.py:460 msgid "Force Author into Author Sort?" msgstr "" -#: config.py:459 +#: config.py:461 msgid "" "If checked, the author(s) as given will be used for the Author Sort, too.\n" "If not checked, calibre will apply it's built in algorithm which makes 'Bob Smith' sort as 'Smith, Bob', etc." msgstr "" -#: config.py:463 +#: config.py:465 msgid "Force Title into Title Sort?" msgstr "" -#: config.py:464 +#: config.py:466 msgid "" "If checked, the title as given will be used for the Title Sort, too.\n" "If not checked, calibre will apply it's built in algorithm which makes 'The Title' sort as 'Title, The', etc." msgstr "" -#: config.py:468 +#: config.py:470 msgid "Check for existing Series Anthology books?" msgstr "" -#: config.py:469 +#: config.py:471 msgid "" "Check for existings Series Anthology books using each new story's series URL before downloading.\n" "Offer to skip downloading if a Series Anthology is found.\n" "Doesn't work when Collect Metadata in Background is selected." msgstr "" -#: config.py:473 +#: config.py:475 msgid "Check for changed Story URL?" msgstr "" -#: config.py:474 +#: config.py:476 msgid "" "Warn you if an update will change the URL of an existing book.\n" "fanfiction.net URLs will change from http to https silently." msgstr "" -#: config.py:478 +#: config.py:480 msgid "Search EPUB text for Story URL?" msgstr "" -#: config.py:479 +#: config.py:481 msgid "" "Look for first valid story URL inside EPUB text if not found in metadata.\n" "Somewhat risky, could find wrong URL depending on EPUB content.\n" "Also finds and corrects bad ffnet URLs from ficsaver.com files." msgstr "" -#: config.py:483 +#: config.py:485 msgid "Post Processing Options" msgstr "" -#: config.py:487 +#: config.py:489 msgid "Mark added/updated books when finished?" msgstr "" -#: config.py:488 +#: config.py:490 msgid "" "Mark added/updated books when finished. Use with option below.\n" "You can also manually search for 'marked:fff_success'.\n" "'marked:fff_failed' is also available, or search 'marked:fff' for both." msgstr "" -#: config.py:492 +#: config.py:494 msgid "Show Marked books when finished?" msgstr "" -#: config.py:493 +#: config.py:495 msgid "" "Show Marked added/updated books only when finished.\n" "You can also manually search for 'marked:fff_success'.\n" "'marked:fff_failed' is also available, or search 'marked:fff' for both." msgstr "" -#: config.py:497 +#: config.py:499 msgid "Smarten Punctuation (EPUB only)" msgstr "" -#: config.py:498 +#: config.py:500 msgid "Run Smarten Punctuation from Calibre's Polish Book feature on each EPUB download and update." msgstr "" -#: config.py:503 +#: config.py:505 msgid "" "Calculate Word Counts using Calibre internal methods.\n" "Many sites include Word Count, but many do not.\n" "This will count the words in each book and include it as if it came from the site." msgstr "" -#: config.py:507 +#: config.py:509 msgid "Calculate Word Count:" msgstr "" -#: config.py:520 +#: config.py:522 msgid "Automatically Convert new/update books?" msgstr "" -#: config.py:521 +#: config.py:523 msgid "" "Automatically call calibre's Convert for new/update books.\n" "Converts to the current output format as chosen in calibre's\n" "Preferences->Behavior settings." msgstr "" -#: config.py:525 +#: config.py:527 msgid "GUI Options" msgstr "" -#: config.py:529 +#: config.py:531 msgid "Take URLs from Clipboard?" msgstr "" -#: config.py:530 +#: config.py:532 msgid "Prefill URLs from valid URLs in Clipboard when Adding New." msgstr "" -#: config.py:534 +#: config.py:536 msgid "Default to Update when books selected?" msgstr "" -#: config.py:535 +#: config.py:537 msgid "" "The top FanFicFare plugin button will start Update if\n" "books are selected. If unchecked, it will always bring up 'Add New'." msgstr "" -#: config.py:539 +#: config.py:541 msgid "Keep 'Add New from URL(s)' dialog on top?" msgstr "" -#: config.py:540 +#: config.py:542 msgid "" "Instructs the OS and Window Manager to keep the 'Add New from URL(s)'\n" "dialog on top of all other windows. Useful for dragging URLs onto it." msgstr "" -#: config.py:544 +#: config.py:546 msgid "Show estimated time left?" msgstr "" -#: config.py:545 +#: config.py:547 msgid "When a Progress Bar is shown, show a rough estimate of the time left." msgstr "" -#: config.py:549 +#: config.py:551 msgid "Misc Options" msgstr "" -#: config.py:553 +#: config.py:555 msgid "Inject calibre Series when none found?" msgstr "" -#: config.py:554 +#: config.py:556 msgid "" "If no series is found, inject the calibre series (if there is one) so \n" "it appears on the FanFicFare title page(not cover)." msgstr "" -#: config.py:558 +#: config.py:560 msgid "Search by Title/Author(s) for If Story Already Exists?" msgstr "" -#: config.py:559 +#: config.py:561 msgid "When checking If Story Already Exists FanFicFare will first match by URL Identifier. But if not found, it can also search existing books by Title and Author(s)." msgstr "" -#: config.py:563 +#: config.py:565 msgid "Reject List" msgstr "" -#: config.py:567 +#: config.py:569 msgid "Edit Reject URL List" msgstr "" -#: config.py:568 +#: config.py:570 msgid "Edit list of URLs FanFicFare will automatically Reject." msgstr "" -#: config.py:572 config.py:646 +#: config.py:574 config.py:648 msgid "Add Reject URLs" msgstr "" -#: config.py:573 +#: config.py:575 msgid "Add additional URLs to Reject as text." msgstr "" -#: config.py:577 +#: config.py:579 msgid "Edit Reject Reasons List" msgstr "" -#: config.py:578 config.py:636 +#: config.py:580 config.py:638 msgid "Customize the Reasons presented when Rejecting URLs" msgstr "" -#: config.py:582 +#: config.py:584 msgid "Reject Without Confirmation?" msgstr "" -#: config.py:583 +#: config.py:585 msgid "Always reject URLs on the Reject List without stopping and asking." msgstr "" -#: config.py:620 +#: config.py:622 msgid "Edit Reject URLs List" msgstr "" -#: config.py:634 +#: config.py:636 msgid "Reject Reasons" msgstr "" -#: config.py:635 +#: config.py:637 msgid "Customize Reject List Reasons" msgstr "" -#: config.py:644 +#: config.py:646 msgid "Reason why I rejected it" msgstr "" -#: config.py:644 +#: config.py:646 msgid "Title by Author" msgstr "" -#: config.py:647 +#: config.py:649 msgid "Add Reject URLs. Use: http://...,note or http://...,title by author - note
Invalid story URLs will be ignored." msgstr "" -#: config.py:648 +#: config.py:650 msgid "" "One URL per line:\n" "http://...,note\n" "http://...,title by author - note" msgstr "" -#: config.py:650 dialogs.py:1119 +#: config.py:652 dialogs.py:1126 msgid "Add this reason to all URLs added:" msgstr "" -#: config.py:666 +#: config.py:668 msgid "These settings provide more detailed control over what metadata will be displayed inside the ebook as well as let you set %(isa)s and %(u)s/%(p)s for different sites." msgstr "" -#: config.py:673 +#: config.py:675 msgid "personal.ini" msgstr "" -#: config.py:680 config.py:784 config.py:785 +#: config.py:682 config.py:786 config.py:787 msgid "Edit personal.ini" msgstr "" -#: config.py:685 +#: config.py:687 msgid "FanFicFare now includes find, color coding, and error checking for personal.ini editing. Red generally indicates errors." msgstr "" -#: config.py:693 +#: config.py:695 msgid "View \"Safe\" personal.ini" msgstr "" -#: config.py:698 config.py:775 +#: config.py:700 config.py:777 msgid "View your personal.ini with usernames and passwords removed. For safely sharing your personal.ini settings with others." msgstr "" -#: config.py:704 +#: config.py:706 msgid "defaults.ini" msgstr "" -#: config.py:709 +#: config.py:711 msgid "" "View all of the plugin's configurable settings\n" "and their default settings." msgstr "" -#: config.py:710 +#: config.py:712 msgid "View Defaults" msgstr "" -#: config.py:721 +#: config.py:723 msgid "Calibre Columns" msgstr "" -#: config.py:728 +#: config.py:730 msgid "If checked, when updating/overwriting an existing book, FanFicFare will have the Calibre Columns available to use in replace_metadata, title_page, etc.
Click the button below to see the Calibre Column namess." msgstr "" -#: config.py:729 +#: config.py:731 msgid "Pass Calibre Columns into FanFicFare on Update/Overwrite" msgstr "" -#: config.py:742 +#: config.py:744 msgid "FanFicFare can pass the Calibre Columns into the download/update process.
This will show you the columns available by name." msgstr "" -#: config.py:743 +#: config.py:745 msgid "Show Calibre Column Names" msgstr "" -#: config.py:752 +#: config.py:754 msgid "Changes will only be saved if you click 'OK' to leave Customize FanFicFare." msgstr "" -#: config.py:762 +#: config.py:764 msgid "Plugin Defaults" msgstr "" -#: config.py:763 +#: config.py:765 msgid "Plugin Defaults (%s) (Read-Only)" msgstr "" -#: config.py:774 +#: config.py:776 msgid "View 'Safe' personal.ini" msgstr "" -#: config.py:808 +#: config.py:810 msgid "Calibre Column Entry Names" msgstr "" -#: config.py:809 +#: config.py:811 msgid "Label (entry_name)" msgstr "" -#: config.py:829 +#: config.py:831 msgid "These settings provide integration with the %(rl)s Plugin. %(rl)s can automatically send to devices and change custom columns. You have to create and configure the lists in %(rl)s to be useful." msgstr "" -#: config.py:834 +#: config.py:836 msgid "Add new/updated stories to \"Send to Device\" Reading List(s)." msgstr "" -#: config.py:835 +#: config.py:837 msgid "Automatically add new/updated stories to these lists in the %(rl)s plugin." msgstr "" -#: config.py:840 +#: config.py:842 msgid "\"Send to Device\" Reading Lists" msgstr "" -#: config.py:841 config.py:844 config.py:858 config.py:861 +#: config.py:843 config.py:846 config.py:860 config.py:863 msgid "When enabled, new/updated stories will be automatically added to these lists." msgstr "" -#: config.py:851 +#: config.py:853 msgid "Add new/updated stories to \"To Read\" Reading List(s)." msgstr "" -#: config.py:852 +#: config.py:854 msgid "" "Automatically add new/updated stories to these lists in the %(rl)s plugin.\n" "Also offers menu option to remove stories from the \"To Read\" lists." msgstr "" -#: config.py:857 +#: config.py:859 msgid "\"To Read\" Reading Lists" msgstr "" -#: config.py:868 +#: config.py:870 msgid "Add stories back to \"Send to Device\" Reading List(s) when marked \"Read\"." msgstr "" -#: config.py:869 +#: config.py:871 msgid "Menu option to remove from \"To Read\" lists will also add stories back to \"Send to Device\" Reading List(s)" msgstr "" -#: config.py:873 +#: config.py:875 msgid "Automatically run Remove \"New\" Chapter Marks when marking books \"Read\"." msgstr "" -#: config.py:874 +#: config.py:876 msgid "Menu option to remove from \"To Read\" lists will also remove \"(new)\" chapter marks created by personal.ini mark_new_chapters setting." msgstr "" -#: config.py:902 +#: config.py:904 msgid "The Calibre cover image for a downloaded book can come from the story site(if EPUB and images are enabled), or from either Calibre's built-in random cover generator or the %(gc)s plugin." msgstr "" -#: config.py:910 +#: config.py:912 msgid "" "Update Calibre book cover image from EPUB when Calibre metadata is updated.\n" "Doesn't go looking for new images on 'Update Calibre Metadata Only'.\n" @@ -562,479 +562,499 @@ msgid "" "This comes before Generate Cover so %(gc)s(Plugin) use the image if configured to." msgstr "" -#: config.py:915 +#: config.py:917 msgid "Update Calibre Cover (from EPUB):" msgstr "" -#: config.py:933 +#: config.py:935 msgid "Generate a Calibre book cover image when Calibre metadata is updated.
Defaults to 'Yes, Always' for backward compatibility and because %(gc)s(Plugin) will only run if configured for Default or site." msgstr "" -#: config.py:937 +#: config.py:939 msgid "Generate Calibre Cover:" msgstr "" -#: config.py:964 +#: config.py:966 msgid "Plugin %(gc)s" msgstr "" -#: config.py:965 +#: config.py:967 msgid "Use plugin to create covers. Additional settings are below." msgstr "" -#: config.py:972 +#: config.py:974 msgid "Calibre Generate Cover" msgstr "" -#: config.py:973 +#: config.py:975 msgid "Call Calibre's Edit Metadata Generate cover feature to create a random cover each time a story is downloaded or updated.
Right click or long click the 'Generate cover' button in Calibre's Edit Metadata to customize." msgstr "" -#: config.py:987 +#: config.py:989 msgid "Generate Covers Only for New Books" msgstr "" -#: config.py:988 +#: config.py:990 msgid "Default is to generate a cover any time the calibre metadata is updated.
Used for both Calibre and Plugin generated covers." msgstr "" -#: config.py:994 +#: config.py:996 msgid "Inject/update the cover inside EPUB" msgstr "" -#: config.py:995 +#: config.py:997 msgid "Calibre's Polish feature will be used to inject or update the generated cover into the EPUB ebook file.
Used for both Calibre and Plugin generated covers." msgstr "" -#: config.py:1001 +#: config.py:1003 msgid "%(gc)s(Plugin) Settings" msgstr "" -#: config.py:1009 +#: config.py:1011 msgid "The %(gc)s plugin can create cover images for books using various metadata (including existing cover image). If you have %(gc)s installed, FanFicFare can run %(gc)s on new downloads and metadata updates. Pick a %(gc)s setting by site and/or one to use by Default." msgstr "" -#: config.py:1027 config.py:1031 config.py:1044 +#: config.py:1029 config.py:1033 config.py:1046 msgid "Default" msgstr "" -#: config.py:1032 +#: config.py:1034 msgid "On Metadata update, run %(gc)s with this setting, if there isn't a more specific setting below." msgstr "" -#: config.py:1035 +#: config.py:1037 msgid "On Metadata update, run %(gc)s with this setting for %(site)s stories." msgstr "" -#: config.py:1058 +#: config.py:1060 msgid "Allow %(gcset)s from %(pini)s to override" msgstr "" -#: config.py:1059 +#: config.py:1061 msgid "The %(pini)s parameter %(gcset)s allows you to choose a %(gc)s setting based on metadata rather than site, but it's much more complex.
%(gcset)s is ignored when this is off." msgstr "" -#: config.py:1097 +#: config.py:1099 msgid "These settings provide integration with the %(cp)s Plugin. %(cp)s can automatically update custom columns with page, word and reading level statistics. You have to create and configure the columns in %(cp)s first." msgstr "" -#: config.py:1102 +#: config.py:1104 msgid "If any of the settings below are checked, when stories are added or updated, the %(cp)s Plugin will be called to update the checked statistics." msgstr "" -#: config.py:1108 +#: config.py:1110 msgid "Which column and algorithm to use are configured in %(cp)s." msgstr "" -#: config.py:1118 +#: config.py:1120 msgid "Will overwrite word count from FanFicFare metadata if set to update the same custom column." msgstr "" -#: config.py:1123 +#: config.py:1125 msgid "Only run Count Page's Word Count if checked and FanFicFare metadata doesn't already have a word count. If this is used with one of the other Page Counts, the Page Count plugin will be called twice." msgstr "" -#: config.py:1159 +#: config.py:1161 msgid "These controls aren't plugin settings as such, but convenience buttons for setting Keyboard shortcuts and getting all the FanFicFare confirmation dialogs back again." msgstr "" -#: config.py:1164 +#: config.py:1166 msgid "Keyboard shortcuts..." msgstr "" -#: config.py:1165 +#: config.py:1167 msgid "Edit the keyboard shortcuts associated with this plugin" msgstr "" -#: config.py:1169 +#: config.py:1171 msgid "Reset disabled &confirmation dialogs" msgstr "" -#: config.py:1170 +#: config.py:1172 msgid "Reset all show me again dialogs for the FanFicFare plugin" msgstr "" -#: config.py:1174 +#: config.py:1176 msgid "&View library preferences..." msgstr "" -#: config.py:1175 +#: config.py:1177 msgid "View data stored in the library database for this plugin" msgstr "" -#: config.py:1186 +#: config.py:1188 msgid "Done" msgstr "" -#: config.py:1187 +#: config.py:1189 msgid "Confirmation dialogs have all been reset" msgstr "" -#: config.py:1235 +#: config.py:1237 msgid "Category" msgstr "" -#: config.py:1236 +#: config.py:1238 msgid "Genre" msgstr "" -#: config.py:1237 +#: config.py:1239 msgid "Language" msgstr "" -#: config.py:1238 fff_plugin.py:1464 fff_plugin.py:1663 fff_plugin.py:1693 +#: config.py:1240 fff_plugin.py:1464 fff_plugin.py:1673 fff_plugin.py:1703 msgid "Status" msgstr "" -#: config.py:1239 +#: config.py:1241 msgid "Status:%(cmplt)s" msgstr "" -#: config.py:1240 +#: config.py:1242 msgid "Status:%(inprog)s" msgstr "" -#: config.py:1241 config.py:1403 +#: config.py:1243 config.py:1405 msgid "Series" msgstr "" -#: config.py:1242 +#: config.py:1244 msgid "Characters" msgstr "" -#: config.py:1243 +#: config.py:1245 msgid "Relationships" msgstr "" -#: config.py:1244 +#: config.py:1246 msgid "Published" msgstr "" -#: config.py:1245 fff_plugin.py:1776 fff_plugin.py:1795 +#: config.py:1247 fff_plugin.py:1795 fff_plugin.py:1814 msgid "Updated" msgstr "" -#: config.py:1246 +#: config.py:1248 msgid "Created" msgstr "" -#: config.py:1247 +#: config.py:1249 msgid "Rating" msgstr "" -#: config.py:1248 +#: config.py:1250 msgid "Warnings" msgstr "" -#: config.py:1249 +#: config.py:1251 msgid "Chapters" msgstr "" -#: config.py:1250 +#: config.py:1252 msgid "Words" msgstr "" -#: config.py:1251 +#: config.py:1253 msgid "Site" msgstr "" -#: config.py:1252 +#: config.py:1254 msgid "Story ID" msgstr "" -#: config.py:1253 +#: config.py:1255 msgid "Author ID" msgstr "" -#: config.py:1254 +#: config.py:1256 msgid "Extra Tags" msgstr "" -#: config.py:1255 config.py:1395 dialogs.py:910 dialogs.py:1006 -#: fff_plugin.py:1464 fff_plugin.py:1663 fff_plugin.py:1693 +#: config.py:1257 config.py:1397 dialogs.py:917 dialogs.py:1013 +#: fff_plugin.py:1464 fff_plugin.py:1673 fff_plugin.py:1703 msgid "Title" msgstr "" -#: config.py:1256 +#: config.py:1258 msgid "Story URL" msgstr "" -#: config.py:1257 +#: config.py:1259 msgid "Description" msgstr "" -#: config.py:1258 dialogs.py:910 dialogs.py:1006 fff_plugin.py:1464 -#: fff_plugin.py:1663 fff_plugin.py:1693 +#: config.py:1260 dialogs.py:917 dialogs.py:1013 fff_plugin.py:1464 +#: fff_plugin.py:1673 fff_plugin.py:1703 msgid "Author" msgstr "" -#: config.py:1259 +#: config.py:1261 msgid "Author URL" msgstr "" -#: config.py:1260 +#: config.py:1262 msgid "File Format" msgstr "" -#: config.py:1261 +#: config.py:1263 msgid "File Extension" msgstr "" -#: config.py:1262 +#: config.py:1264 msgid "Site Abbrev" msgstr "" -#: config.py:1263 +#: config.py:1265 msgid "FanFicFare Version" msgstr "" -#: config.py:1278 +#: config.py:1280 msgid "If you have custom columns defined, they will be listed below. Choose a metadata value type to fill your columns automatically." msgstr "" -#: config.py:1303 +#: config.py:1305 msgid "Update this %s column(%s) with..." msgstr "" -#: config.py:1313 +#: config.py:1315 msgid "Values that aren't valid for this enumeration column will be ignored." msgstr "" -#: config.py:1313 config.py:1315 +#: config.py:1315 config.py:1317 msgid "Metadata values valid for this type of column." msgstr "" -#: config.py:1318 config.py:1422 +#: config.py:1320 config.py:1424 msgid "New Only" msgstr "" -#: config.py:1319 +#: config.py:1321 msgid "" "Write to %s(%s) only for new\n" "books, not updates to existing books." msgstr "" -#: config.py:1330 +#: config.py:1332 msgid "Allow %(ccset)s from %(pini)s to override" msgstr "" -#: config.py:1331 +#: config.py:1333 msgid "The %(pini)s parameter %(ccset)s allows you to set custom columns to site specific values that aren't common to all sites.
%(ccset)s is ignored when this is off." msgstr "" -#: config.py:1335 +#: config.py:1337 msgid "Special column:" msgstr "" -#: config.py:1340 +#: config.py:1342 msgid "Update/Overwrite Error Column:" msgstr "" -#: config.py:1341 +#: config.py:1343 msgid "" "When an update or overwrite of an existing story fails, record the reason in this column.\n" "(Text and Long Text columns only.)" msgstr "" -#: config.py:1354 +#: config.py:1356 msgid "Save All Errors" msgstr "" -#: config.py:1355 +#: config.py:1357 msgid "If unchecked, these errors will not be saved:%s" msgstr "" -#: config.py:1357 fff_plugin.py:1342 jobs.py:223 +#: config.py:1359 fff_plugin.py:1342 jobs.py:223 msgid "Not Overwriting, web site is not newer." msgstr "" -#: config.py:1358 fff_plugin.py:1321 jobs.py:262 +#: config.py:1360 fff_plugin.py:1321 jobs.py:262 msgid "Already contains %d chapters." msgstr "" -#: config.py:1365 +#: config.py:1367 msgid "Saved Metadata Column:" msgstr "" -#: config.py:1366 +#: config.py:1368 msgid "If set, FanFicFare will save a copy of all its metadata in this column when the book is downloaded or updated.
The metadata from this column can later be used to update custom columns without having to request the metadata from the server again.
(Long Text columns only.)" msgstr "" -#: config.py:1396 +#: config.py:1398 msgid "Author(s)" msgstr "" -#: config.py:1397 +#: config.py:1399 msgid "Publisher" msgstr "" -#: config.py:1398 +#: config.py:1400 msgid "Tags" msgstr "" -#: config.py:1399 +#: config.py:1401 msgid "Languages" msgstr "" -#: config.py:1400 +#: config.py:1402 msgid "Published Date" msgstr "" -#: config.py:1401 +#: config.py:1403 msgid "Date" msgstr "" -#: config.py:1402 +#: config.py:1404 msgid "Comments" msgstr "" -#: config.py:1404 +#: config.py:1406 msgid "Ids(url id only)" msgstr "" -#: config.py:1409 +#: config.py:1411 msgid "The standard calibre metadata columns are listed below. You may choose whether FanFicFare will fill each column automatically on updates or only for new books." msgstr "" -#: config.py:1423 +#: config.py:1425 msgid "" "Write to %s only for new\n" "books, not updates to existing books." msgstr "" -#: config.py:1432 +#: config.py:1434 msgid "Other Standard Column Options" msgstr "" -#: config.py:1437 +#: config.py:1439 msgid "Set Calibre Author URL" msgstr "" -#: config.py:1438 +#: config.py:1440 msgid "Set Calibre Author URL to Author's URL on story site." msgstr "" -#: config.py:1455 +#: config.py:1444 +msgid "Include Books' Comments in Anthology Comments?" +msgstr "" + +#: config.py:1445 +msgid "" +"Include all the merged books' comments in the new book's comments.\n" +"Default is a list of included titles only." +msgstr "" + +#: config.py:1450 +msgid "Set Anthology Comments only for new books" +msgstr "" + +#: config.py:1451 +msgid "" +"Comments will only be set for New Anthologies, not updates.\n" +"That way comments you set manually are retained." +msgstr "" + +#: config.py:1468 msgid "These settings will allow FanFicFare to fetch story URLs from your email account. It will only look for story URLs in unread emails in the folder specified below." msgstr "" -#: config.py:1460 +#: config.py:1473 msgid "IMAP Server Name" msgstr "" -#: config.py:1461 +#: config.py:1474 msgid "Name of IMAP server--must allow IMAP4 with SSL. Eg: imap.gmail.com" msgstr "" -#: config.py:1470 +#: config.py:1483 msgid "IMAP User Name" msgstr "" -#: config.py:1471 +#: config.py:1484 msgid "" "Name of IMAP user. Eg: yourname@gmail.com\n" "Note that Gmail accounts need to have IMAP enabled in Gmail Settings first." msgstr "" -#: config.py:1480 +#: config.py:1493 msgid "IMAP User Password" msgstr "" -#: config.py:1481 +#: config.py:1494 msgid "IMAP password. If left empty, FanFicFare will ask you for your password when you use the feature." msgstr "" -#: config.py:1491 +#: config.py:1504 msgid "Remember Password for Session (when not saved above)" msgstr "" -#: config.py:1492 +#: config.py:1505 msgid "If checked, and no password is entered above, FanFicFare will remember your password until you close calibre or change Libraries." msgstr "" -#: config.py:1497 +#: config.py:1510 msgid "IMAP Folder Name" msgstr "" -#: config.py:1498 +#: config.py:1511 msgid "Name of IMAP folder to search for new emails. The folder (or label) has to already exist. Use INBOX for your default inbox." msgstr "" -#: config.py:1507 +#: config.py:1520 msgid "Mark Emails Read" msgstr "" -#: config.py:1508 +#: config.py:1521 msgid "If checked, emails will be marked as having been read if they contain any story URLs." msgstr "" -#: config.py:1513 +#: config.py:1526 msgid "Discard URLs on Reject List" msgstr "" -#: config.py:1514 +#: config.py:1527 msgid "If checked, FanFicFare will silently discard story URLs from emails that are on your Reject URL List.
Otherwise they will appear and you will see the normal Reject URL dialog.
The Emails will still be marked Read if configured to." msgstr "" -#: config.py:1519 +#: config.py:1532 msgid "Download from Email Immediately" msgstr "" -#: config.py:1520 +#: config.py:1533 msgid "If checked, FanFicFare will start downloading story URLs from emails immediately.
Otherwise the usual Download from URLs dialog will appear." msgstr "" -#: config.py:1525 +#: config.py:1538 msgid "It's safest if you create a separate email account that you use only for your story update notices. FanFicFare and calibre cannot guarantee that malicious code cannot get your email password once you've entered it.
Use this feature at your own risk.
" msgstr "" -#: dialogs.py:245 dialogs.py:790 +#: dialogs.py:245 dialogs.py:797 msgid "Show Download Options" msgstr "" -#: dialogs.py:264 dialogs.py:810 +#: dialogs.py:264 dialogs.py:817 msgid "Output &Format:" msgstr "" -#: dialogs.py:272 dialogs.py:818 +#: dialogs.py:272 dialogs.py:825 msgid "Choose output format to create. May set default from plugin configuration." msgstr "" -#: dialogs.py:300 dialogs.py:838 +#: dialogs.py:300 dialogs.py:845 msgid "Update Calibre &Metadata?" msgstr "" -#: dialogs.py:301 dialogs.py:839 +#: dialogs.py:301 dialogs.py:846 msgid "" "Update metadata for existing stories in Calibre from web site?\n" "(Columns set to 'New Only' in the column tabs will only be set for new books.)" msgstr "" -#: dialogs.py:307 dialogs.py:843 +#: dialogs.py:307 dialogs.py:850 msgid "Update EPUB Cover?" msgstr "" -#: dialogs.py:308 dialogs.py:844 +#: dialogs.py:308 dialogs.py:851 msgid "Update book cover image from site or defaults (if found) inside the EPUB when EPUB is updated." msgstr "" @@ -1093,11 +1113,11 @@ msgid "" "Requires %s plugin." msgstr "" -#: dialogs.py:516 dialogs.py:570 dialogs.py:617 dialogs.py:1521 +#: dialogs.py:516 dialogs.py:570 dialogs.py:617 dialogs.py:1537 msgid "Cancel" msgstr "" -#: dialogs.py:548 dialogs.py:1509 +#: dialogs.py:548 dialogs.py:1525 msgid "Password" msgstr "" @@ -1121,7 +1141,7 @@ msgstr "" msgid "Password:" msgstr "" -#: dialogs.py:566 dialogs.py:732 dialogs.py:1517 +#: dialogs.py:566 dialogs.py:739 dialogs.py:1533 msgid "OK" msgstr "" @@ -1137,167 +1157,167 @@ msgstr "" msgid "Fetched metadata for" msgstr "" -#: dialogs.py:643 +#: dialogs.py:644 msgid " - %s estimated until done" msgstr "" -#: dialogs.py:661 fff_plugin.py:1168 +#: dialogs.py:668 fff_plugin.py:1168 msgid "Skipped" msgstr "" -#: dialogs.py:692 +#: dialogs.py:699 msgid "%d day" msgstr "" -#: dialogs.py:692 +#: dialogs.py:699 msgid "%d days" msgstr "" -#: dialogs.py:693 +#: dialogs.py:700 msgid "%d hour" msgstr "" -#: dialogs.py:693 +#: dialogs.py:700 msgid "%d hours" msgstr "" -#: dialogs.py:694 +#: dialogs.py:701 msgid "%d minute" msgstr "" -#: dialogs.py:694 +#: dialogs.py:701 msgid "%d minutes" msgstr "" -#: dialogs.py:695 +#: dialogs.py:702 msgid "%d second" msgstr "" -#: dialogs.py:695 +#: dialogs.py:702 msgid "%d seconds" msgstr "" -#: dialogs.py:710 +#: dialogs.py:717 msgid "less than 1 second" msgstr "" -#: dialogs.py:727 fff_plugin.py:381 fff_plugin.py:384 +#: dialogs.py:734 fff_plugin.py:381 fff_plugin.py:384 msgid "About FanFicFare" msgstr "" -#: dialogs.py:781 +#: dialogs.py:788 msgid "Remove selected books from the list" msgstr "" -#: dialogs.py:823 +#: dialogs.py:830 msgid "Update Mode:" msgstr "" -#: dialogs.py:826 +#: dialogs.py:833 msgid "What sort of update to perform. May set default from plugin configuration." msgstr "" -#: dialogs.py:848 +#: dialogs.py:855 msgid "Background Metadata?" msgstr "" -#: dialogs.py:849 +#: dialogs.py:856 msgid "Collect Metadata from sites in a Background process.
This returns control to you quicker while updating, but you won't be asked for username/passwords or if you are an adult--stories that need those will just fail." msgstr "" -#: dialogs.py:910 fff_plugin.py:1464 fff_plugin.py:1663 fff_plugin.py:1693 +#: dialogs.py:917 fff_plugin.py:1464 fff_plugin.py:1673 fff_plugin.py:1703 msgid "Comment" msgstr "" -#: dialogs.py:978 +#: dialogs.py:985 msgid "Are you sure you want to remove this book from the list?" msgstr "" -#: dialogs.py:980 +#: dialogs.py:987 msgid "Are you sure you want to remove the selected %d books from the list?" msgstr "" -#: dialogs.py:1006 +#: dialogs.py:1013 msgid "Note" msgstr "" -#: dialogs.py:1045 +#: dialogs.py:1052 msgid "Select or Edit Reject Note." msgstr "" -#: dialogs.py:1054 +#: dialogs.py:1061 msgid "Are you sure you want to remove this URL from the list?" msgstr "" -#: dialogs.py:1056 +#: dialogs.py:1063 msgid "Are you sure you want to remove the %d selected URLs from the list?" msgstr "" -#: dialogs.py:1074 +#: dialogs.py:1081 msgid "List of Books to Reject" msgstr "" -#: dialogs.py:1087 +#: dialogs.py:1094 msgid "FFF will remember these URLs and display the note and offer to reject them if you try to download them again later." msgstr "" -#: dialogs.py:1101 +#: dialogs.py:1108 msgid "Remove selected URLs from the list" msgstr "" -#: dialogs.py:1116 dialogs.py:1120 +#: dialogs.py:1123 dialogs.py:1127 msgid "This will be added to whatever note you've set for each URL above." msgstr "" -#: dialogs.py:1130 +#: dialogs.py:1137 msgid "Delete Books (including books without FanFiction URLs)?" msgstr "" -#: dialogs.py:1131 +#: dialogs.py:1138 msgid "Delete the selected books after adding them to the Rejected URLs list." msgstr "" -#: dialogs.py:1287 +#: dialogs.py:1294 msgid "Search for string in edit box." msgstr "" -#: dialogs.py:1290 +#: dialogs.py:1297 msgid "Find:" msgstr "" -#: dialogs.py:1295 +#: dialogs.py:1302 msgid "Find" msgstr "" -#: dialogs.py:1305 +#: dialogs.py:1312 msgid "Case sensitive" msgstr "" -#: dialogs.py:1306 +#: dialogs.py:1313 msgid "Search for case sensitive string; don't treat Harry, HARRY and harry all the same." msgstr "" -#: dialogs.py:1335 +#: dialogs.py:1342 msgid "Go back to fix errors?" msgstr "" -#: dialogs.py:1447 +#: dialogs.py:1454 msgid "Click an error below to return to Editing directly on that line:" msgstr "" -#: dialogs.py:1461 +#: dialogs.py:1477 msgid "Click to go to line %s" msgstr "" -#: dialogs.py:1477 +#: dialogs.py:1493 msgid "Return to Editing" msgstr "" -#: dialogs.py:1481 +#: dialogs.py:1497 msgid "Save Anyway" msgstr "" -#: dialogs.py:1510 +#: dialogs.py:1526 msgid "Enter Email Password for %s:" msgstr "" @@ -1481,7 +1501,7 @@ msgstr "" msgid "Books UnNewed" msgstr "" -#: fff_plugin.py:665 fff_plugin.py:1622 +#: fff_plugin.py:665 fff_plugin.py:1632 msgid "Starting auto conversion of %d books." msgstr "" @@ -1753,7 +1773,7 @@ msgstr "" msgid "None of the %d URLs/stories given can be/need to be downloaded." msgstr "" -#: fff_plugin.py:1461 fff_plugin.py:1659 fff_plugin.py:1689 +#: fff_plugin.py:1461 fff_plugin.py:1669 fff_plugin.py:1699 msgid "See log for details." msgstr "" @@ -1761,171 +1781,171 @@ msgstr "" msgid "Proceed with updating your library(Error Column, if configured)?" msgstr "" -#: fff_plugin.py:1469 fff_plugin.py:1671 fff_plugin.py:1705 +#: fff_plugin.py:1469 fff_plugin.py:1681 fff_plugin.py:1715 msgid "Bad" msgstr "" -#: fff_plugin.py:1477 +#: fff_plugin.py:1480 fff_plugin.py:1486 msgid "FanFicFare download ended" msgstr "" -#: fff_plugin.py:1477 fff_plugin.py:1714 +#: fff_plugin.py:1480 fff_plugin.py:1486 fff_plugin.py:1726 fff_plugin.py:1732 msgid "FanFicFare log" msgstr "" -#: fff_plugin.py:1497 +#: fff_plugin.py:1507 msgid "Download %s FanFiction Book(s)" msgstr "" -#: fff_plugin.py:1504 +#: fff_plugin.py:1514 msgid "Starting %d FanFicFare Downloads" msgstr "" -#: fff_plugin.py:1535 +#: fff_plugin.py:1545 msgid "Story Details:" msgstr "" -#: fff_plugin.py:1538 +#: fff_plugin.py:1548 msgid "Error Updating Metadata" msgstr "" -#: fff_plugin.py:1539 +#: fff_plugin.py:1549 msgid "An error has occurred while FanFicFare was updating calibre's metadata for %s." msgstr "" -#: fff_plugin.py:1540 +#: fff_plugin.py:1550 msgid "The ebook has been updated, but the metadata has not." msgstr "" -#: fff_plugin.py:1592 +#: fff_plugin.py:1602 msgid "Finished Adding/Updating %d books." msgstr "" -#: fff_plugin.py:1643 +#: fff_plugin.py:1653 msgid "No Good Stories for Anthology" msgstr "" -#: fff_plugin.py:1644 +#: fff_plugin.py:1654 msgid "No good stories/updates where downloaded, Anthology creation/update aborted." msgstr "" -#: fff_plugin.py:1649 fff_plugin.py:1688 +#: fff_plugin.py:1659 fff_plugin.py:1698 msgid "FanFicFare found %s good and %s bad updates." msgstr "" -#: fff_plugin.py:1656 +#: fff_plugin.py:1666 msgid "Are you sure you want to continue with creating/updating this Anthology?" msgstr "" -#: fff_plugin.py:1657 +#: fff_plugin.py:1667 msgid "Any updates that failed will not be included in the Anthology." msgstr "" -#: fff_plugin.py:1658 +#: fff_plugin.py:1668 msgid "However, if there's an older version, it will still be included." msgstr "" -#: fff_plugin.py:1661 +#: fff_plugin.py:1671 msgid "Proceed with updating this anthology and your library?" msgstr "" -#: fff_plugin.py:1669 fff_plugin.py:1698 +#: fff_plugin.py:1679 fff_plugin.py:1708 msgid "Good" msgstr "" -#: fff_plugin.py:1690 +#: fff_plugin.py:1700 msgid "Proceed with updating your library?" msgstr "" -#: fff_plugin.py:1714 +#: fff_plugin.py:1726 fff_plugin.py:1732 msgid "FanFicFare download complete" msgstr "" -#: fff_plugin.py:1727 +#: fff_plugin.py:1745 msgid "Merging %s books." msgstr "" -#: fff_plugin.py:1767 +#: fff_plugin.py:1786 msgid "FanFicFare Adding/Updating books." msgstr "" -#: fff_plugin.py:1774 +#: fff_plugin.py:1793 msgid "Updating calibre for FanFiction stories..." msgstr "" -#: fff_plugin.py:1775 +#: fff_plugin.py:1794 msgid "Update calibre for FanFiction stories" msgstr "" -#: fff_plugin.py:1784 +#: fff_plugin.py:1803 msgid "Adding/Updating %s BAD books." msgstr "" -#: fff_plugin.py:1793 +#: fff_plugin.py:1812 msgid "Updating calibre for BAD FanFiction stories..." msgstr "" -#: fff_plugin.py:1794 +#: fff_plugin.py:1813 msgid "Update calibre for BAD FanFiction stories" msgstr "" -#: fff_plugin.py:1820 +#: fff_plugin.py:1839 msgid "Adding format to book failed for some reason..." msgstr "" -#: fff_plugin.py:1823 jobs.py:321 +#: fff_plugin.py:1842 jobs.py:321 msgid "Error" msgstr "" -#: fff_plugin.py:2143 +#: fff_plugin.py:2172 msgid "You configured FanFicFare to automatically update Reading Lists, but you don't have the %s plugin installed anymore?" msgstr "" -#: fff_plugin.py:2155 +#: fff_plugin.py:2184 msgid "You configured FanFicFare to automatically update \"To Read\" Reading Lists, but you don't have any lists set?" msgstr "" -#: fff_plugin.py:2165 fff_plugin.py:2183 +#: fff_plugin.py:2194 fff_plugin.py:2212 msgid "You configured FanFicFare to automatically update Reading List '%s', but you don't have a list of that name?" msgstr "" -#: fff_plugin.py:2171 +#: fff_plugin.py:2200 msgid "You configured FanFicFare to automatically update \"Send to Device\" Reading Lists, but you don't have any lists set?" msgstr "" -#: fff_plugin.py:2238 +#: fff_plugin.py:2267 msgid "Same story already included." msgstr "" -#: fff_plugin.py:2298 +#: fff_plugin.py:2327 msgid "No story URL found." msgstr "" -#: fff_plugin.py:2301 +#: fff_plugin.py:2330 msgid "Not Found" msgstr "" -#: fff_plugin.py:2307 +#: fff_plugin.py:2336 msgid "URL is not a valid story URL." msgstr "" -#: fff_plugin.py:2310 +#: fff_plugin.py:2339 msgid "Bad URL" msgstr "" -#: fff_plugin.py:2449 fff_plugin.py:2452 +#: fff_plugin.py:2472 msgid "Anthology containing:" msgstr "" -#: fff_plugin.py:2450 +#: fff_plugin.py:2474 msgid "%s by %s" msgstr "" -#: fff_plugin.py:2472 +#: fff_plugin.py:2516 msgid " Anthology" msgstr "" -#: fff_plugin.py:2515 +#: fff_plugin.py:2559 msgid "(was set, removed for security)" msgstr ""