mirror of
https://github.com/wassname/FanFicFare.git
synced 2026-09-13 12:11:20 +08:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f6d65c334f | ||
|
|
2c5371d95e | ||
|
|
6f4660763f | ||
|
|
75f8f72266 | ||
|
|
b1d689ba3e | ||
|
|
39bb6e37f6 | ||
|
|
288f12afed | ||
|
|
2a25aef7ac | ||
|
|
085fb47b08 | ||
|
|
5fdcbab46a | ||
|
|
2d83fa8f5d | ||
|
|
4a752e05e1 | ||
|
|
f1d9760aa9 | ||
|
|
b11bdd82db | ||
|
|
6e5de8060e | ||
|
|
2c1b9456bf | ||
|
|
60439cc658 | ||
|
|
fb95e1e168 | ||
|
|
0d490d2e50 | ||
|
|
838510c011 | ||
|
|
954ad00ca6 | ||
|
|
ee462d3742 | ||
|
|
56401e6dfa | ||
|
|
6070accbf5 |
@@ -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
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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:"
|
||||
|
||||
@@ -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,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?"
|
||||
|
||||
@@ -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."
|
||||
|
||||
@@ -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
@@ -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"
|
||||
|
||||
@@ -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'):
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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']))
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
@@ -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"
|
||||
|
||||
@@ -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'>
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user