diff --git a/calibre-plugin/config.py b/calibre-plugin/config.py
index 58c48afe..99f6c55b 100644
--- a/calibre-plugin/config.py
+++ b/calibre-plugin/config.py
@@ -1257,6 +1257,7 @@ permitted_values = {
'numChapters',
'numWords',
'site',
+ 'publisher',
'storyId',
'authorId',
'extratags',
@@ -1293,6 +1294,7 @@ titleLabels = {
'numChapters':_('Chapters'),
'numWords':_('Words'),
'site':_('Site'),
+ 'publisher':_('Publisher'),
'storyId':_('Story ID'),
'authorId':_('Author ID'),
'extratags':_('Extra Tags'),
diff --git a/calibre-plugin/fff_plugin.py b/calibre-plugin/fff_plugin.py
index 0af04858..26eb4155 100644
--- a/calibre-plugin/fff_plugin.py
+++ b/calibre-plugin/fff_plugin.py
@@ -1214,7 +1214,7 @@ class FanFicFarePlugin(InterfaceAction):
book['title'] = story.getMetadata("title", removeallentities=True)
book['author_sort'] = book['author'] = story.getList("author", removeallentities=True)
- book['publisher'] = story.getMetadata("site")
+ book['publisher'] = story.getMetadata("publisher")
book['url'] = story.getMetadata("storyUrl")
book['tags'] = story.getSubjectTags(removeallentities=True)
book['comments'] = story.get_sanitized_description()
diff --git a/calibre-plugin/jobs.py b/calibre-plugin/jobs.py
index 6ea37cd0..d63c6834 100644
--- a/calibre-plugin/jobs.py
+++ b/calibre-plugin/jobs.py
@@ -176,7 +176,7 @@ def do_download_for_worker(book,options,merge,notification=lambda x,y:x):
book['title'] = story.getMetadata("title", removeallentities=True)
book['author_sort'] = book['author'] = story.getList("author", removeallentities=True)
- book['publisher'] = story.getMetadata("site")
+ book['publisher'] = story.getMetadata("publisher")
book['url'] = story.getMetadata("storyUrl")
book['tags'] = story.getSubjectTags(removeallentities=True)
book['comments'] = story.get_sanitized_description()
diff --git a/calibre-plugin/plugin-defaults.ini b/calibre-plugin/plugin-defaults.ini
index 7e99ef7d..d5309285 100644
--- a/calibre-plugin/plugin-defaults.ini
+++ b/calibre-plugin/plugin-defaults.ini
@@ -87,6 +87,14 @@ extratags_label:Extra Tags
## The version of fanficdownloader
version_label:Downloader Version
+## The metadata entry 'site' predates Calibre integration, and was
+## later labeled Publisher and used to fill Calibre's Publisher field.
+## Because users keep expecting it to be 'publisher' instead,
+## 'publisher' is now a copy of 'site' and the Calibre plugin now uses
+## 'publisher' instead. Default titlepage_entries are also changed.
+include_in_publisher:site
+publisher_label:Publisher
+
## Date formats used by FanFicFare. Published and Update don't have time.
## See http://docs.python.org/library/datetime.html#strftime-strptime-behavior
## Note that ini format requires % to be escaped as %%.
@@ -99,7 +107,7 @@ dateUpdated_format:%%Y-%%m-%%d
## You can include extra text or HTML that will be included as-is in
## the title page. Eg: titlepage_entries: ...,
,summary,
,...
## All current formats already include title and author.
-titlepage_entries: seriesHTML,category,genre,language,characters,ships,status,datePublished,dateUpdated,dateCreated,rating,warnings,numChapters,numWords,site,description
+titlepage_entries: seriesHTML,category,genre,language,characters,ships,status,datePublished,dateUpdated,dateCreated,rating,warnings,numChapters,numWords,publisher,description
## Try to collect series name and number of this story in series.
## Some sites (ab)use 'series' for reading lists and personal
@@ -757,8 +765,6 @@ include_tocpage: false
## dateUpdated,numChapters,numWords at a minimum) will be shown.
## Great for tracking when chapters came out and when the description,
## etc changed.
-## Plugin will now preserve the log page when the epub is overwritten,
-## too.
include_logpage: false
## If set to 'smart', logpage will only be included if the story is
## status:In-Progress or already had a logpage. That way you don't
@@ -949,7 +955,7 @@ output_css:
keep_summary_html:false
## Add URLs since there aren't links.
-titlepage_entries: series,seriesUrl,category,genre,language,characters,ships,status,datePublished,dateUpdated,dateCreated,rating,warnings,numChapters,numWords,site,storyUrl, authorUrl, description
+titlepage_entries: series,seriesUrl,category,genre,language,characters,ships,status,datePublished,dateUpdated,dateCreated,rating,warnings,numChapters,numWords,publisher,storyUrl, authorUrl, description
## Width to word wrap text output. 0 indicates no wrapping.
wrap_width: 78
@@ -1015,7 +1021,7 @@ extratags: FanFiction,Testing,HTML
valid_entries:title,author_list,authorId_list,authorUrl_list,storyUrl,
datePublished,dateUpdated,numWords,status,language,series,seriesUrl,
rating,category_list,genre_list,warnings_list,characters_list,ships_list,
- description,site,extratags
+ description,publisher,extratags
# {{storyId}} is a special case--it's the only one that works.
title:Test Story Title {{storyId}}
@@ -1493,7 +1499,7 @@ logpage_entries: dateCreated,datePublished,dateUpdated,numChapters,numWords,stat
## All current formats already include title and author.
## Don't include numChapters since all stories are a single "chapter", there's
## no way to reliably find the next chapter
-titlepage_entries: seriesHTML,category,genre,language,characters,ships,status,datePublished,dateUpdated,dateCreated,rating,warnings,numWords,site,description
+titlepage_entries: seriesHTML,category,genre,language,characters,ships,status,datePublished,dateUpdated,dateCreated,rating,warnings,numWords,publisher,description
## Extra metadata that this adapter knows about. See [archiveofourown.org]
## for examples of how to use them.
@@ -2352,6 +2358,9 @@ extra_valid_entries:native_status
## Site dedicated to these categories/characters/ships
extracategories:Harry Potter
+## fictionally.org storyIds are not unique. Combine with authorId.
+output_filename: ${title}-${siteabbrev}_${authorId}_${storyId}${formatext}
+
## fictionalley.org doesn't have a status metadatum. If uncommented,
## this will be used for status.
#default_value_status:Unknown
@@ -2815,14 +2824,14 @@ website_encodings:Windows-1252,utf8
[www.squidge.org/peja:txt]
## Add URLs since there aren't links and remove numWords --
## www.squidge.org/peja word counts are inaccurate
-titlepage_entries: series,seriesUrl,category,genre,language,status,datePublished,dateUpdated,dateCreated,rating,warnings,numChapters,site,storyUrl, authorUrl, description
+titlepage_entries: series,seriesUrl,category,genre,language,status,datePublished,dateUpdated,dateCreated,rating,warnings,numChapters,publisher,storyUrl, authorUrl, description
[www.squidge.org/peja]
## www.squidge.org/peja calls it Fandom
category_label:Fandom
## Remove numWords -- www.squidge.org/peja word counts are inaccurate
-titlepage_entries: seriesHTML,category,genre,language,characters,ships,status,datePublished,dateUpdated,dateCreated,rating,warnings,numChapters,site,description
+titlepage_entries: seriesHTML,category,genre,language,characters,ships,status,datePublished,dateUpdated,dateCreated,rating,warnings,numChapters,publisher,description
[www.starskyhutcharchive.net]
## Some sites do not require a login, but do require the user to
diff --git a/calibre-plugin/translations/messages.pot b/calibre-plugin/translations/messages.pot
index 196d1a94..0a09160e 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: 2018-12-25 23:36+Central Standard Time\n"
+"POT-Creation-Date: 2019-05-16 14:52+Central Daylight Time\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -716,403 +716,403 @@ msgstr ""
msgid "Confirmation dialogs have all been reset"
msgstr ""
-#: config.py:1279
+#: config.py:1280
msgid "Category"
msgstr ""
-#: config.py:1280
+#: config.py:1281
msgid "Genre"
msgstr ""
-#: config.py:1281
+#: config.py:1282
msgid "Language"
msgstr ""
-#: config.py:1282 fff_plugin.py:1502 fff_plugin.py:1716 fff_plugin.py:1746
+#: config.py:1283 fff_plugin.py:1500 fff_plugin.py:1713 fff_plugin.py:1743
msgid "Status"
msgstr ""
-#: config.py:1283
+#: config.py:1284
msgid "Status:%(cmplt)s"
msgstr ""
-#: config.py:1284
+#: config.py:1285
msgid "Status:%(inprog)s"
msgstr ""
-#: config.py:1285 config.py:1465
+#: config.py:1286 config.py:1467
msgid "Series"
msgstr ""
-#: config.py:1286
+#: config.py:1287
msgid "Characters"
msgstr ""
-#: config.py:1287
+#: config.py:1288
msgid "Relationships"
msgstr ""
-#: config.py:1288
+#: config.py:1289
msgid "Published"
msgstr ""
-#: config.py:1289 fff_plugin.py:1894 fff_plugin.py:1910
+#: config.py:1290 fff_plugin.py:1891 fff_plugin.py:1907
msgid "Updated"
msgstr ""
-#: config.py:1290
+#: config.py:1291
msgid "Created"
msgstr ""
-#: config.py:1291
+#: config.py:1292
msgid "Rating"
msgstr ""
-#: config.py:1292
+#: config.py:1293
msgid "Warnings"
msgstr ""
-#: config.py:1293
+#: config.py:1294
msgid "Chapters"
msgstr ""
-#: config.py:1294
+#: config.py:1295
msgid "Words"
msgstr ""
-#: config.py:1295
+#: config.py:1296
msgid "Site"
msgstr ""
-#: config.py:1296
-msgid "Story ID"
-msgstr ""
-
-#: config.py:1297
-msgid "Author ID"
+#: config.py:1297 config.py:1461
+msgid "Publisher"
msgstr ""
#: config.py:1298
-msgid "Extra Tags"
+msgid "Story ID"
msgstr ""
-#: config.py:1299 config.py:1457 dialogs.py:952 dialogs.py:1048
-#: fff_plugin.py:1502 fff_plugin.py:1716 fff_plugin.py:1746
-msgid "Title"
+#: config.py:1299
+msgid "Author ID"
msgstr ""
#: config.py:1300
+msgid "Extra Tags"
+msgstr ""
+
+#: config.py:1301 config.py:1459 dialogs.py:952 dialogs.py:1048
+#: fff_plugin.py:1500 fff_plugin.py:1713 fff_plugin.py:1743
+msgid "Title"
+msgstr ""
+
+#: config.py:1302
msgid "Story URL"
msgstr ""
-#: config.py:1301
+#: config.py:1303
msgid "Description"
msgstr ""
-#: config.py:1302 dialogs.py:952 dialogs.py:1048 fff_plugin.py:1502
-#: fff_plugin.py:1716 fff_plugin.py:1746
+#: config.py:1304 dialogs.py:952 dialogs.py:1048 fff_plugin.py:1500
+#: fff_plugin.py:1713 fff_plugin.py:1743
msgid "Author"
msgstr ""
-#: config.py:1303
+#: config.py:1305
msgid "Author URL"
msgstr ""
-#: config.py:1304
+#: config.py:1306
msgid "File Format"
msgstr ""
-#: config.py:1305
+#: config.py:1307
msgid "File Extension"
msgstr ""
-#: config.py:1306
+#: config.py:1308
msgid "Site Abbrev"
msgstr ""
-#: config.py:1307
+#: config.py:1309
msgid "FanFicFare Version"
msgstr ""
-#: config.py:1322
+#: config.py:1324
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:1347
+#: config.py:1349
msgid "Update this %s column(%s) with..."
msgstr ""
-#: config.py:1357
+#: config.py:1359
msgid "Values that aren't valid for this enumeration column will be ignored."
msgstr ""
-#: config.py:1357 config.py:1359
+#: config.py:1359 config.py:1361
msgid "Metadata values valid for this type of column."
msgstr ""
-#: config.py:1362 config.py:1486
+#: config.py:1364 config.py:1488
msgid "New Only"
msgstr ""
-#: config.py:1363
+#: config.py:1365
msgid ""
"Write to %s(%s) only for new\n"
"books, not updates to existing books."
msgstr ""
-#: config.py:1374
+#: config.py:1376
msgid "Allow %(ccset)s from %(pini)s to override"
msgstr ""
-#: config.py:1375
+#: config.py:1377
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:1379
+#: config.py:1381
msgid "Special column:"
msgstr ""
-#: config.py:1384
+#: config.py:1386
msgid "Update/Overwrite Error Column:"
msgstr ""
-#: config.py:1385
+#: config.py:1387
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:1398
+#: config.py:1400
msgid "Save All Errors"
msgstr ""
-#: config.py:1399
+#: config.py:1401
msgid "If unchecked, these errors will not be saved: %s"
msgstr ""
-#: config.py:1401 fff_plugin.py:1374 jobs.py:217
+#: config.py:1403 fff_plugin.py:1372 jobs.py:217
msgid "Not Overwriting, web site is not newer."
msgstr ""
-#: config.py:1402 fff_plugin.py:1353 jobs.py:258
+#: config.py:1404 fff_plugin.py:1351 jobs.py:258
msgid "Already contains %d chapters."
msgstr ""
-#: config.py:1409
+#: config.py:1411
msgid "Saved Metadata Column:"
msgstr ""
-#: config.py:1410
+#: config.py:1412
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:1428
+#: config.py:1430
msgid "Last Checked Column:"
msgstr ""
-#: config.py:1429
+#: config.py:1431
msgid ""
"Record the last time FanFicFare updated or checked for updates.\n"
"(Date columns only.)"
msgstr ""
-#: config.py:1458
+#: config.py:1460
msgid "Author(s)"
msgstr ""
-#: config.py:1459
-msgid "Publisher"
-msgstr ""
-
-#: config.py:1460
+#: config.py:1462
msgid "Tags"
msgstr ""
-#: config.py:1461
+#: config.py:1463
msgid "Languages"
msgstr ""
-#: config.py:1462
+#: config.py:1464
msgid "Published Date"
msgstr ""
-#: config.py:1463
+#: config.py:1465
msgid "Date"
msgstr ""
-#: config.py:1464
+#: config.py:1466
msgid "Comments"
msgstr ""
-#: config.py:1466
+#: config.py:1468
msgid "Ids(url id only)"
msgstr ""
-#: config.py:1471
+#: config.py:1473
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:1487
+#: config.py:1489
msgid ""
"Write to %s only for new\n"
"books, not updates to existing books."
msgstr ""
-#: config.py:1494
+#: config.py:1496
msgid "Force Title into Title Sort?"
msgstr ""
-#: config.py:1495
+#: config.py:1497
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:1498
+#: config.py:1500
msgid "Fix Title Case?"
msgstr ""
-#: config.py:1499
+#: config.py:1501
msgid "If checked, Calibre's routine for correcting the capitalization of title will be applied."
msgstr ""
-#: config.py:1500 config.py:1511
+#: config.py:1502 config.py:1513
msgid "This effects Calibre metadata only, not FanFicFare metadata in title page."
msgstr ""
-#: config.py:1504
+#: config.py:1506
msgid "Force Author into Author Sort?"
msgstr ""
-#: config.py:1505
+#: config.py:1507
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:1508
+#: config.py:1510
msgid "Fix Author Case?"
msgstr ""
-#: config.py:1509
+#: config.py:1511
msgid "If checked, Calibre's routine for correcting the capitalization of author names will be applied."
msgstr ""
-#: config.py:1510
+#: config.py:1512
msgid "Calibre remembers all authors in the library; changing the author case on one book will effect all books by that author."
msgstr ""
-#: config.py:1522
+#: config.py:1524
msgid "Other Standard Column Options"
msgstr ""
-#: config.py:1527
+#: config.py:1529
msgid "Set Calibre Author URL"
msgstr ""
-#: config.py:1528
+#: config.py:1530
msgid "Set Calibre Author URL to Author's URL on story site."
msgstr ""
-#: config.py:1532
+#: config.py:1534
msgid "Include Books' Comments in Anthology Comments?"
msgstr ""
-#: config.py:1533
+#: config.py:1535
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:1538
+#: config.py:1540
msgid "Set Anthology Comments only for new books"
msgstr ""
-#: config.py:1539
+#: config.py:1541
msgid ""
"Comments will only be set for New Anthologies, not updates.\n"
"That way comments you set manually are retained."
msgstr ""
-#: config.py:1556
+#: config.py:1558
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:1561
+#: config.py:1563
msgid "IMAP Server Name"
msgstr ""
-#: config.py:1562
+#: config.py:1564
msgid "Name of IMAP server--must allow IMAP4 with SSL. Eg: imap.gmail.com"
msgstr ""
-#: config.py:1571
+#: config.py:1573
msgid "IMAP User Name"
msgstr ""
-#: config.py:1572
+#: config.py:1574
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:1581
+#: config.py:1583
msgid "IMAP User Password"
msgstr ""
-#: config.py:1582
+#: config.py:1584
msgid "IMAP password. If left empty, FanFicFare will ask you for your password when you use the feature."
msgstr ""
-#: config.py:1592
+#: config.py:1594
msgid "Remember Password for Session (when not saved above)"
msgstr ""
-#: config.py:1593
+#: config.py:1595
msgid "If checked, and no password is entered above, FanFicFare will remember your password until you close calibre or change Libraries."
msgstr ""
-#: config.py:1598
+#: config.py:1600
msgid "IMAP Folder Name"
msgstr ""
-#: config.py:1599
+#: config.py:1601
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:1608
+#: config.py:1610
msgid "Mark Emails Read"
msgstr ""
-#: config.py:1609
+#: config.py:1611
msgid "If checked, emails will be marked as having been read if they contain any story URLs."
msgstr ""
-#: config.py:1614
+#: config.py:1616
msgid "Discard URLs on Reject List"
msgstr ""
-#: config.py:1615
+#: config.py:1617
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:1620
+#: config.py:1622
msgid "Update Existing Books Only"
msgstr ""
-#: config.py:1621
+#: config.py:1623
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:1626
+#: config.py:1628
msgid "Download from Email Immediately"
msgstr ""
-#: config.py:1627
+#: config.py:1629
msgid "If checked, FanFicFare will start downloading story URLs from emails immediately.
Otherwise the usual Download from URLs dialog will appear."
msgstr ""
-#: config.py:1632
+#: config.py:1634
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 ""
@@ -1233,15 +1233,15 @@ msgstr ""
msgid "OK"
msgstr ""
-#: dialogs.py:619 dialogs.py:643 fff_plugin.py:976
+#: dialogs.py:619 dialogs.py:643 fff_plugin.py:974
msgid "Fetching metadata for stories..."
msgstr ""
-#: dialogs.py:620 dialogs.py:644 fff_plugin.py:977
+#: dialogs.py:620 dialogs.py:644 fff_plugin.py:975
msgid "Downloading metadata for stories"
msgstr ""
-#: dialogs.py:621 dialogs.py:645 fff_plugin.py:978
+#: dialogs.py:621 dialogs.py:645 fff_plugin.py:976
msgid "Fetched metadata for"
msgstr ""
@@ -1249,7 +1249,7 @@ msgstr ""
msgid " - %s estimated until done"
msgstr ""
-#: dialogs.py:699 fff_plugin.py:1194
+#: dialogs.py:699 fff_plugin.py:1192
msgid "Skipped"
msgstr ""
@@ -1313,7 +1313,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:952 fff_plugin.py:1502 fff_plugin.py:1716 fff_plugin.py:1746
+#: dialogs.py:952 fff_plugin.py:1500 fff_plugin.py:1713 fff_plugin.py:1743
msgid "Comment"
msgstr ""
@@ -1545,7 +1545,7 @@ msgstr ""
msgid "Finished Fetching Story URLs from Page."
msgstr ""
-#: fff_plugin.py:554 fff_plugin.py:607
+#: fff_plugin.py:554 fff_plugin.py:605
msgid "List of Story URLs"
msgstr ""
@@ -1553,495 +1553,495 @@ msgstr ""
msgid "No Valid Story URLs found on given page."
msgstr ""
-#: fff_plugin.py:571 fff_plugin.py:624
+#: fff_plugin.py:571 fff_plugin.py:622
msgid "No Selected Books to Get URLs From"
msgstr ""
-#: fff_plugin.py:589
+#: fff_plugin.py:587
msgid "Collecting URLs for stories..."
msgstr ""
-#: fff_plugin.py:590
+#: fff_plugin.py:588
msgid "Get URLs for stories"
msgstr ""
-#: fff_plugin.py:591 fff_plugin.py:709 fff_plugin.py:901
+#: fff_plugin.py:589 fff_plugin.py:707 fff_plugin.py:899
msgid "URL retrieved"
msgstr ""
-#: fff_plugin.py:611
+#: fff_plugin.py:609
msgid "List of URLs"
msgstr ""
-#: fff_plugin.py:612
+#: fff_plugin.py:610
msgid "No Story URLs found in selected books."
msgstr ""
-#: fff_plugin.py:619
+#: fff_plugin.py:617
msgid "Can only UnNew books in library"
msgstr ""
-#: fff_plugin.py:636
+#: fff_plugin.py:634
msgid "UnNewing books..."
msgstr ""
-#: fff_plugin.py:637
+#: fff_plugin.py:635
msgid "UnNew Books"
msgstr ""
-#: fff_plugin.py:638
+#: fff_plugin.py:636
msgid "Books UnNewed"
msgstr ""
-#: fff_plugin.py:684 fff_plugin.py:1675
+#: fff_plugin.py:682 fff_plugin.py:1672
msgid "Starting auto conversion of %d books."
msgstr ""
-#: fff_plugin.py:699
+#: fff_plugin.py:697
msgid "No Selected Books have URLs to Reject"
msgstr ""
-#: fff_plugin.py:707
+#: fff_plugin.py:705
msgid "Collecting URLs for Reject List..."
msgstr ""
-#: fff_plugin.py:708
+#: fff_plugin.py:706
msgid "Get URLs for Reject List"
msgstr ""
-#: fff_plugin.py:743
+#: fff_plugin.py:741
msgid "Proceed to Remove?"
msgstr ""
-#: fff_plugin.py:743
+#: fff_plugin.py:741
msgid "Rejecting FanFicFare URLs: None of the books selected have FanFiction URLs."
msgstr ""
-#: fff_plugin.py:765
+#: fff_plugin.py:763
msgid "Cannot Make Anthologys without %s"
msgstr ""
-#: fff_plugin.py:769 fff_plugin.py:878
+#: fff_plugin.py:767 fff_plugin.py:876
msgid "Cannot Update Books from Device View"
msgstr ""
-#: fff_plugin.py:773
+#: fff_plugin.py:771
msgid "Can only update 1 anthology at a time"
msgstr ""
-#: fff_plugin.py:782
+#: fff_plugin.py:780
msgid "Can only Update Epub Anthologies"
msgstr ""
-#: fff_plugin.py:800 fff_plugin.py:801
+#: fff_plugin.py:798 fff_plugin.py:799
msgid "Cannot Update Anthology"
msgstr ""
-#: fff_plugin.py:801
+#: fff_plugin.py:799
msgid "Book isn't an FanFicFare Anthology or contains book(s) without valid Story URLs."
msgstr ""
-#: fff_plugin.py:808
+#: fff_plugin.py:806
msgid "Fetching Story URLs for Series..."
msgstr ""
-#: fff_plugin.py:818
+#: fff_plugin.py:816
msgid "Finished Fetching Story URLs for Series."
msgstr ""
-#: fff_plugin.py:864
+#: fff_plugin.py:862
msgid "There are %d stories in the current anthology that are not going to be kept if you go ahead."
msgstr ""
-#: fff_plugin.py:865
+#: fff_plugin.py:863
msgid "Story URLs that will be removed:"
msgstr ""
-#: fff_plugin.py:867
+#: fff_plugin.py:865
msgid "Update anyway?"
msgstr ""
-#: fff_plugin.py:868
+#: fff_plugin.py:866
msgid "Stories Removed"
msgstr ""
-#: fff_plugin.py:885
+#: fff_plugin.py:883
msgid "No Selected Books to Update"
msgstr ""
-#: fff_plugin.py:899
+#: fff_plugin.py:897
msgid "Collecting stories for update..."
msgstr ""
-#: fff_plugin.py:900
+#: fff_plugin.py:898
msgid "Get stories for updates"
msgstr ""
-#: fff_plugin.py:910
+#: fff_plugin.py:908
msgid "Update Existing List"
msgstr ""
-#: fff_plugin.py:970
+#: fff_plugin.py:968
msgid "Start queuing downloading for %s stories."
msgstr ""
-#: fff_plugin.py:971
+#: fff_plugin.py:969
msgid "Queuing download for stories..."
msgstr ""
-#: fff_plugin.py:972
+#: fff_plugin.py:970
msgid "Queuing download for stories"
msgstr ""
-#: fff_plugin.py:973
+#: fff_plugin.py:971
msgid "Queued download for"
msgstr ""
-#: fff_plugin.py:975
+#: fff_plugin.py:973
msgid "Started fetching metadata for %s stories."
msgstr ""
-#: fff_plugin.py:989
+#: fff_plugin.py:987
msgid "No valid story URLs entered."
msgstr ""
-#: fff_plugin.py:999 fff_plugin.py:1005
+#: fff_plugin.py:997 fff_plugin.py:1003
msgid "Reject URL?"
msgstr ""
-#: fff_plugin.py:1006 fff_plugin.py:1024
+#: fff_plugin.py:1004 fff_plugin.py:1022
msgid "%s is on your Reject URL list:"
msgstr ""
-#: fff_plugin.py:1008
+#: fff_plugin.py:1006
msgid "Click 'Yes' to Reject."
msgstr ""
-#: fff_plugin.py:1009 fff_plugin.py:1186
+#: fff_plugin.py:1007 fff_plugin.py:1184
msgid "Click 'No' to download anyway."
msgstr ""
-#: fff_plugin.py:1011
+#: fff_plugin.py:1009
msgid "Story on Reject URLs list (%s)."
msgstr ""
-#: fff_plugin.py:1014
+#: fff_plugin.py:1012
msgid "Rejected"
msgstr ""
-#: fff_plugin.py:1017
+#: fff_plugin.py:1015
msgid "Remove Reject URL?"
msgstr ""
-#: fff_plugin.py:1023
+#: fff_plugin.py:1021
msgid "Remove URL from Reject List?"
msgstr ""
-#: fff_plugin.py:1026
+#: fff_plugin.py:1024
msgid "Click 'Yes' to remove it from the list,"
msgstr ""
-#: fff_plugin.py:1027
+#: fff_plugin.py:1025
msgid "Click 'No' to leave it on the list."
msgstr ""
-#: fff_plugin.py:1048
+#: fff_plugin.py:1046
msgid "Are You an Adult?"
msgstr ""
-#: fff_plugin.py:1049
+#: fff_plugin.py:1047
msgid "%s requires that you be an adult. Please confirm you are an adult in your locale:"
msgstr ""
-#: fff_plugin.py:1094
+#: fff_plugin.py:1092
msgid "Cannot update non-epub format."
msgstr ""
-#: fff_plugin.py:1177
+#: fff_plugin.py:1175
msgid "Skip Story?"
msgstr ""
-#: fff_plugin.py:1183
+#: fff_plugin.py:1181
msgid "Skip Anthology Story?"
msgstr ""
-#: fff_plugin.py:1184
+#: fff_plugin.py:1182
msgid "\"%s\" is in series \"%s\" that you have an anthology book for."
msgstr ""
-#: fff_plugin.py:1185
+#: fff_plugin.py:1183
msgid "Click 'Yes' to Skip."
msgstr ""
-#: fff_plugin.py:1188
+#: fff_plugin.py:1186
msgid "Story in Series Anthology(%s)."
msgstr ""
-#: fff_plugin.py:1204
+#: fff_plugin.py:1202
msgid "Add"
msgstr ""
-#: fff_plugin.py:1237
+#: fff_plugin.py:1235
msgid "Meta"
msgstr ""
-#: fff_plugin.py:1266
+#: fff_plugin.py:1264
msgid "Skipping duplicate story."
msgstr ""
-#: fff_plugin.py:1269
+#: fff_plugin.py:1267
msgid "More than one identical book by Identifier URL or title/author(s)--can't tell which book to update/overwrite."
msgstr ""
-#: fff_plugin.py:1280
+#: fff_plugin.py:1278
msgid "Update"
msgstr ""
-#: fff_plugin.py:1290
+#: fff_plugin.py:1288
msgid "Update declined due to differing story URL(%s)(%s tag present)"
msgstr ""
-#: fff_plugin.py:1293 fff_plugin.py:1330
+#: fff_plugin.py:1291 fff_plugin.py:1328
msgid "Different URL"
msgstr ""
-#: fff_plugin.py:1295 fff_plugin.py:1302
+#: fff_plugin.py:1293 fff_plugin.py:1300
msgid "Change Story URL?"
msgstr ""
-#: fff_plugin.py:1303
+#: fff_plugin.py:1301
msgid "%s by %s is already in your library with a different source URL:"
msgstr ""
-#: fff_plugin.py:1304
+#: fff_plugin.py:1302
msgid "In library: %(liburl)s"
msgstr ""
-#: fff_plugin.py:1305 fff_plugin.py:1319
+#: fff_plugin.py:1303 fff_plugin.py:1317
msgid "New URL: %(newurl)s"
msgstr ""
-#: fff_plugin.py:1306
+#: fff_plugin.py:1304
msgid "Click 'Yes' to update/overwrite book with new URL."
msgstr ""
-#: fff_plugin.py:1307
+#: fff_plugin.py:1305
msgid "Click 'No' to skip updating/overwriting this book."
msgstr ""
-#: fff_plugin.py:1309 fff_plugin.py:1316
+#: fff_plugin.py:1307 fff_plugin.py:1314
msgid "Download as New Book?"
msgstr ""
-#: fff_plugin.py:1317
+#: fff_plugin.py:1315
msgid "%s by %s is already in your library with a different source URL."
msgstr ""
-#: fff_plugin.py:1318
+#: fff_plugin.py:1316
msgid "You chose not to update the existing book. Do you want to add a new book for this URL?"
msgstr ""
-#: fff_plugin.py:1320
+#: fff_plugin.py:1318
msgid "Click 'Yes' to a new book with new URL."
msgstr ""
-#: fff_plugin.py:1321
+#: fff_plugin.py:1319
msgid "Click 'No' to skip URL."
msgstr ""
-#: fff_plugin.py:1327
+#: fff_plugin.py:1325
msgid "Update declined by user due to differing story URL(%s)"
msgstr ""
-#: fff_plugin.py:1335
+#: fff_plugin.py:1333
msgid "Metadata collected."
msgstr ""
-#: fff_plugin.py:1355 jobs.py:260
+#: fff_plugin.py:1353 jobs.py:260
msgid "Existing epub contains %d chapters, web site only has %d. Use Overwrite to force update."
msgstr ""
-#: fff_plugin.py:1357 jobs.py:262
+#: fff_plugin.py:1355 jobs.py:262
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:1498
+#: fff_plugin.py:1496
msgid "None of the %d URLs/stories given can be/need to be downloaded."
msgstr ""
-#: fff_plugin.py:1499 fff_plugin.py:1712 fff_plugin.py:1742
+#: fff_plugin.py:1497 fff_plugin.py:1709 fff_plugin.py:1739
msgid "See log for details."
msgstr ""
-#: fff_plugin.py:1500
+#: fff_plugin.py:1498
msgid "Proceed with updating your library(Error or Last Checked Columns, if configured)?"
msgstr ""
-#: fff_plugin.py:1507 fff_plugin.py:1724 fff_plugin.py:1758
+#: fff_plugin.py:1505 fff_plugin.py:1721 fff_plugin.py:1755
msgid "Bad"
msgstr ""
-#: fff_plugin.py:1518 fff_plugin.py:1524
+#: fff_plugin.py:1516 fff_plugin.py:1522
msgid "FanFicFare download ended"
msgstr ""
-#: fff_plugin.py:1518 fff_plugin.py:1524 fff_plugin.py:1769 fff_plugin.py:1775
+#: fff_plugin.py:1516 fff_plugin.py:1522 fff_plugin.py:1766 fff_plugin.py:1772
msgid "FanFicFare log"
msgstr ""
-#: fff_plugin.py:1545
+#: fff_plugin.py:1543
msgid "Download %s FanFiction Book(s)"
msgstr ""
-#: fff_plugin.py:1552
+#: fff_plugin.py:1550
msgid "Starting %d FanFicFare Downloads"
msgstr ""
-#: fff_plugin.py:1586
+#: fff_plugin.py:1584
msgid "Story Details:"
msgstr ""
-#: fff_plugin.py:1589
+#: fff_plugin.py:1587
msgid "Error Updating Metadata"
msgstr ""
-#: fff_plugin.py:1590
+#: fff_plugin.py:1588
msgid "An error has occurred while FanFicFare was updating calibre's metadata for %s."
msgstr ""
-#: fff_plugin.py:1591
+#: fff_plugin.py:1589
msgid "The ebook has been updated, but the metadata has not."
msgstr ""
-#: fff_plugin.py:1645
+#: fff_plugin.py:1643
msgid "Finished Adding/Updating %d books."
msgstr ""
-#: fff_plugin.py:1696
+#: fff_plugin.py:1693
msgid "No Good Stories for Anthology"
msgstr ""
-#: fff_plugin.py:1697
+#: fff_plugin.py:1694
msgid "No good stories/updates where downloaded, Anthology creation/update aborted."
msgstr ""
-#: fff_plugin.py:1702 fff_plugin.py:1741
+#: fff_plugin.py:1699 fff_plugin.py:1738
msgid "FanFicFare found %s good and %s bad updates."
msgstr ""
-#: fff_plugin.py:1709
+#: fff_plugin.py:1706
msgid "Are you sure you want to continue with creating/updating this Anthology?"
msgstr ""
-#: fff_plugin.py:1710
+#: fff_plugin.py:1707
msgid "Any updates that failed will not be included in the Anthology."
msgstr ""
-#: fff_plugin.py:1711
+#: fff_plugin.py:1708
msgid "However, if there's an older version, it will still be included."
msgstr ""
-#: fff_plugin.py:1714
+#: fff_plugin.py:1711
msgid "Proceed with updating this anthology and your library?"
msgstr ""
-#: fff_plugin.py:1722 fff_plugin.py:1751
+#: fff_plugin.py:1719 fff_plugin.py:1748
msgid "Good"
msgstr ""
-#: fff_plugin.py:1743
+#: fff_plugin.py:1740
msgid "Proceed with updating your library?"
msgstr ""
-#: fff_plugin.py:1769 fff_plugin.py:1775
+#: fff_plugin.py:1766 fff_plugin.py:1772
msgid "FanFicFare download complete"
msgstr ""
-#: fff_plugin.py:1789
+#: fff_plugin.py:1786
msgid "Merging %s books."
msgstr ""
-#: fff_plugin.py:1878
+#: fff_plugin.py:1875
msgid "FanFicFare Adding/Updating books."
msgstr ""
-#: fff_plugin.py:1892
+#: fff_plugin.py:1889
msgid "Updating calibre for FanFiction stories..."
msgstr ""
-#: fff_plugin.py:1893
+#: fff_plugin.py:1890
msgid "Update calibre for FanFiction stories"
msgstr ""
-#: fff_plugin.py:1903
+#: fff_plugin.py:1900
msgid "Adding/Updating %s BAD books."
msgstr ""
-#: fff_plugin.py:1908
+#: fff_plugin.py:1905
msgid "Updating calibre for BAD FanFiction stories..."
msgstr ""
-#: fff_plugin.py:1909
+#: fff_plugin.py:1906
msgid "Update calibre for BAD FanFiction stories"
msgstr ""
-#: fff_plugin.py:1954
+#: fff_plugin.py:1951
msgid "Adding format to book failed for some reason..."
msgstr ""
-#: fff_plugin.py:1957 jobs.py:317
+#: fff_plugin.py:1954 jobs.py:317
msgid "Error"
msgstr ""
-#: fff_plugin.py:2308
+#: fff_plugin.py:2299
msgid "You configured FanFicFare to automatically update Reading Lists, but you don't have the %s plugin installed anymore?"
msgstr ""
-#: fff_plugin.py:2320
+#: fff_plugin.py:2311
msgid "You configured FanFicFare to automatically update \"To Read\" Reading Lists, but you don't have any lists set?"
msgstr ""
-#: fff_plugin.py:2330 fff_plugin.py:2348
+#: fff_plugin.py:2321 fff_plugin.py:2339
msgid "You configured FanFicFare to automatically update Reading List '%s', but you don't have a list of that name?"
msgstr ""
-#: fff_plugin.py:2336
+#: fff_plugin.py:2327
msgid "You configured FanFicFare to automatically update \"Send to Device\" Reading Lists, but you don't have any lists set?"
msgstr ""
-#: fff_plugin.py:2409
+#: fff_plugin.py:2400
msgid "Same story already included."
msgstr ""
-#: fff_plugin.py:2466
+#: fff_plugin.py:2457
msgid "No story URL found."
msgstr ""
-#: fff_plugin.py:2469
+#: fff_plugin.py:2460
msgid "Not Found"
msgstr ""
-#: fff_plugin.py:2475
+#: fff_plugin.py:2466
msgid "URL is not a valid story URL."
msgstr ""
-#: fff_plugin.py:2478
+#: fff_plugin.py:2469
msgid "Bad URL"
msgstr ""
-#: fff_plugin.py:2632
+#: fff_plugin.py:2623
msgid "Anthology containing:"
msgstr ""
-#: fff_plugin.py:2634
+#: fff_plugin.py:2625
msgid "%s by %s"
msgstr ""
-#: fff_plugin.py:2676
+#: fff_plugin.py:2667
msgid " Anthology"
msgstr ""
-#: fff_plugin.py:2713
+#: fff_plugin.py:2704
msgid "(was set, removed for security)"
msgstr ""
diff --git a/fanficfare/configurable.py b/fanficfare/configurable.py
index 4ea180f8..1664825b 100644
--- a/fanficfare/configurable.py
+++ b/fanficfare/configurable.py
@@ -115,6 +115,7 @@ titleLabels = {
'numWords':'Words',
'words_added':'Words Added', # logpage only
'site':'Site',
+ 'publisher':'Publisher',
'storyId':'Story ID',
'authorId':'Author ID',
'extratags':'Extra Tags',
@@ -296,6 +297,7 @@ def get_valid_scalar_entries():
'numWords',
'words_added', # logpage only.
'site',
+ 'publisher',
'storyId',
'title',
'titleHTML',
diff --git a/fanficfare/defaults.ini b/fanficfare/defaults.ini
index 3a3f15b8..d7f40bdd 100644
--- a/fanficfare/defaults.ini
+++ b/fanficfare/defaults.ini
@@ -87,6 +87,14 @@ extratags_label:Extra Tags
## The version of fanficdownloader
version_label:Downloader Version
+## The metadata entry 'site' predates Calibre integration, and was
+## later labeled Publisher and used to fill Calibre's Publisher field.
+## Because users keep expecting it to be 'publisher' instead,
+## 'publisher' is now a copy of 'site' and the Calibre plugin now uses
+## 'publisher' instead. Default titlepage_entries are also changed.
+include_in_publisher:site
+publisher_label:Publisher
+
## Date formats used by FanFicFare. Published and Update don't have time.
## See http://docs.python.org/library/datetime.html#strftime-strptime-behavior
## Note that ini format requires % to be escaped as %%.
@@ -99,7 +107,7 @@ dateUpdated_format:%%Y-%%m-%%d
## You can include extra text or HTML that will be included as-is in
## the title page. Eg: titlepage_entries: ...,
,summary,
,...
## All current formats already include title and author.
-titlepage_entries: seriesHTML,category,genre,language,characters,ships,status,datePublished,dateUpdated,dateCreated,rating,warnings,numChapters,numWords,site,description
+titlepage_entries: seriesHTML,category,genre,language,characters,ships,status,datePublished,dateUpdated,dateCreated,rating,warnings,numChapters,numWords,publisher,description
## Try to collect series name and number of this story in series.
## Some sites (ab)use 'series' for reading lists and personal
@@ -983,7 +991,7 @@ output_css:
keep_summary_html:false
## Add URLs since there aren't links.
-titlepage_entries: series,seriesUrl,category,genre,language,characters,ships,status,datePublished,dateUpdated,dateCreated,rating,warnings,numChapters,numWords,site,storyUrl, authorUrl, description
+titlepage_entries: series,seriesUrl,category,genre,language,characters,ships,status,datePublished,dateUpdated,dateCreated,rating,warnings,numChapters,numWords,publisher,storyUrl, authorUrl, description
## Width to word wrap text output. 0 indicates no wrapping.
wrap_width: 78
@@ -1049,7 +1057,7 @@ extratags: FanFiction,Testing,HTML
valid_entries:title,author_list,authorId_list,authorUrl_list,storyUrl,
datePublished,dateUpdated,numWords,status,language,series,seriesUrl,
rating,category_list,genre_list,warnings_list,characters_list,ships_list,
- description,site,extratags
+ description,publisher,extratags
# {{storyId}} is a special case--it's the only one that works.
title:Test Story Title {{storyId}}
@@ -1527,7 +1535,7 @@ logpage_entries: dateCreated,datePublished,dateUpdated,numChapters,numWords,stat
## All current formats already include title and author.
## Don't include numChapters since all stories are a single "chapter", there's
## no way to reliably find the next chapter
-titlepage_entries: seriesHTML,category,genre,language,characters,ships,status,datePublished,dateUpdated,dateCreated,rating,warnings,numWords,site,description
+titlepage_entries: seriesHTML,category,genre,language,characters,ships,status,datePublished,dateUpdated,dateCreated,rating,warnings,numWords,publisher,description
## Extra metadata that this adapter knows about. See [archiveofourown.org]
## for examples of how to use them.
@@ -2843,14 +2851,14 @@ website_encodings:Windows-1252,utf8
[www.squidge.org/peja:txt]
## Add URLs since there aren't links and remove numWords --
## www.squidge.org/peja word counts are inaccurate
-titlepage_entries: series,seriesUrl,category,genre,language,status,datePublished,dateUpdated,dateCreated,rating,warnings,numChapters,site,storyUrl, authorUrl, description
+titlepage_entries: series,seriesUrl,category,genre,language,status,datePublished,dateUpdated,dateCreated,rating,warnings,numChapters,publisher,storyUrl, authorUrl, description
[www.squidge.org/peja]
## www.squidge.org/peja calls it Fandom
category_label:Fandom
## Remove numWords -- www.squidge.org/peja word counts are inaccurate
-titlepage_entries: seriesHTML,category,genre,language,characters,ships,status,datePublished,dateUpdated,dateCreated,rating,warnings,numChapters,site,description
+titlepage_entries: seriesHTML,category,genre,language,characters,ships,status,datePublished,dateUpdated,dateCreated,rating,warnings,numChapters,publisher,description
[www.starskyhutcharchive.net]
## Some sites do not require a login, but do require the user to