Compare commits

...
24 Commits
Author SHA1 Message Date
Jim Miller f6d65c334f Bump versions. 2016-07-22 12:02:48 -05:00
Jim Miller 2c5371d95e Update translations. 2016-07-22 11:59:42 -05:00
Jim Miller 6f4660763f Save addheaders when setting cookiejar. For ffn referer. 2016-07-17 17:08:33 -05:00
Jim Miller 75f8f72266 Include 'prefix' tags in forumtags in base_xenforoforum. 2016-07-17 16:38:53 -05:00
Jim Miller b1d689ba3e Add n_anthaver and r_anthaver modes to custom_columns_settings for averaging metadata for anthologies before setting in integer and float calibre custom columns. 2016-07-12 14:57:10 -05:00
Jim Miller 39bb6e37f6 Add n_anthaver and r_anthaver modes to custom_columns_settings for averaging metadata for anthologies before setting in integer and float calibre custom columns. 2016-07-12 14:55:51 -05:00
Jim Miller 288f12afed Add n_anthaver and r_anthaver modes to custom_columns_settings for averaging metadata for anthologies before setting in integer and float calibre custom columns. 2016-07-12 14:53:18 -05:00
Jim Miller 2a25aef7ac Update translations. 2016-07-12 14:49:03 -05:00
Jim Miller 085fb47b08 Remove Django from app.yaml--old version going away. 2016-07-09 09:27:46 -05:00
Jim Miller 5fdcbab46a Allow old goto/post chapter URLs in base_xenforoforum. 2016-07-05 23:22:25 -05:00
Jim Miller 2d83fa8f5d Fix for SIYE when author puts story URL in bio. 2016-06-30 10:38:13 -05:00
Jim Miller 4a752e05e1 Change ffnet metadata colletion to allow for chars with (' - ') in them. 2016-06-26 11:34:36 -05:00
Jim Miller f1d9760aa9 Bump versions. 2016-06-23 17:08:47 -05:00
Jim Miller b11bdd82db Update translations 2016-06-23 17:07:12 -05:00
Jim Miller 6e5de8060e Update translations. 2016-06-22 23:52:19 -05:00
Jim Miller 2c1b9456bf Fix for previously failedtoload img tags causing lookup sleeps. 2016-06-21 11:23:57 -05:00
Jim Miller 60439cc658 Fix for older harrypotterfanfictioncom stories lacking reviewjs.js. 2016-06-21 11:23:20 -05:00
Jim Miller fb95e1e168 Change adapter_fictionmaniatv to set status Completed instead of Complete (no d). 2016-06-16 17:25:46 -05:00
Jim Miller 0d490d2e50 Update translations. 2016-06-15 23:29:41 -05:00
Jim Miller 838510c011 Update translations. 2016-06-15 23:28:50 -05:00
Jim Miller 954ad00ca6 Update StoriesOnlineNet/FineStoriesCom login URL. 2016-06-15 23:25:58 -05:00
Jim Miller ee462d3742 Different detect StoryDoesNotExist string for ficwad.com. 2016-06-10 09:54:45 -05:00
Jim Miller 56401e6dfa Allow old showpost.php chapter URLs in base_xenforoforum. 2016-06-10 09:52:02 -05:00
Jim Miller 6070accbf5 Update (& Fix) Translations. 2016-05-31 19:36:07 -05:00
24 changed files with 2353 additions and 176 deletions
+1 -1
View File
@@ -48,7 +48,7 @@ class FanFicFareBase(InterfaceActionBase):
description = _('UI plugin to download FanFiction stories from various sites.')
supported_platforms = ['windows', 'osx', 'linux']
author = 'Jim Miller'
version = (2, 3, 3)
version = (2, 3, 5)
minimum_calibre_version = (1, 48, 0)
#: This field defines the GUI plugin class that contains all the code
+13 -3
View File
@@ -1958,14 +1958,17 @@ class FanFicFarePlugin(InterfaceAction):
configuration = None
if prefs['allow_custcol_from_ini']:
configuration = get_fff_config(book['url'],options['fileform'])
# meta => custcol[,a|n|r]
# meta => custcol[,a|n|r|n_anthaver,r_anthaver]
# cliches=>\#acolumn,r
for line in configuration.getConfig('custom_columns_settings').splitlines():
if "=>" in line:
(meta,custcol) = map( lambda x: x.strip(), line.split("=>") )
flag='r'
anthaver=False
if "," in custcol:
(custcol,flag) = map( lambda x: x.strip(), custcol.split(",") )
anthaver = 'anthaver' in flag
flag=flag[0] # first char only.
if meta not in book['all_metadata']:
# if double quoted, use as a literal value.
@@ -1987,8 +1990,15 @@ class FanFicFarePlugin(InterfaceAction):
if flag == 'r' or (flag == 'n' and book['added']):
if coldef['datatype'] in ('int','float'): # for favs, etc--site specific metadata.
if 'anthology_meta_list' in book and meta in book['anthology_meta_list']:
# re-split list, strip commas, convert to floats, sum up.
val = sum([ float(x.replace(",","")) for x in val.split(", ") ])
# re-split list, strip commas, convert to floats
items = [ float(x.replace(",","")) for x in val.split(", ") ]
if anthaver:
if items:
val = sum(items) / float(len(items))
else:
val = 0
else:
val = sum(items)
else:
val = unicode(val).replace(",","")
else:
+9
View File
@@ -1008,15 +1008,24 @@ cliches_label:Character Cliches
## 'mode'. 'r' to Replace any existing values, 'a' to Add to existing
## value (use with tag-like columns), and 'n' for setting on New books
## only. (Default is 'r'.)
## Literal strings can be set into custom columns using double quotes.
## Each metadata=>column mapping must be on a separate line and each
## needs to have one space at the start of each line.
## 'r_anthaver' and 'n_anthaver' can be used to indicate the same as
## 'r' and 'n' for normal downloads, but to average the metadata for
## the differents story in an anthology before setting in integer and
## float type custom columns. This can be useful for a averrating
## column, for example. Default is to sum the values of all stories,
## and numChapters and numWords are always summed.
#custom_columns_settings:
# cliches=>#acolumn
# themes=>#bcolumn,a
# timeline=>#ccolumn,n
# "FanFiction"=>#collection
# averrating=>#averrating,r_anthaver
[efiction.esteliel.de]
## Site dedicated to these categories/characters/ships
+5 -4
View File
@@ -4,6 +4,7 @@
# Translators:
# Ettore Atalan <atalanttore@googlemail.com>, 2014-2015
# ILB, 2014-2016
# jumo, 2016
# Sebastian Keller <Haggard@gmx.de>, 2015
# Simon_Schuette <simonschuette@arcor.de>, 2014-2016
# Simon S, 2015
@@ -13,8 +14,8 @@ msgid ""
msgstr ""
"Project-Id-Version: calibre-plugins\n"
"POT-Creation-Date: 2016-04-28 16:06+Central Daylight Time\n"
"PO-Revision-Date: 2016-04-16 14:33+0000\n"
"Last-Translator: ILB\n"
"PO-Revision-Date: 2016-06-22 21:43+0000\n"
"Last-Translator: jumo\n"
"Language-Team: German (http://www.transifex.com/calibre/calibre-plugins/language/de/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -962,7 +963,7 @@ msgstr "Wenn eine Aktualisierung oder Überschreibung einer existierenden Story
#: config.py:1354
msgid "Save All Errors"
msgstr ""
msgstr "Speicher alle Fehler"
#: config.py:1355
msgid "If unchecked, these errors will not be saved:%s"
@@ -2116,7 +2117,7 @@ msgstr "FanFiction-Geschichten herunterladen"
#: jobs.py:91
msgid "%d of %d stories finished downloading"
msgstr ""
msgstr "%d von %d der Geschichten sind fertig runtergeladen"
#: jobs.py:103
msgid "Download Results:"
+10 -8
View File
@@ -2,17 +2,19 @@
# Copyright (C) YEAR ORGANIZATION
#
# Translators:
# Fitoschido, 2014
# Adolfo Jayme Barrientos, 2014
# dario hereñu <magallania@gmail.com>, 2015
# Enrique Medina <medina9304@gmail.com>, 2016
# Jellby <jellby@yahoo.com>, 2014-2016
# Antonio Mireles <antonio@mirelesindependent.com>, 2016
# juanda097 <juanda097@openmailbox.org>, 2016
# JimmXinu <retiefjimm@gmail.com>, 2015
msgid ""
msgstr ""
"Project-Id-Version: calibre-plugins\n"
"POT-Creation-Date: 2016-04-28 16:06+Central Daylight Time\n"
"PO-Revision-Date: 2016-04-13 22:04+0000\n"
"Last-Translator: Antonio Mireles <antonio@mirelesindependent.com>\n"
"PO-Revision-Date: 2016-07-12 05:10+0000\n"
"Last-Translator: Enrique Medina <medina9304@gmail.com>\n"
"Language-Team: Spanish (http://www.transifex.com/calibre/calibre-plugins/language/es/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -465,7 +467,7 @@ msgstr "Estas configuraciones proporcionan un control más fino sobre qué metad
#: config.py:673
msgid "personal.ini"
msgstr ""
msgstr "personal.ini"
#: config.py:680 config.py:784 config.py:785
msgid "Edit personal.ini"
@@ -479,17 +481,17 @@ msgstr "FanFicFare ahora incluye búsquedas, código de color y comprobación de
#: config.py:693
msgid "View \"Safe\" personal.ini"
msgstr ""
msgstr "Ver personal.ini \"Seguro\""
#: config.py:698 config.py:775
msgid ""
"View your personal.ini with usernames and passwords removed. For safely "
"sharing your personal.ini settings with others."
msgstr ""
msgstr "Ver sus personal.ini con nombres de usuario y contraseñas eliminadas. Para compartir de forma segura la configuración personal.ini con otros."
#: config.py:704
msgid "defaults.ini"
msgstr ""
msgstr "defaults.ini"
#: config.py:709
msgid ""
@@ -541,7 +543,7 @@ msgstr "Valores predeterminados (%s) (sólo lectura)"
#: config.py:774
msgid "View 'Safe' personal.ini"
msgstr ""
msgstr "Ver personal.ini 'Seguro'"
#: config.py:808
msgid "Calibre Column Entry Names"
+4 -3
View File
@@ -4,6 +4,7 @@
# Translators:
# Xotes <alois.glibert@gmail.com>, 2015
# Franck, 2015
# J M <JimmXinuTwo@xinu.nu>, 2016
# Ptit Prince <leporello1791@gmail.com>, 2014-2016
# Piconcely Yoann <yoanncoolazz@gmail.com>, 2015
# sengian <sengian1@gmail.com>, 2016
@@ -13,8 +14,8 @@ msgid ""
msgstr ""
"Project-Id-Version: calibre-plugins\n"
"POT-Creation-Date: 2016-04-28 16:06+Central Daylight Time\n"
"PO-Revision-Date: 2016-04-17 07:52+0000\n"
"Last-Translator: sengian <sengian1@gmail.com>\n"
"PO-Revision-Date: 2016-06-01 00:19+0000\n"
"Last-Translator: J M <JimmXinuTwo@xinu.nu>\n"
"Language-Team: French (http://www.transifex.com/calibre/calibre-plugins/language/fr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -208,7 +209,7 @@ msgid ""
"%(cmplt)s and %(inprog)s tags will be still be updated, if known.\n"
"%(lul)s tags will be updated if %(lus)s in %(is)s.\n"
"(If Tags is set to 'New Only' in the Standard Columns tab, this has no effect.)"
msgstr "Les étiquettes existantes seront gardées et toutes les nouvelles étiquettes ajoutées.\nLes étiquettes %(cmplt)s et %(inprog) seront quand même mise à jour, si connues.\nLes étiquettes %(lul)s seront mises à jour si %(lus)s dans %(is)s.\n(Si les étiquettes sont définies à 'Nouveau uniquement\" dans l'onglet colonnes standards, ceci n'a pas d'effet.)"
msgstr "Les étiquettes existantes seront gardées et toutes les nouvelles étiquettes ajoutées.\nLes étiquettes %(cmplt)s et %(inprog)s seront quand même mise à jour, si connues.\nLes étiquettes %(lul)s seront mises à jour si %(lus)s dans %(is)s.\n(Si les étiquettes sont définies à 'Nouveau uniquement\" dans l'onglet colonnes standards, ceci n'a pas d'effet.)"
#: config.py:458
msgid "Force Author into Author Sort?"
+14 -13
View File
@@ -2,6 +2,7 @@
# Copyright (C) YEAR ORGANIZATION
#
# Translators:
# Alex, 2016
# Nathan Follens, 2015
# Rodolfo_Jadon, 2014-2015
# Volluta <volluta@tutanota.com>, 2015
@@ -10,8 +11,8 @@ msgid ""
msgstr ""
"Project-Id-Version: calibre-plugins\n"
"POT-Creation-Date: 2016-04-28 16:06+Central Daylight Time\n"
"PO-Revision-Date: 2016-03-29 09:06+0000\n"
"Last-Translator: Kovid Goyal <kovid@kovidgoyal.net>\n"
"PO-Revision-Date: 2016-06-23 02:16+0000\n"
"Last-Translator: Alex\n"
"Language-Team: Dutch (http://www.transifex.com/calibre/calibre-plugins/language/nl/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -959,7 +960,7 @@ msgstr ""
#: config.py:1354
msgid "Save All Errors"
msgstr ""
msgstr "Sla alle fouten op"
#: config.py:1355
msgid "If unchecked, these errors will not be saved:%s"
@@ -1099,7 +1100,7 @@ msgstr ""
#: config.py:1507
msgid "Mark Emails Read"
msgstr ""
msgstr "Markeer emails gelezen"
#: config.py:1508
msgid ""
@@ -1336,7 +1337,7 @@ msgstr ""
#: dialogs.py:848
msgid "Background Metadata?"
msgstr ""
msgstr "Achtergrond metadata?"
#: dialogs.py:849
msgid ""
@@ -1368,11 +1369,11 @@ msgstr ""
#: dialogs.py:1054
msgid "Are you sure you want to remove this URL from the list?"
msgstr ""
msgstr "Weet u zeker dat u deze URL van de lijst wilt verwijderen?"
#: dialogs.py:1056
msgid "Are you sure you want to remove the %d selected URLs from the list?"
msgstr ""
msgstr "Weet u zeker dat u de %d geselecteerde URLs van de lijst wilt verwijderen?"
#: dialogs.py:1074
msgid "List of Books to Reject"
@@ -1386,7 +1387,7 @@ msgstr ""
#: dialogs.py:1101
msgid "Remove selected URLs from the list"
msgstr ""
msgstr "Verwijder geselecteerde URLs van de lijst"
#: dialogs.py:1116 dialogs.py:1120
msgid "This will be added to whatever note you've set for each URL above."
@@ -1456,7 +1457,7 @@ msgstr "FanFiction-verhalen downloaden van verschillende websites"
#: fff_plugin.py:293
msgid "&Download from URLs"
msgstr ""
msgstr "&Download van URLs"
#: fff_plugin.py:295
msgid "Download FanFiction Books from URLs"
@@ -1785,7 +1786,7 @@ msgstr ""
#: fff_plugin.py:1053
msgid "Cannot update non-epub format."
msgstr ""
msgstr "Kan "
#: fff_plugin.py:1128
msgid "Are You an Adult?"
@@ -2041,7 +2042,7 @@ msgstr ""
#: fff_plugin.py:1820
msgid "Adding format to book failed for some reason..."
msgstr ""
msgstr "Het toevoegen "
#: fff_plugin.py:1823 jobs.py:321
msgid "Error"
@@ -2117,7 +2118,7 @@ msgstr ""
#: jobs.py:103
msgid "Download Results:"
msgstr ""
msgstr "Downloadresultaten:"
#: jobs.py:105
msgid "Successful:"
@@ -2133,7 +2134,7 @@ msgstr "Download gestart..."
#: jobs.py:230
msgid "Download %s completed, %s chapters."
msgstr ""
msgstr "Download %s voltooid, %s hoofdstukken."
#: jobs.py:255
msgid "Already contains %d chapters. Reuse as is."
+63 -62
View File
@@ -3,13 +3,14 @@
#
# Translators:
# Henrik Mattsson-Mårn <h@reglage.net>, 2016
# J M <JimmXinuTwo@xinu.nu>, 2016
# Jonatan Nyberg <jonatan@autistici.org>, 2016
# Merarom <merarom@yahoo.es>, 2014-2015
msgid ""
msgstr ""
"Project-Id-Version: calibre-plugins\n"
"POT-Creation-Date: 2016-04-28 16:06+Central Daylight Time\n"
"PO-Revision-Date: 2016-05-23 16:51+0000\n"
"PO-Revision-Date: 2016-07-19 12:05+0000\n"
"Last-Translator: Jonatan Nyberg <jonatan@autistici.org>\n"
"Language-Team: Swedish (http://www.transifex.com/calibre/calibre-plugins/language/sv/)\n"
"MIME-Version: 1.0\n"
@@ -47,7 +48,7 @@ msgstr "Inställningar för:"
#: common_utils.py:497
msgid "Clear"
msgstr "Ta bort"
msgstr "Rensa"
#: common_utils.py:499
msgid "Clear all settings for this plugin"
@@ -83,7 +84,7 @@ msgstr "Starta om calibre nu."
#: config.py:192
msgid "List of Supported Sites"
msgstr "Lista av stöda platser"
msgstr "Lista av stödda platser"
#: config.py:194
msgid "FAQs"
@@ -153,7 +154,7 @@ msgid ""
"(title, author, URL, tags, custom columns, etc) from the web site. <br "
"/>This sets whether that will default to on or off. <br />Columns set to "
"'New Only' in the column tabs will only be set for new books."
msgstr ""
msgstr "Vid varje hämtning, erbjuder FanFicFare en möjlighet att uppdatera calibres metadata (titel, författare, URL, taggar, anpassade kolumner, osv.) från webbsidan. <br />Detta ställer in det som standard till på eller av. <br />Kolumner satt till \"Endast ny\" i kolumnflikarna kommer endast att ställas in för nya böcker."
#: config.py:432
msgid "Default Update EPUB Cover when Updating EPUB?"
@@ -164,7 +165,7 @@ msgid ""
"On each download, FanFicFare offers an option to update the book cover image"
" <i>inside</i> the EPUB from the web site when the EPUB is updated.<br "
"/>This sets whether that will default to on or off."
msgstr ""
msgstr "Vid varje hämtning, erbjuder FanFicFare en möjlighet att uppdatera bokomslagesbilden <i>i</ i> EPUB:en från webbsidan när EPUB uppdateras. <br />Detta ställer in det som standard till på eller av."
#: config.py:437
msgid "Default Background Metadata?"
@@ -192,7 +193,7 @@ msgstr "Ta bort andra format som finns?"
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 ""
msgstr "Kryssa i det här för att automatiskt ta bort alla andra e-bokformat när du uppdaterar en befintlig bok.\nPraktiskt om du har både en Nook (EPUB) och Kindle (MOBI), till exempel."
#: config.py:453
msgid "Keep Existing Tags when Updating Metadata?"
@@ -208,7 +209,7 @@ msgstr ""
#: config.py:458
msgid "Force Author into Author Sort?"
msgstr ""
msgstr "Tvingar författare in i författarsortering?"
#: config.py:459
msgid ""
@@ -340,7 +341,7 @@ msgstr ""
#: config.py:539
msgid "Keep 'Add New from URL(s)' dialog on top?"
msgstr ""
msgstr "Håll 'Lägg till ny från URL'-dialog överst?"
#: config.py:540
msgid ""
@@ -354,15 +355,15 @@ msgstr "Visa beräknad tid som återstår?"
#: config.py:545
msgid "When a Progress Bar is shown, show a rough estimate of the time left."
msgstr ""
msgstr "När en förloppsmätare visas, visa en grov uppskattning av den tid som återstår."
#: config.py:549
msgid "Misc Options"
msgstr ""
msgstr "Tillbehör och övriga alternativ"
#: config.py:553
msgid "Inject calibre Series when none found?"
msgstr ""
msgstr "Inför calibre serier när ingen finns?"
#: config.py:554
msgid ""
@@ -383,7 +384,7 @@ msgstr ""
#: config.py:563
msgid "Reject List"
msgstr ""
msgstr "Avvisa lista"
#: config.py:567
msgid "Edit Reject URL List"
@@ -463,7 +464,7 @@ msgstr ""
#: config.py:673
msgid "personal.ini"
msgstr ""
msgstr "personal.ini"
#: config.py:680 config.py:784 config.py:785
msgid "Edit personal.ini"
@@ -477,7 +478,7 @@ msgstr ""
#: config.py:693
msgid "View \"Safe\" personal.ini"
msgstr ""
msgstr "Visa \"säker\" personal.ini"
#: config.py:698 config.py:775
msgid ""
@@ -487,7 +488,7 @@ msgstr ""
#: config.py:704
msgid "defaults.ini"
msgstr ""
msgstr "defaults.ini"
#: config.py:709
msgid ""
@@ -501,7 +502,7 @@ msgstr "Visa standardvärden"
#: config.py:721
msgid "Calibre Columns"
msgstr ""
msgstr "calibre-kolumner"
#: config.py:728
msgid ""
@@ -522,7 +523,7 @@ msgstr ""
#: config.py:743
msgid "Show Calibre Column Names"
msgstr ""
msgstr "Visa calibre-kolumn namn"
#: config.py:752
msgid ""
@@ -531,15 +532,15 @@ msgstr ""
#: config.py:762
msgid "Plugin Defaults"
msgstr ""
msgstr "Tilläggets standardinställningar"
#: config.py:763
msgid "Plugin Defaults (%s) (Read-Only)"
msgstr ""
msgstr "plugin standardinställningar (%s) (skrivskyddad)"
#: config.py:774
msgid "View 'Safe' personal.ini"
msgstr ""
msgstr "Visa 'säker' personal.ini"
#: config.py:808
msgid "Calibre Column Entry Names"
@@ -637,15 +638,15 @@ msgstr ""
#: config.py:937
msgid "Generate Calibre Cover:"
msgstr ""
msgstr "Generera calibre omslag:"
#: config.py:964
msgid "Plugin %(gc)s"
msgstr ""
msgstr "Tillägg %(gc)s"
#: config.py:965
msgid "Use plugin to create covers. Additional settings are below."
msgstr ""
msgstr "Använd tillägg för att skapa omslag. Ytterligare inställningar finns nedan."
#: config.py:972
msgid "Calibre Generate Cover"
@@ -660,7 +661,7 @@ msgstr ""
#: config.py:987
msgid "Generate Covers Only for New Books"
msgstr ""
msgstr "Skapa omslag endast för nya böcker"
#: config.py:988
msgid ""
@@ -681,7 +682,7 @@ msgstr ""
#: config.py:1001
msgid "%(gc)s(Plugin) Settings"
msgstr ""
msgstr "%(gc)s(Plugin) Inställningar"
#: config.py:1009
msgid ""
@@ -731,7 +732,7 @@ msgstr ""
#: config.py:1108
msgid "Which column and algorithm to use are configured in %(cp)s."
msgstr ""
msgstr "Vilken kolumn och algoritm att använda är konfigurerade i%(cp)s."
#: config.py:1118
msgid ""
@@ -803,11 +804,11 @@ msgstr "Status"
#: config.py:1239
msgid "Status:%(cmplt)s"
msgstr "Status:%(cmplt)"
msgstr "Status:%(cmplt)s"
#: config.py:1240
msgid "Status:%(inprog)s"
msgstr ""
msgstr "Status:%(inprog)s"
#: config.py:1241 config.py:1403
msgid "Series"
@@ -911,7 +912,7 @@ msgstr ""
#: config.py:1303
msgid "Update this %s column(%s) with..."
msgstr ""
msgstr "Uppdatera denna %s kolumn(%s) med..."
#: config.py:1313
msgid "Values that aren't valid for this enumeration column will be ignored."
@@ -944,7 +945,7 @@ msgstr ""
#: config.py:1335
msgid "Special column:"
msgstr ""
msgstr "Special kolumn:"
#: config.py:1340
msgid "Update/Overwrite Error Column:"
@@ -958,23 +959,23 @@ msgstr ""
#: config.py:1354
msgid "Save All Errors"
msgstr ""
msgstr "Spara alla fel"
#: config.py:1355
msgid "If unchecked, these errors will not be saved:%s"
msgstr ""
msgstr "Om inte ikryssad, kommer dessa fel inte sparas:%s"
#: config.py:1357 fff_plugin.py:1342 jobs.py:223
msgid "Not Overwriting, web site is not newer."
msgstr ""
msgstr "Skriver inte över, webbsida är inte nyare."
#: config.py:1358 fff_plugin.py:1321 jobs.py:262
msgid "Already contains %d chapters."
msgstr ""
msgstr "Innehåller redan %d kapitel."
#: config.py:1365
msgid "Saved Metadata Column:"
msgstr ""
msgstr "Sparad metadatakolumn:"
#: config.py:1366
msgid ""
@@ -1050,7 +1051,7 @@ msgstr ""
#: config.py:1460
msgid "IMAP Server Name"
msgstr ""
msgstr "IMAP-servernamn"
#: config.py:1461
msgid "Name of IMAP server--must allow IMAP4 with SSL. Eg: imap.gmail.com"
@@ -1058,7 +1059,7 @@ msgstr ""
#: config.py:1470
msgid "IMAP User Name"
msgstr ""
msgstr "IMAP-användarnamn"
#: config.py:1471
msgid ""
@@ -1068,7 +1069,7 @@ msgstr ""
#: config.py:1480
msgid "IMAP User Password"
msgstr ""
msgstr "IMAP-användarlösenord"
#: config.py:1481
msgid ""
@@ -1088,7 +1089,7 @@ msgstr ""
#: config.py:1497
msgid "IMAP Folder Name"
msgstr ""
msgstr "IMAP katalognamn"
#: config.py:1498
msgid ""
@@ -1098,7 +1099,7 @@ msgstr ""
#: config.py:1507
msgid "Mark Emails Read"
msgstr ""
msgstr "Märk lästa epostmeddelanden"
#: config.py:1508
msgid ""
@@ -1142,7 +1143,7 @@ msgstr "Visa nedladdningsalternativ"
#: dialogs.py:264 dialogs.py:810
msgid "Output &Format:"
msgstr ""
msgstr "Utdata &format:"
#: dialogs.py:272 dialogs.py:818
msgid ""
@@ -1151,7 +1152,7 @@ msgstr "Välj utdataformat att skapa. Kan fastställa standard från plugin konf
#: dialogs.py:300 dialogs.py:838
msgid "Update Calibre &Metadata?"
msgstr ""
msgstr "Uppdatera calibre &metadata?"
#: dialogs.py:301 dialogs.py:839
msgid ""
@@ -1212,7 +1213,7 @@ msgstr ""
#: dialogs.py:505
msgid "For Individual Books"
msgstr ""
msgstr "För individuella böcker"
#: dialogs.py:506
msgid "Get URLs and go to dialog for individual story downloads."
@@ -1270,7 +1271,7 @@ msgstr ""
#: dialogs.py:590 dialogs.py:614 fff_plugin.py:960
msgid "Fetched metadata for"
msgstr ""
msgstr "Hämtade metadata för"
#: dialogs.py:643
msgid " - %s estimated until done"
@@ -1359,7 +1360,7 @@ msgstr "Är du säker du vill ta bort valda %d böcker från listan?"
#: dialogs.py:1006
msgid "Note"
msgstr ""
msgstr "Anteckning"
#: dialogs.py:1045
msgid "Select or Edit Reject Note."
@@ -1455,15 +1456,15 @@ msgstr ""
#: fff_plugin.py:293
msgid "&Download from URLs"
msgstr ""
msgstr "&Hämta från adresser"
#: fff_plugin.py:295
msgid "Download FanFiction Books from URLs"
msgstr ""
msgstr "Hämta FanFiction Böcker från adresser"
#: fff_plugin.py:298
msgid "&Update Existing FanFiction Books"
msgstr ""
msgstr "&Uppdatera existerande FanFiction böcker"
#: fff_plugin.py:303
msgid "Get Story URLs from &Email"
@@ -1511,7 +1512,7 @@ msgstr ""
#: fff_plugin.py:338
msgid "Add to \"Send to Device\" Lists"
msgstr ""
msgstr "Lägg till \"Skicka till enhet\"-listor"
#: fff_plugin.py:340
msgid "Mark Unread: Add to \"To Read\" Lists"
@@ -1527,15 +1528,15 @@ msgstr ""
#: fff_plugin.py:367
msgid "Reject Selected Books"
msgstr ""
msgstr "Avvisa markerade böcker"
#: fff_plugin.py:375
msgid "&Configure FanFicFare"
msgstr ""
msgstr "&Anpassa FanFicFare"
#: fff_plugin.py:378
msgid "Configure FanFicFare"
msgstr ""
msgstr "Anpassa FanFicFare"
#: fff_plugin.py:433
msgid "Cannot Update Reading Lists from Device View"
@@ -1812,7 +1813,7 @@ msgstr ""
#: fff_plugin.py:1159
msgid "Click '<b>Yes</b>' to Skip."
msgstr ""
msgstr "Tryck '<b>Ja</b>' för att hoppa över."
#: fff_plugin.py:1162
msgid "Story in Series Anthology(%s)."
@@ -1852,15 +1853,15 @@ msgstr ""
#: fff_plugin.py:1274
msgid "In library: <a href=\"%(liburl)s\">%(liburl)s</a>"
msgstr ""
msgstr "I bibliotek: <a href=\"%(liburl)s\">%(liburl)s</a>"
#: fff_plugin.py:1275 fff_plugin.py:1289
msgid "New URL: <a href=\"%(newurl)s\">%(newurl)s</a>"
msgstr ""
msgstr "Ny webbadress: <a href=\"%(newurl)s\">%(newurl)s</a>"
#: fff_plugin.py:1276
msgid "Click '<b>Yes</b>' to update/overwrite book with new URL."
msgstr ""
msgstr "Klicka '<b>Ja</b>' för att uppdatera/skriva över bok med ny webbadress."
#: fff_plugin.py:1277
msgid "Click '<b>No</b>' to skip updating/overwriting this book."
@@ -1884,11 +1885,11 @@ msgstr ""
#: fff_plugin.py:1290
msgid "Click '<b>Yes</b>' to a new book with new URL."
msgstr ""
msgstr "Klicka '<b>Ja</b>' till en ny bok med ny webbadress."
#: fff_plugin.py:1291
msgid "Click '<b>No</b>' to skip URL."
msgstr ""
msgstr "Klicka '<b>Nej</b>' för att hoppa över URL."
#: fff_plugin.py:1297
msgid "Update declined by user due to differing story URL(%s)"
@@ -1920,7 +1921,7 @@ msgstr ""
#: fff_plugin.py:1461 fff_plugin.py:1659 fff_plugin.py:1689
msgid "See log for details."
msgstr ""
msgstr "Se logg för detaljer."
#: fff_plugin.py:1462
msgid "Proceed with updating your library(Error Column, if configured)?"
@@ -1936,11 +1937,11 @@ msgstr ""
#: fff_plugin.py:1477 fff_plugin.py:1714
msgid "FanFicFare log"
msgstr ""
msgstr "FanFicFare logg"
#: fff_plugin.py:1497
msgid "Download %s FanFiction Book(s)"
msgstr ""
msgstr "Hämta %s FanFiction bok/böcker"
#: fff_plugin.py:1504
msgid "Starting %d FanFicFare Downloads"
@@ -1952,7 +1953,7 @@ msgstr "Berättelsedetaljer:"
#: fff_plugin.py:1538
msgid "Error Updating Metadata"
msgstr ""
msgstr "Fel vid uppdatering av metadata"
#: fff_plugin.py:1539
msgid ""
File diff suppressed because it is too large Load Diff
+17 -16
View File
@@ -2,14 +2,15 @@
# Copyright (C) YEAR ORGANIZATION
#
# Translators:
# Andrii <dexteritymaster@gmail.com>, 2016
# Andrii <dexteritymaster@gmail.com>, 2014-2015
# Yuri Chornoivan <yurchor@ukr.net>, 2014
msgid ""
msgstr ""
"Project-Id-Version: calibre-plugins\n"
"POT-Creation-Date: 2016-04-28 16:06+Central Daylight Time\n"
"PO-Revision-Date: 2016-03-29 09:06+0000\n"
"Last-Translator: Kovid Goyal <kovid@kovidgoyal.net>\n"
"PO-Revision-Date: 2016-06-26 20:50+0000\n"
"Last-Translator: Andrii <dexteritymaster@gmail.com>\n"
"Language-Team: Ukrainian (http://www.transifex.com/calibre/calibre-plugins/language/uk/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -30,55 +31,55 @@ msgstr "Шлях до бібліотеки calibre. Типово буде вик
#: common_utils.py:398
msgid "Keyboard shortcuts"
msgstr ""
msgstr "Клавіатурні гарячі клавіші"
#: common_utils.py:444
msgid "Undefined"
msgstr ""
msgstr "Невизначено"
#: common_utils.py:464
msgid "Prefs Viewer dialog"
msgstr ""
msgstr "Налаштування Вікна Перегляду"
#: common_utils.py:465
msgid "Preferences for: "
msgstr ""
msgstr "Налаштування для:"
#: common_utils.py:497
msgid "Clear"
msgstr ""
msgstr "Очистити"
#: common_utils.py:499
msgid "Clear all settings for this plugin"
msgstr ""
msgstr "Очистити всі налаштування для цього плагіну"
#: common_utils.py:526
msgid ""
"Are you sure you want to clear your settings in this library for this "
"plugin?"
msgstr ""
msgstr "Ви впевнені, що бажаєте очистити ваші налаштування в цій бібліотцеці для даного плагіну?"
#: common_utils.py:527
msgid ""
"Any settings in other libraries or stored in a JSON file in your calibre "
"plugins folder will not be touched."
msgstr ""
msgstr "Будь-які налаштування в інших бібліотеках, або збережені в файлі JSON в папці ваший плагінів не будуть змінені."
#: common_utils.py:528
msgid "You must restart calibre afterwards."
msgstr ""
msgstr "Після цього ви повинні перезавантажити Calibre."
#: common_utils.py:537
msgid "All settings for this plugin in this library have been cleared."
msgstr ""
msgstr "Всі налаштування для цього плагіну в цій бібліотеці були очищені."
#: common_utils.py:538
msgid "Please restart calibre now."
msgstr ""
msgstr "Будь-ласка перезавантажте Calibre."
#: common_utils.py:540
msgid "Restart calibre now"
msgstr ""
msgstr "Перезавантажити Calibre"
#: config.py:192
msgid "List of Supported Sites"
@@ -94,7 +95,7 @@ msgstr "Основні"
#: config.py:220
msgid "Calibre Cover"
msgstr ""
msgstr "Обкладинка Calibre"
#: config.py:228
msgid "Standard Columns"
@@ -106,7 +107,7 @@ msgstr "Нетипові стовпчики"
#: config.py:234
msgid "Email Settings"
msgstr ""
msgstr "Налаштування Пошти"
#: config.py:237
msgid "Other"
+41 -27
View File
@@ -206,6 +206,12 @@ class FanFictionNetSiteAdapter(BaseSiteAdapter):
# b.extract()
metatext = stripHTML(grayspan).replace('Hurt/Comfort','Hurt-Comfort')
#logger.debug("metatext:(%s)"%metatext)
if 'Status: Complete' in metatext:
self.story.setMetadata('status', 'Completed')
else:
self.story.setMetadata('status', 'In-Progress')
metalist = metatext.split(" - ")
#logger.debug("metalist:(%s)"%metalist)
@@ -240,36 +246,44 @@ class FanFictionNetSiteAdapter(BaseSiteAdapter):
self.story.setMetadata('dateUpdated',datetime.fromtimestamp(float(dates[0]['data-xutime'])))
self.story.setMetadata('datePublished',datetime.fromtimestamp(float(dates[-1]['data-xutime'])))
donechars = False
# Meta key titles and the metadata they go into, if any.
metakeys = {
# These are already handled separately.
'Chapters':False,
'Status':False,
'id':False,
'Updated':False,
'Published':False,
'Reviews':'reviews',
'Favs':'favs',
'Follows':'follows',
'Words':'numWords',
}
chars_ships_list=[]
while len(metalist) > 0:
if metalist[0].startswith('Chapters') or metalist[0].startswith('Status') or metalist[0].startswith('id:') or metalist[0].startswith('Updated:') or metalist[0].startswith('Published:'):
pass
elif metalist[0].startswith('Reviews'):
self.story.setMetadata('reviews',metalist[0].split(':')[1].strip())
elif metalist[0].startswith('Favs:'):
self.story.setMetadata('favs',metalist[0].split(':')[1].strip())
elif metalist[0].startswith('Follows:'):
self.story.setMetadata('follows',metalist[0].split(':')[1].strip())
elif metalist[0].startswith('Words'):
self.story.setMetadata('numWords',metalist[0].split(':')[1].strip())
elif not donechars:
# with 'pairing' support, pairings are bracketed w/o comma after
# [Caspian X, Lucy Pevensie] Edmund Pevensie, Peter Pevensie
self.story.extendList('characters',metalist[0].replace('[','').replace(']',',').split(','))
m = metalist.pop(0)
if ':' in m:
key = m.split(':')[0].strip()
if key in metakeys:
if metakeys[key]:
self.story.setMetadata(metakeys[key],m.split(':')[1].strip())
continue
# no ':' or not found in metakeys
chars_ships_list.append(m)
l = metalist[0]
while '[' in l:
self.story.addToList('ships',l[l.index('[')+1:l.index(']')].replace(', ','/'))
l = l[l.index(']')+1:]
donechars = True
metalist=metalist[1:]
if 'Status: Complete' in metatext:
self.story.setMetadata('status', 'Completed')
else:
self.story.setMetadata('status', 'In-Progress')
# all because sometimes chars can have ' - ' in them.
chars_ships_text = (' - ').join(chars_ships_list)
# print("chars_ships_text:%s"%chars_ships_text)
# with 'pairing' support, pairings are bracketed w/o comma after
# [Caspian X, Lucy Pevensie] Edmund Pevensie, Peter Pevensie
self.story.extendList('characters',chars_ships_text.replace('[','').replace(']',',').split(','))
l = chars_ships_text
while '[' in l:
self.story.addToList('ships',l[l.index('[')+1:l.index(']')].replace(', ','/'))
l = l[l.index(']')+1:]
if get_cover:
# Try the larger image first.
cover_url = ""
@@ -117,7 +117,7 @@ class FictionManiaTVAdapter(BaseSiteAdapter):
self.story.setMetadata('rating', value)
elif key == 'Complete':
self.story.setMetadata('status', 'Complete' if value == 'Complete' else 'In-Progress')
self.story.setMetadata('status', 'Completed' if value == 'Complete' else 'In-Progress')
elif key == 'Categories':
for element in cells[1]('a'):
+1 -1
View File
@@ -93,7 +93,7 @@ class FicwadComSiteAdapter(BaseSiteAdapter):
try:
data = self._fetchUrl(url)
# non-existent/removed story urls get thrown to the front page.
if "<h2>Welcome to FicWad</h2>" in data:
if "<h4>Featured Story</h4>" in data:
raise exceptions.StoryDoesNotExist(self.url)
soup = self.make_soup(data)
except urllib2.HTTPError, e:
@@ -14,7 +14,6 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
import re
from base_xenforoforum_adapter import BaseXenForoForumAdapter
@@ -188,9 +188,13 @@ class HarryPotterFanFictionComSiteAdapter(BaseSiteAdapter):
data = self._fetchUrl(url)
# remove everything after here--the site's chapters break the
# BS4 parser.
data = data[:data.index('<script type="text/javascript" src="reviewjs.js">')]
try:
# remove everything after here--the site's chapters break
# the BS4 parser.
data = data[:data.index('<script type="text/javascript" src="reviewjs.js">')]
except:
# some older stories don't have the code at the end that breaks things.
pass
soup = self.make_soup(data)
+5
View File
@@ -112,6 +112,11 @@ class SiyeCoUkAdapter(BaseSiteAdapter): # XXX
# need(or easier) to pull other metadata from the author's list page.
authsoup = self.make_soup(self._fetchUrl(self.story.getMetadata('authorUrl')))
# remove author profile incase they've put the story URL in their bio.
profile = authsoup.find('div',{'id':'profile'})
if profile: # in case it changes.
profile.extract()
## Title
titlea = authsoup.find('a', href=re.compile(r'viewstory.php\?sid='+self.story.getMetadata('storyId')+"$"))
self.story.setMetadata('title',stripHTML(titlea))
@@ -97,7 +97,7 @@ class StoriesOnlineNetAdapter(BaseSiteAdapter):
params['page'] = 'http://'+self.getSiteDomain()+'/'
params['submit'] = 'Login'
loginUrl = 'https://' + self.getSiteDomain() + '/login.php'
loginUrl = 'https://' + self.getSiteDomain() + '/sol-secure/login.php'
logger.debug("Will now login to URL (%s) as (%s)" % (loginUrl,
params['theusername']))
+2 -2
View File
@@ -132,9 +132,9 @@ class BaseSiteAdapter(Configurable):
def set_cookiejar(self,cj):
self.cookiejar = cj
saveheaders = self.opener.addheaders
self.opener = u2.build_opener(u2.HTTPCookieProcessor(self.cookiejar),GZipProcessor())
self.opener.addheaders = [('User-Agent', self.getConfig('user_agent')),
('X-Clacks-Overhead','GNU Terry Pratchett')]
self.opener.addheaders = saveheaders
def load_cookiejar(self,filename):
'''
@@ -196,8 +196,8 @@ class BaseXenForoForumAdapter(BaseSiteAdapter):
soup = soup.find('li',{'class':'message'}) # limit first post for date stuff below. ('#' posts above)
if threadmark_chaps or self.getConfig('always_use_forumtags'):
## only use tags if threadmarks for chapters or
for tag in topsoup.findAll('a',{'class':'tag'}):
## only use tags if threadmarks for chapters or always_use_forumtags is on.
for tag in topsoup.findAll('a',{'class':'tag'}) + topsoup.findAll('span',{'class':'prefix'}):
tstr = stripHTML(tag)
if self.getConfig('capitalize_forumtags'):
tstr = tstr.title()
@@ -228,11 +228,18 @@ class BaseXenForoForumAdapter(BaseSiteAdapter):
if ( url.startswith(self.getURLPrefix()) or
url.startswith('http://'+self.getSiteDomain()) or
url.startswith('https://'+self.getSiteDomain()) ) and ('/posts/' in url or '/threads/' in url):
url.startswith('https://'+self.getSiteDomain()) ) and \
( '/posts/' in url or '/threads/' in url or 'showpost.php' in url or 'goto/post' in url):
# brute force way to deal with SB's http->https change when hardcoded http urls.
url = url.replace('http://'+self.getSiteDomain(),self.getURLPrefix())
# http://forums.spacebattles.com/showpost.php?p=4755532&postcount=9
url = re.sub(r'showpost\.php\?p=([0-9]+)(&postcount=[0-9]+)?',r'/posts/\1/',url)
# http://forums.spacebattles.com/goto/post?id=15222406#post-15222406
url = re.sub(r'/goto/post\?id=([0-9]+)(#post-[0-9]+)?',r'/posts/\1/',url)
url = re.sub(r'(^[\'"]+|[\'"]+$)','',url) # strip leading or trailing '" from incorrect quoting.
url = re.sub(r'like$','',url) # strip 'like' if incorrect 'like' link instead of proper post URL.
+3
View File
@@ -1069,6 +1069,9 @@ class Story(Configurable):
if imgurl not in self.imgurls:
try:
if imgurl == 'failedtoload':
raise Exception("Previously failed to load")
parsedUrl = urlparse.urlparse(imgurl)
if self.getConfig('no_image_processing'):
(data,ext,mime) = no_convert_image(imgurl,
+1 -1
View File
@@ -23,7 +23,7 @@ setup(
# Versions should comply with PEP440. For a discussion on single-sourcing
# the version across setup.py and the project code, see
# https://packaging.python.org/en/latest/single_source_version.html
version="2.3.3",
version="2.3.5",
description='A tool for downloading fanfiction to eBook formats',
long_description=long_description,
+1 -11
View File
@@ -1,6 +1,6 @@
# ffd-retief-hrd fanficfare
application: fanficfare
version: 2-3-03
version: 2-3-05
runtime: python27
api_version: 1
threadsafe: true
@@ -34,13 +34,3 @@ handlers:
- url: /.*
script: main.app
#builtins:
#- datastore_admin: on
libraries:
- name: django
version: "1.2"
- name: PIL
version: "1.1.7"
+1 -1
View File
@@ -35,7 +35,7 @@
If you have any problems with this application, please
report them in
the <a href="http://groups.google.com/group/fanfic-downloader">FanFicFare Google Group</a>. The
<a href="http://2-3-02.fanficfare.appspot.com">previous version
<a href="http://2-3-04a.fanficfare.appspot.com">previous version
</a> is also available for you to use if necessary.
</p>
<div id='error'>
-14
View File
@@ -30,20 +30,6 @@ import datetime
import traceback
from StringIO import StringIO
## Just to shut up the appengine warning about "You are using the
## default Django version (0.96). The default Django version will
## change in an App Engine release in the near future. Please call
## use_library() to explicitly select a Django version. For more
## information see
## http://code.google.com/appengine/docs/python/tools/libraries.html#Django"
## Note that if you are using the SDK App Engine Launcher and hit an SDK
## Console page first, you will get a django version mismatch error when you
## to go hit one of the application pages. Just change a file again, and
## make sure to hit an app page before the SDK page to clear it.
#os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
#from google.appengine.dist import use_library
#use_library('django', '1.2')
from google.appengine.ext import db
from google.appengine.api import taskqueue
from google.appengine.api import users