diff --git a/calibre-plugin/config.py b/calibre-plugin/config.py index 0d06e91..1f82dfd 100644 --- a/calibre-plugin/config.py +++ b/calibre-plugin/config.py @@ -14,11 +14,13 @@ import traceback, copy, threading, re from collections import OrderedDict try: + from PyQt5 import QtWidgets as QtGui from PyQt5.Qt import (QDialog, QWidget, QVBoxLayout, QHBoxLayout, QGridLayout, QLabel, QLineEdit, QFont, QWidget, QTextEdit, QComboBox, QCheckBox, QPushButton, QTabWidget, QScrollArea, QDialogButtonBox, QGroupBox, QButtonGroup, QRadioButton, Qt) except ImportError as e: + from PyQt4 import QtGui from PyQt4.Qt import (QDialog, QWidget, QVBoxLayout, QHBoxLayout, QGridLayout, QLabel, QLineEdit, QFont, QWidget, QTextEdit, QComboBox, QCheckBox, QPushButton, QTabWidget, QScrollArea, @@ -258,6 +260,7 @@ class ConfigWidget(QWidget): prefs['adddialogstaysontop'] = self.basic_tab.adddialogstaysontop.isChecked() prefs['lookforurlinhtml'] = self.basic_tab.lookforurlinhtml.isChecked() prefs['checkforseriesurlid'] = self.basic_tab.checkforseriesurlid.isChecked() + prefs['auto_reject_seriesurlid'] = self.basic_tab.auto_reject_seriesurlid.isChecked() prefs['checkforurlchange'] = self.basic_tab.checkforurlchange.isChecked() prefs['injectseries'] = self.basic_tab.injectseries.isChecked() prefs['matchtitleauth'] = self.basic_tab.matchtitleauth.isChecked() @@ -469,10 +472,18 @@ class BasicTab(QWidget): self.l.addWidget(self.suppresstitlesort) self.checkforseriesurlid = QCheckBox(_("Check for existing Series Anthology books?"),self) - self.checkforseriesurlid.setToolTip(_("Check for existings Series Anthology books using each new story's series URL before downloading.\nOffer to skip downloading if a Series Anthology is found.\nDoesn't work when Collect Metadata in Background is selected.")) + self.checkforseriesurlid.setToolTip(_("Check for existing Series Anthology books using each new story's series URL before downloading.\nOffer to skip downloading if a Series Anthology is found.\nDoesn't work when Collect Metadata in Background is selected.")) self.checkforseriesurlid.setChecked(prefs['checkforseriesurlid']) self.l.addWidget(self.checkforseriesurlid) + self.auto_reject_seriesurlid = QCheckBox(_("Reject Without Confirmation?"),self) + self.auto_reject_seriesurlid.setToolTip(_("Automatically reject storys with existing Series Anthology books.\nOnly works if 'Check for existing Series Anthology books' is on.\nDoesn't work when Collect Metadata in Background is selected.")) + self.auto_reject_seriesurlid.setChecked(prefs['auto_reject_seriesurlid']) + horz = QHBoxLayout() + horz.addItem(QtGui.QSpacerItem(20, 1)) + horz.addWidget(self.auto_reject_seriesurlid) + self.l.addLayout(horz) + self.checkforurlchange = QCheckBox(_("Check for changed Story URL?"),self) self.checkforurlchange.setToolTip(_("Warn you if an update will change the URL of an existing book.\nfanfiction.net URLs will change from http to https silently.")) self.checkforurlchange.setChecked(prefs['checkforurlchange']) diff --git a/calibre-plugin/fff_plugin.py b/calibre-plugin/fff_plugin.py index ea4ad6e..47097bf 100644 --- a/calibre-plugin/fff_plugin.py +++ b/calibre-plugin/fff_plugin.py @@ -1164,7 +1164,8 @@ class FanFicFarePlugin(InterfaceAction): # try to find *series anthology* by *seriesUrl* identifier url or uri first. identicalbooks = self.do_id_search(story.getMetadata('seriesUrl')) # print("identicalbooks:%s"%identicalbooks) - if len(identicalbooks) > 0 and question_dialog(self.gui, _('Skip Story?'),''' + if len(identicalbooks) > 0 and (prefs['auto_reject_seriesurlid'] or \ + question_dialog(self.gui, _('Skip Story?'),'''

%s

%s

%s

@@ -1174,7 +1175,7 @@ class FanFicFarePlugin(InterfaceAction): _('"%s" is in series "%s" that you have an anthology book for.')%(story.getMetadata('title'),story.getMetadata('seriesUrl'),series[:series.index(' [')]), _("Click 'Yes' to Skip."), _("Click 'No' to download anyway.")), - show_copy_button=False): + show_copy_button=False)): book['comment'] = _("Story in Series Anthology(%s).")%series book['title'] = story.getMetadata('title') book['author'] = [story.getMetadata('author')] diff --git a/calibre-plugin/prefs.py b/calibre-plugin/prefs.py index 5cb6a77..0b8bc09 100644 --- a/calibre-plugin/prefs.py +++ b/calibre-plugin/prefs.py @@ -130,6 +130,7 @@ default_prefs['deleteotherforms'] = False default_prefs['adddialogstaysontop'] = False default_prefs['lookforurlinhtml'] = False default_prefs['checkforseriesurlid'] = True +default_prefs['auto_reject_seriesurlid'] = False default_prefs['checkforurlchange'] = True default_prefs['injectseries'] = False default_prefs['matchtitleauth'] = True diff --git a/calibre-plugin/translations/messages.pot b/calibre-plugin/translations/messages.pot index 5a0772a..33904a1 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-09-08 10:50+Central Daylight Time\n" +"POT-Creation-Date: 2016-09-18 17:33+Central Daylight Time\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -15,11 +15,11 @@ msgstr "" "Generated-By: pygettext.py 1.5\n" -#: __init__.py:51 +#: __init__.py:48 msgid "UI plugin to download FanFiction stories from various sites." msgstr "" -#: __init__.py:125 +#: __init__.py:123 msgid "Path to the calibre library. Default is to use the path stored in the settings." msgstr "" @@ -71,105 +71,105 @@ msgstr "" msgid "Restart calibre now" msgstr "" -#: config.py:192 +#: config.py:194 msgid "List of Supported Sites" msgstr "" -#: config.py:194 +#: config.py:196 msgid "FAQs" msgstr "" -#: config.py:209 +#: config.py:211 msgid "Basic" msgstr "" -#: config.py:220 +#: config.py:222 msgid "Calibre Cover" msgstr "" -#: config.py:228 +#: config.py:230 msgid "Standard Columns" msgstr "" -#: config.py:231 +#: config.py:233 msgid "Custom Columns" msgstr "" -#: config.py:234 +#: config.py:236 msgid "Email Settings" msgstr "" -#: config.py:237 +#: config.py:239 msgid "Other" msgstr "" -#: config.py:388 +#: config.py:391 msgid "These settings control the basic features of the plugin--downloading FanFiction." msgstr "" -#: config.py:392 +#: config.py:395 msgid "Defaults Options on Download" msgstr "" -#: config.py:396 +#: config.py:399 msgid "On each download, FanFicFare offers an option to select the output format.
This sets what that option will default to." msgstr "" -#: config.py:398 +#: config.py:401 msgid "Default Output &Format:" msgstr "" -#: config.py:413 +#: config.py:416 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:415 +#: config.py:418 msgid "Default If Story Already Exists?" msgstr "" -#: config.py:430 +#: config.py:433 msgid "Default Update Calibre &Metadata?" msgstr "" -#: config.py:431 +#: config.py:434 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:435 +#: config.py:438 msgid "Default Update EPUB Cover when Updating EPUB?" msgstr "" -#: config.py:436 +#: config.py:439 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:440 +#: config.py:443 msgid "Default Background Metadata?" msgstr "" -#: config.py:441 +#: config.py:444 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:447 +#: config.py:450 msgid "Updating Calibre Options" msgstr "" -#: config.py:451 +#: config.py:454 msgid "Delete other existing formats?" msgstr "" -#: config.py:452 +#: config.py:455 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:456 +#: config.py:459 msgid "Keep Existing Tags when Updating Metadata?" msgstr "" -#: config.py:457 +#: config.py:460 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,391 @@ msgid "" "(If Tags is set to 'New Only' in the Standard Columns tab, this has no effect.)" msgstr "" -#: config.py:461 +#: config.py:464 msgid "Force Author into Author Sort?" msgstr "" -#: config.py:462 +#: config.py:465 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:466 +#: config.py:469 msgid "Force Title into Title Sort?" msgstr "" -#: config.py:467 +#: config.py:470 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:471 +#: config.py:474 msgid "Check for existing Series Anthology books?" msgstr "" -#: config.py:472 +#: config.py:475 msgid "" -"Check for existings Series Anthology books using each new story's series URL before downloading.\n" +"Check for existing 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:476 +#: config.py:479 config.py:596 +msgid "Reject Without Confirmation?" +msgstr "" + +#: config.py:480 +msgid "" +"Automatically reject storys with existing Series Anthology books.\n" +"Only works if 'Check for existing Series Anthology books' is on.\n" +"Doesn't work when Collect Metadata in Background is selected." +msgstr "" + +#: config.py:487 msgid "Check for changed Story URL?" msgstr "" -#: config.py:477 +#: config.py:488 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:481 +#: config.py:492 msgid "Search EPUB text for Story URL?" msgstr "" -#: config.py:482 +#: config.py:493 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:486 +#: config.py:497 msgid "Post Processing Options" msgstr "" -#: config.py:490 +#: config.py:501 msgid "Mark added/updated books when finished?" msgstr "" -#: config.py:491 +#: config.py:502 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:495 +#: config.py:506 msgid "Show Marked books when finished?" msgstr "" -#: config.py:496 +#: config.py:507 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:500 +#: config.py:511 msgid "Smarten Punctuation (EPUB only)" msgstr "" -#: config.py:501 +#: config.py:512 msgid "Run Smarten Punctuation from Calibre's Polish Book feature on each EPUB download and update." msgstr "" -#: config.py:506 +#: config.py:517 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:510 +#: config.py:521 msgid "Calculate Word Count:" msgstr "" -#: config.py:523 +#: config.py:534 msgid "Automatically Convert new/update books?" msgstr "" -#: config.py:524 +#: config.py:535 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:528 +#: config.py:539 msgid "GUI Options" msgstr "" -#: config.py:532 +#: config.py:543 msgid "Take URLs from Clipboard?" msgstr "" -#: config.py:533 +#: config.py:544 msgid "Prefill URLs from valid URLs in Clipboard when Adding New." msgstr "" -#: config.py:537 +#: config.py:548 msgid "Default to Update when books selected?" msgstr "" -#: config.py:538 +#: config.py:549 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:542 +#: config.py:553 msgid "Keep 'Add New from URL(s)' dialog on top?" msgstr "" -#: config.py:543 +#: config.py:554 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:547 +#: config.py:558 msgid "Show estimated time left?" msgstr "" -#: config.py:548 +#: config.py:559 msgid "When a Progress Bar is shown, show a rough estimate of the time left." msgstr "" -#: config.py:552 +#: config.py:563 msgid "Misc Options" msgstr "" -#: config.py:556 +#: config.py:567 msgid "Inject calibre Series when none found?" msgstr "" -#: config.py:557 +#: config.py:568 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:561 +#: config.py:572 msgid "Search by Title/Author(s) for If Story Already Exists?" msgstr "" -#: config.py:562 +#: config.py:573 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:566 +#: config.py:577 msgid "Reject List" msgstr "" -#: config.py:570 +#: config.py:581 msgid "Edit Reject URL List" msgstr "" -#: config.py:571 +#: config.py:582 msgid "Edit list of URLs FanFicFare will automatically Reject." msgstr "" -#: config.py:575 config.py:649 +#: config.py:586 config.py:660 msgid "Add Reject URLs" msgstr "" -#: config.py:576 +#: config.py:587 msgid "Add additional URLs to Reject as text." msgstr "" -#: config.py:580 +#: config.py:591 msgid "Edit Reject Reasons List" msgstr "" -#: config.py:581 config.py:639 +#: config.py:592 config.py:650 msgid "Customize the Reasons presented when Rejecting URLs" msgstr "" -#: config.py:585 -msgid "Reject Without Confirmation?" -msgstr "" - -#: config.py:586 +#: config.py:597 msgid "Always reject URLs on the Reject List without stopping and asking." msgstr "" -#: config.py:623 +#: config.py:634 msgid "Edit Reject URLs List" msgstr "" -#: config.py:637 +#: config.py:648 msgid "Reject Reasons" msgstr "" -#: config.py:638 +#: config.py:649 msgid "Customize Reject List Reasons" msgstr "" -#: config.py:647 +#: config.py:658 msgid "Reason why I rejected it" msgstr "" -#: config.py:647 +#: config.py:658 msgid "Title by Author" msgstr "" -#: config.py:650 +#: config.py:661 msgid "Add Reject URLs. Use: http://...,note or http://...,title by author - note
Invalid story URLs will be ignored." msgstr "" -#: config.py:651 +#: config.py:662 msgid "" "One URL per line:\n" "http://...,note\n" "http://...,title by author - note" msgstr "" -#: config.py:653 dialogs.py:1126 +#: config.py:664 dialogs.py:1126 msgid "Add this reason to all URLs added:" msgstr "" -#: config.py:669 +#: config.py:680 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:676 +#: config.py:687 msgid "personal.ini" msgstr "" -#: config.py:683 config.py:787 config.py:788 +#: config.py:694 config.py:798 config.py:799 msgid "Edit personal.ini" msgstr "" -#: config.py:688 +#: config.py:699 msgid "FanFicFare now includes find, color coding, and error checking for personal.ini editing. Red generally indicates errors." msgstr "" -#: config.py:696 +#: config.py:707 msgid "View \"Safe\" personal.ini" msgstr "" -#: config.py:701 config.py:778 +#: config.py:712 config.py:789 msgid "View your personal.ini with usernames and passwords removed. For safely sharing your personal.ini settings with others." msgstr "" -#: config.py:707 +#: config.py:718 msgid "defaults.ini" msgstr "" -#: config.py:712 +#: config.py:723 msgid "" "View all of the plugin's configurable settings\n" "and their default settings." msgstr "" -#: config.py:713 +#: config.py:724 msgid "View Defaults" msgstr "" -#: config.py:724 +#: config.py:735 msgid "Calibre Columns" msgstr "" -#: config.py:731 +#: config.py:742 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:732 +#: config.py:743 msgid "Pass Calibre Columns into FanFicFare on Update/Overwrite" msgstr "" -#: config.py:745 +#: config.py:756 msgid "FanFicFare can pass the Calibre Columns into the download/update process.
This will show you the columns available by name." msgstr "" -#: config.py:746 +#: config.py:757 msgid "Show Calibre Column Names" msgstr "" -#: config.py:755 +#: config.py:766 msgid "Changes will only be saved if you click 'OK' to leave Customize FanFicFare." msgstr "" -#: config.py:765 +#: config.py:776 msgid "Plugin Defaults" msgstr "" -#: config.py:766 +#: config.py:777 msgid "Plugin Defaults (%s) (Read-Only)" msgstr "" -#: config.py:777 +#: config.py:788 msgid "View 'Safe' personal.ini" msgstr "" -#: config.py:811 +#: config.py:822 msgid "Calibre Column Entry Names" msgstr "" -#: config.py:812 +#: config.py:823 msgid "Label (entry_name)" msgstr "" -#: config.py:832 +#: config.py:843 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:837 +#: config.py:848 msgid "Add new/updated stories to \"Send to Device\" Reading List(s)." msgstr "" -#: config.py:838 +#: config.py:849 msgid "Automatically add new/updated stories to these lists in the %(rl)s plugin." msgstr "" -#: config.py:843 +#: config.py:854 msgid "\"Send to Device\" Reading Lists" msgstr "" -#: config.py:844 config.py:847 config.py:861 config.py:864 +#: config.py:855 config.py:858 config.py:872 config.py:875 msgid "When enabled, new/updated stories will be automatically added to these lists." msgstr "" -#: config.py:854 +#: config.py:865 msgid "Add new/updated stories to \"To Read\" Reading List(s)." msgstr "" -#: config.py:855 +#: config.py:866 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:860 +#: config.py:871 msgid "\"To Read\" Reading Lists" msgstr "" -#: config.py:871 +#: config.py:882 msgid "Add stories back to \"Send to Device\" Reading List(s) when marked \"Read\"." msgstr "" -#: config.py:872 +#: config.py:883 msgid "Menu option to remove from \"To Read\" lists will also add stories back to \"Send to Device\" Reading List(s)" msgstr "" -#: config.py:876 +#: config.py:887 msgid "Automatically run Remove \"New\" Chapter Marks when marking books \"Read\"." msgstr "" -#: config.py:877 +#: config.py:888 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:905 +#: config.py:916 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:913 +#: config.py:924 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,477 +569,477 @@ msgid "" "This comes before Generate Cover so %(gc)s(Plugin) use the image if configured to." msgstr "" -#: config.py:918 +#: config.py:929 msgid "Update Calibre Cover (from EPUB):" msgstr "" -#: config.py:936 +#: config.py:947 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:940 +#: config.py:951 msgid "Generate Calibre Cover:" msgstr "" -#: config.py:967 +#: config.py:978 msgid "Plugin %(gc)s" msgstr "" -#: config.py:968 +#: config.py:979 msgid "Use plugin to create covers. Additional settings are below." msgstr "" -#: config.py:975 +#: config.py:986 msgid "Calibre Generate Cover" msgstr "" -#: config.py:976 +#: config.py:987 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:990 +#: config.py:1001 msgid "Generate Covers Only for New Books" msgstr "" -#: config.py:991 +#: config.py:1002 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:997 +#: config.py:1008 msgid "Inject/update the cover inside EPUB" msgstr "" -#: config.py:998 +#: config.py:1009 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:1004 +#: config.py:1015 msgid "%(gc)s(Plugin) Settings" msgstr "" -#: config.py:1012 +#: config.py:1023 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:1030 config.py:1034 config.py:1047 +#: config.py:1041 config.py:1045 config.py:1058 msgid "Default" msgstr "" -#: config.py:1035 +#: config.py:1046 msgid "On Metadata update, run %(gc)s with this setting, if there isn't a more specific setting below." msgstr "" -#: config.py:1038 +#: config.py:1049 msgid "On Metadata update, run %(gc)s with this setting for %(site)s stories." msgstr "" -#: config.py:1061 +#: config.py:1072 msgid "Allow %(gcset)s from %(pini)s to override" msgstr "" -#: config.py:1062 +#: config.py:1073 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:1100 +#: config.py:1111 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:1105 +#: config.py:1116 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:1111 +#: config.py:1122 msgid "Which column and algorithm to use are configured in %(cp)s." msgstr "" -#: config.py:1121 +#: config.py:1132 msgid "Will overwrite word count from FanFicFare metadata if set to update the same custom column." msgstr "" -#: config.py:1126 +#: config.py:1137 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:1162 +#: config.py:1173 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:1167 +#: config.py:1178 msgid "Keyboard shortcuts..." msgstr "" -#: config.py:1168 +#: config.py:1179 msgid "Edit the keyboard shortcuts associated with this plugin" msgstr "" -#: config.py:1172 +#: config.py:1183 msgid "Reset disabled &confirmation dialogs" msgstr "" -#: config.py:1173 +#: config.py:1184 msgid "Reset all show me again dialogs for the FanFicFare plugin" msgstr "" -#: config.py:1177 +#: config.py:1188 msgid "&View library preferences..." msgstr "" -#: config.py:1178 +#: config.py:1189 msgid "View data stored in the library database for this plugin" msgstr "" -#: config.py:1189 +#: config.py:1200 msgid "Done" msgstr "" -#: config.py:1190 +#: config.py:1201 msgid "Confirmation dialogs have all been reset" msgstr "" -#: config.py:1238 +#: config.py:1249 msgid "Category" msgstr "" -#: config.py:1239 +#: config.py:1250 msgid "Genre" msgstr "" -#: config.py:1240 +#: config.py:1251 msgid "Language" msgstr "" -#: config.py:1241 fff_plugin.py:1480 fff_plugin.py:1689 fff_plugin.py:1719 +#: config.py:1252 fff_plugin.py:1481 fff_plugin.py:1690 fff_plugin.py:1720 msgid "Status" msgstr "" -#: config.py:1242 +#: config.py:1253 msgid "Status:%(cmplt)s" msgstr "" -#: config.py:1243 +#: config.py:1254 msgid "Status:%(inprog)s" msgstr "" -#: config.py:1244 config.py:1406 +#: config.py:1255 config.py:1417 msgid "Series" msgstr "" -#: config.py:1245 +#: config.py:1256 msgid "Characters" msgstr "" -#: config.py:1246 +#: config.py:1257 msgid "Relationships" msgstr "" -#: config.py:1247 +#: config.py:1258 msgid "Published" msgstr "" -#: config.py:1248 fff_plugin.py:1854 fff_plugin.py:1873 +#: config.py:1259 fff_plugin.py:1855 fff_plugin.py:1874 msgid "Updated" msgstr "" -#: config.py:1249 +#: config.py:1260 msgid "Created" msgstr "" -#: config.py:1250 +#: config.py:1261 msgid "Rating" msgstr "" -#: config.py:1251 +#: config.py:1262 msgid "Warnings" msgstr "" -#: config.py:1252 +#: config.py:1263 msgid "Chapters" msgstr "" -#: config.py:1253 +#: config.py:1264 msgid "Words" msgstr "" -#: config.py:1254 +#: config.py:1265 msgid "Site" msgstr "" -#: config.py:1255 +#: config.py:1266 msgid "Story ID" msgstr "" -#: config.py:1256 +#: config.py:1267 msgid "Author ID" msgstr "" -#: config.py:1257 +#: config.py:1268 msgid "Extra Tags" msgstr "" -#: config.py:1258 config.py:1398 dialogs.py:917 dialogs.py:1013 -#: fff_plugin.py:1480 fff_plugin.py:1689 fff_plugin.py:1719 +#: config.py:1269 config.py:1409 dialogs.py:917 dialogs.py:1013 +#: fff_plugin.py:1481 fff_plugin.py:1690 fff_plugin.py:1720 msgid "Title" msgstr "" -#: config.py:1259 +#: config.py:1270 msgid "Story URL" msgstr "" -#: config.py:1260 +#: config.py:1271 msgid "Description" msgstr "" -#: config.py:1261 dialogs.py:917 dialogs.py:1013 fff_plugin.py:1480 -#: fff_plugin.py:1689 fff_plugin.py:1719 +#: config.py:1272 dialogs.py:917 dialogs.py:1013 fff_plugin.py:1481 +#: fff_plugin.py:1690 fff_plugin.py:1720 msgid "Author" msgstr "" -#: config.py:1262 +#: config.py:1273 msgid "Author URL" msgstr "" -#: config.py:1263 +#: config.py:1274 msgid "File Format" msgstr "" -#: config.py:1264 +#: config.py:1275 msgid "File Extension" msgstr "" -#: config.py:1265 +#: config.py:1276 msgid "Site Abbrev" msgstr "" -#: config.py:1266 +#: config.py:1277 msgid "FanFicFare Version" msgstr "" -#: config.py:1281 +#: config.py:1292 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:1306 +#: config.py:1317 msgid "Update this %s column(%s) with..." msgstr "" -#: config.py:1316 +#: config.py:1327 msgid "Values that aren't valid for this enumeration column will be ignored." msgstr "" -#: config.py:1316 config.py:1318 +#: config.py:1327 config.py:1329 msgid "Metadata values valid for this type of column." msgstr "" -#: config.py:1321 config.py:1425 +#: config.py:1332 config.py:1436 msgid "New Only" msgstr "" -#: config.py:1322 +#: config.py:1333 msgid "" "Write to %s(%s) only for new\n" "books, not updates to existing books." msgstr "" -#: config.py:1333 +#: config.py:1344 msgid "Allow %(ccset)s from %(pini)s to override" msgstr "" -#: config.py:1334 +#: config.py:1345 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:1338 +#: config.py:1349 msgid "Special column:" msgstr "" -#: config.py:1343 +#: config.py:1354 msgid "Update/Overwrite Error Column:" msgstr "" -#: config.py:1344 +#: config.py:1355 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:1357 +#: config.py:1368 msgid "Save All Errors" msgstr "" -#: config.py:1358 +#: config.py:1369 msgid "If unchecked, these errors will not be saved:%s" msgstr "" -#: config.py:1360 fff_plugin.py:1358 jobs.py:223 +#: config.py:1371 fff_plugin.py:1359 jobs.py:223 msgid "Not Overwriting, web site is not newer." msgstr "" -#: config.py:1361 fff_plugin.py:1337 jobs.py:262 +#: config.py:1372 fff_plugin.py:1338 jobs.py:262 msgid "Already contains %d chapters." msgstr "" -#: config.py:1368 +#: config.py:1379 msgid "Saved Metadata Column:" msgstr "" -#: config.py:1369 +#: config.py:1380 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:1399 +#: config.py:1410 msgid "Author(s)" msgstr "" -#: config.py:1400 +#: config.py:1411 msgid "Publisher" msgstr "" -#: config.py:1401 +#: config.py:1412 msgid "Tags" msgstr "" -#: config.py:1402 +#: config.py:1413 msgid "Languages" msgstr "" -#: config.py:1403 +#: config.py:1414 msgid "Published Date" msgstr "" -#: config.py:1404 +#: config.py:1415 msgid "Date" msgstr "" -#: config.py:1405 +#: config.py:1416 msgid "Comments" msgstr "" -#: config.py:1407 +#: config.py:1418 msgid "Ids(url id only)" msgstr "" -#: config.py:1412 +#: config.py:1423 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:1426 +#: config.py:1437 msgid "" "Write to %s only for new\n" "books, not updates to existing books." msgstr "" -#: config.py:1435 +#: config.py:1446 msgid "Other Standard Column Options" msgstr "" -#: config.py:1440 +#: config.py:1451 msgid "Set Calibre Author URL" msgstr "" -#: config.py:1441 +#: config.py:1452 msgid "Set Calibre Author URL to Author's URL on story site." msgstr "" -#: config.py:1445 +#: config.py:1456 msgid "Include Books' Comments in Anthology Comments?" msgstr "" -#: config.py:1446 +#: config.py:1457 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:1451 +#: config.py:1462 msgid "Set Anthology Comments only for new books" msgstr "" -#: config.py:1452 +#: config.py:1463 msgid "" "Comments will only be set for New Anthologies, not updates.\n" "That way comments you set manually are retained." msgstr "" -#: config.py:1469 +#: config.py:1480 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:1474 +#: config.py:1485 msgid "IMAP Server Name" msgstr "" -#: config.py:1475 +#: config.py:1486 msgid "Name of IMAP server--must allow IMAP4 with SSL. Eg: imap.gmail.com" msgstr "" -#: config.py:1484 +#: config.py:1495 msgid "IMAP User Name" msgstr "" -#: config.py:1485 +#: config.py:1496 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:1494 +#: config.py:1505 msgid "IMAP User Password" msgstr "" -#: config.py:1495 +#: config.py:1506 msgid "IMAP password. If left empty, FanFicFare will ask you for your password when you use the feature." msgstr "" -#: config.py:1505 +#: config.py:1516 msgid "Remember Password for Session (when not saved above)" msgstr "" -#: config.py:1506 +#: config.py:1517 msgid "If checked, and no password is entered above, FanFicFare will remember your password until you close calibre or change Libraries." msgstr "" -#: config.py:1511 +#: config.py:1522 msgid "IMAP Folder Name" msgstr "" -#: config.py:1512 +#: config.py:1523 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:1521 +#: config.py:1532 msgid "Mark Emails Read" msgstr "" -#: config.py:1522 +#: config.py:1533 msgid "If checked, emails will be marked as having been read if they contain any story URLs." msgstr "" -#: config.py:1527 +#: config.py:1538 msgid "Discard URLs on Reject List" msgstr "" -#: config.py:1528 +#: config.py:1539 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:1533 +#: config.py:1544 msgid "Update Existing Books Only" msgstr "" -#: config.py:1534 +#: config.py:1545 msgid "If checked, FanFicFare will silently discard story URLs from emails that are not already in your library.
Otherwise all story URLs, new and existing, will be used.
The Emails will still be marked Read if configured to." msgstr "" -#: config.py:1539 +#: config.py:1550 msgid "Download from Email Immediately" msgstr "" -#: config.py:1540 +#: config.py:1551 msgid "If checked, FanFicFare will start downloading story URLs from emails immediately.
Otherwise the usual Download from URLs dialog will appear." msgstr "" -#: config.py:1545 +#: config.py:1556 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 "" @@ -1169,7 +1176,7 @@ msgstr "" msgid " - %s estimated until done" msgstr "" -#: dialogs.py:668 fff_plugin.py:1184 +#: dialogs.py:668 fff_plugin.py:1185 msgid "Skipped" msgstr "" @@ -1233,7 +1240,7 @@ msgstr "" 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:917 fff_plugin.py:1480 fff_plugin.py:1689 fff_plugin.py:1719 +#: dialogs.py:917 fff_plugin.py:1481 fff_plugin.py:1690 fff_plugin.py:1720 msgid "Comment" msgstr "" @@ -1513,7 +1520,7 @@ msgstr "" msgid "Books UnNewed" msgstr "" -#: fff_plugin.py:681 fff_plugin.py:1648 +#: fff_plugin.py:681 fff_plugin.py:1649 msgid "Starting auto conversion of %d books." msgstr "" @@ -1637,7 +1644,7 @@ msgstr "" msgid "Click 'Yes' to Reject." msgstr "" -#: fff_plugin.py:1007 fff_plugin.py:1176 +#: fff_plugin.py:1007 fff_plugin.py:1177 msgid "Click 'No' to download anyway." msgstr "" @@ -1677,287 +1684,287 @@ msgstr "" msgid "%s requires that you be an adult. Please confirm you are an adult in your locale:" msgstr "" -#: fff_plugin.py:1167 +#: fff_plugin.py:1168 msgid "Skip Story?" msgstr "" -#: fff_plugin.py:1173 +#: fff_plugin.py:1174 msgid "Skip Anthology Story?" msgstr "" -#: fff_plugin.py:1174 +#: fff_plugin.py:1175 msgid "\"%s\" is in series \"%s\" that you have an anthology book for." msgstr "" -#: fff_plugin.py:1175 +#: fff_plugin.py:1176 msgid "Click 'Yes' to Skip." msgstr "" -#: fff_plugin.py:1178 +#: fff_plugin.py:1179 msgid "Story in Series Anthology(%s)." msgstr "" -#: fff_plugin.py:1194 +#: fff_plugin.py:1195 msgid "Add" msgstr "" -#: fff_plugin.py:1230 +#: fff_plugin.py:1231 msgid "Meta" msgstr "" -#: fff_plugin.py:1259 +#: fff_plugin.py:1260 msgid "Skipping duplicate story." msgstr "" -#: fff_plugin.py:1262 +#: fff_plugin.py:1263 msgid "More than one identical book by Identifer URL or title/author(s)--can't tell which book to update/overwrite." msgstr "" -#: fff_plugin.py:1273 +#: fff_plugin.py:1274 msgid "Update" msgstr "" -#: fff_plugin.py:1281 fff_plugin.py:1288 +#: fff_plugin.py:1282 fff_plugin.py:1289 msgid "Change Story URL?" msgstr "" -#: fff_plugin.py:1289 +#: fff_plugin.py:1290 msgid "%s by %s is already in your library with a different source URL:" msgstr "" -#: fff_plugin.py:1290 +#: fff_plugin.py:1291 msgid "In library: %(liburl)s" msgstr "" -#: fff_plugin.py:1291 fff_plugin.py:1305 +#: fff_plugin.py:1292 fff_plugin.py:1306 msgid "New URL: %(newurl)s" msgstr "" -#: fff_plugin.py:1292 +#: fff_plugin.py:1293 msgid "Click 'Yes' to update/overwrite book with new URL." msgstr "" -#: fff_plugin.py:1293 +#: fff_plugin.py:1294 msgid "Click 'No' to skip updating/overwriting this book." msgstr "" -#: fff_plugin.py:1295 fff_plugin.py:1302 +#: fff_plugin.py:1296 fff_plugin.py:1303 msgid "Download as New Book?" msgstr "" -#: fff_plugin.py:1303 +#: fff_plugin.py:1304 msgid "%s by %s is already in your library with a different source URL." msgstr "" -#: fff_plugin.py:1304 +#: fff_plugin.py:1305 msgid "You chose not to update the existing book. Do you want to add a new book for this URL?" msgstr "" -#: fff_plugin.py:1306 +#: fff_plugin.py:1307 msgid "Click 'Yes' to a new book with new URL." msgstr "" -#: fff_plugin.py:1307 +#: fff_plugin.py:1308 msgid "Click 'No' to skip URL." msgstr "" -#: fff_plugin.py:1313 +#: fff_plugin.py:1314 msgid "Update declined by user due to differing story URL(%s)" msgstr "" -#: fff_plugin.py:1316 +#: fff_plugin.py:1317 msgid "Different URL" msgstr "" -#: fff_plugin.py:1321 jobs.py:198 +#: fff_plugin.py:1322 jobs.py:198 msgid "Metadata collected." msgstr "" -#: fff_plugin.py:1339 jobs.py:264 +#: fff_plugin.py:1340 jobs.py:264 msgid "Existing epub contains %d chapters, web site only has %d. Use Overwrite to force update." msgstr "" -#: fff_plugin.py:1341 jobs.py:266 +#: fff_plugin.py:1342 jobs.py:266 msgid "FanFicFare doesn't recognize chapters in existing epub, epub is probably from a different source. Use Overwrite to force update." msgstr "" -#: fff_plugin.py:1476 +#: fff_plugin.py:1477 msgid "None of the %d URLs/stories given can be/need to be downloaded." msgstr "" -#: fff_plugin.py:1477 fff_plugin.py:1685 fff_plugin.py:1715 +#: fff_plugin.py:1478 fff_plugin.py:1686 fff_plugin.py:1716 msgid "See log for details." msgstr "" -#: fff_plugin.py:1478 +#: fff_plugin.py:1479 msgid "Proceed with updating your library(Error Column, if configured)?" msgstr "" -#: fff_plugin.py:1485 fff_plugin.py:1697 fff_plugin.py:1731 +#: fff_plugin.py:1486 fff_plugin.py:1698 fff_plugin.py:1732 msgid "Bad" msgstr "" -#: fff_plugin.py:1496 fff_plugin.py:1502 +#: fff_plugin.py:1497 fff_plugin.py:1503 msgid "FanFicFare download ended" msgstr "" -#: fff_plugin.py:1496 fff_plugin.py:1502 fff_plugin.py:1742 fff_plugin.py:1748 +#: fff_plugin.py:1497 fff_plugin.py:1503 fff_plugin.py:1743 fff_plugin.py:1749 msgid "FanFicFare log" msgstr "" -#: fff_plugin.py:1523 +#: fff_plugin.py:1524 msgid "Download %s FanFiction Book(s)" msgstr "" -#: fff_plugin.py:1530 +#: fff_plugin.py:1531 msgid "Starting %d FanFicFare Downloads" msgstr "" -#: fff_plugin.py:1561 +#: fff_plugin.py:1562 msgid "Story Details:" msgstr "" -#: fff_plugin.py:1564 +#: fff_plugin.py:1565 msgid "Error Updating Metadata" msgstr "" -#: fff_plugin.py:1565 +#: fff_plugin.py:1566 msgid "An error has occurred while FanFicFare was updating calibre's metadata for %s." msgstr "" -#: fff_plugin.py:1566 +#: fff_plugin.py:1567 msgid "The ebook has been updated, but the metadata has not." msgstr "" -#: fff_plugin.py:1618 +#: fff_plugin.py:1619 msgid "Finished Adding/Updating %d books." msgstr "" -#: fff_plugin.py:1669 +#: fff_plugin.py:1670 msgid "No Good Stories for Anthology" msgstr "" -#: fff_plugin.py:1670 +#: fff_plugin.py:1671 msgid "No good stories/updates where downloaded, Anthology creation/update aborted." msgstr "" -#: fff_plugin.py:1675 fff_plugin.py:1714 +#: fff_plugin.py:1676 fff_plugin.py:1715 msgid "FanFicFare found %s good and %s bad updates." msgstr "" -#: fff_plugin.py:1682 +#: fff_plugin.py:1683 msgid "Are you sure you want to continue with creating/updating this Anthology?" msgstr "" -#: fff_plugin.py:1683 +#: fff_plugin.py:1684 msgid "Any updates that failed will not be included in the Anthology." msgstr "" -#: fff_plugin.py:1684 +#: fff_plugin.py:1685 msgid "However, if there's an older version, it will still be included." msgstr "" -#: fff_plugin.py:1687 +#: fff_plugin.py:1688 msgid "Proceed with updating this anthology and your library?" msgstr "" -#: fff_plugin.py:1695 fff_plugin.py:1724 +#: fff_plugin.py:1696 fff_plugin.py:1725 msgid "Good" msgstr "" -#: fff_plugin.py:1716 +#: fff_plugin.py:1717 msgid "Proceed with updating your library?" msgstr "" -#: fff_plugin.py:1742 fff_plugin.py:1748 +#: fff_plugin.py:1743 fff_plugin.py:1749 msgid "FanFicFare download complete" msgstr "" -#: fff_plugin.py:1762 +#: fff_plugin.py:1763 msgid "Merging %s books." msgstr "" -#: fff_plugin.py:1845 +#: fff_plugin.py:1846 msgid "FanFicFare Adding/Updating books." msgstr "" -#: fff_plugin.py:1852 +#: fff_plugin.py:1853 msgid "Updating calibre for FanFiction stories..." msgstr "" -#: fff_plugin.py:1853 +#: fff_plugin.py:1854 msgid "Update calibre for FanFiction stories" msgstr "" -#: fff_plugin.py:1862 +#: fff_plugin.py:1863 msgid "Adding/Updating %s BAD books." msgstr "" -#: fff_plugin.py:1871 +#: fff_plugin.py:1872 msgid "Updating calibre for BAD FanFiction stories..." msgstr "" -#: fff_plugin.py:1872 +#: fff_plugin.py:1873 msgid "Update calibre for BAD FanFiction stories" msgstr "" -#: fff_plugin.py:1898 +#: fff_plugin.py:1899 msgid "Adding format to book failed for some reason..." msgstr "" -#: fff_plugin.py:1901 jobs.py:321 +#: fff_plugin.py:1902 jobs.py:321 msgid "Error" msgstr "" -#: fff_plugin.py:2232 +#: fff_plugin.py:2233 msgid "You configured FanFicFare to automatically update Reading Lists, but you don't have the %s plugin installed anymore?" msgstr "" -#: fff_plugin.py:2244 +#: fff_plugin.py:2245 msgid "You configured FanFicFare to automatically update \"To Read\" Reading Lists, but you don't have any lists set?" msgstr "" -#: fff_plugin.py:2254 fff_plugin.py:2272 +#: fff_plugin.py:2255 fff_plugin.py:2273 msgid "You configured FanFicFare to automatically update Reading List '%s', but you don't have a list of that name?" msgstr "" -#: fff_plugin.py:2260 +#: fff_plugin.py:2261 msgid "You configured FanFicFare to automatically update \"Send to Device\" Reading Lists, but you don't have any lists set?" msgstr "" -#: fff_plugin.py:2327 +#: fff_plugin.py:2328 msgid "Same story already included." msgstr "" -#: fff_plugin.py:2387 +#: fff_plugin.py:2388 msgid "No story URL found." msgstr "" -#: fff_plugin.py:2390 +#: fff_plugin.py:2391 msgid "Not Found" msgstr "" -#: fff_plugin.py:2396 +#: fff_plugin.py:2397 msgid "URL is not a valid story URL." msgstr "" -#: fff_plugin.py:2399 +#: fff_plugin.py:2400 msgid "Bad URL" msgstr "" -#: fff_plugin.py:2534 +#: fff_plugin.py:2535 msgid "Anthology containing:" msgstr "" -#: fff_plugin.py:2536 +#: fff_plugin.py:2537 msgid "%s by %s" msgstr "" -#: fff_plugin.py:2578 +#: fff_plugin.py:2579 msgid " Anthology" msgstr "" -#: fff_plugin.py:2621 +#: fff_plugin.py:2622 msgid "(was set, removed for security)" msgstr ""