mirror of
https://github.com/wassname/FanFicFare.git
synced 2026-09-14 11:14:10 +08:00
Compare commits
16
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
25264f5222 | ||
|
|
3a3d9959f7 | ||
|
|
55eb39e8b2 | ||
|
|
3c441e0533 | ||
|
|
fbb7bb9eaa | ||
|
|
f297814da2 | ||
|
|
39e96b9966 | ||
|
|
d28a06d8b2 | ||
|
|
cb700b0b7b | ||
|
|
002cefc1af | ||
|
|
fd15ad6f4b | ||
|
|
46262ae17b | ||
|
|
c848edf0a3 | ||
|
|
be34b6718f | ||
|
|
79971745a2 | ||
|
|
4819ca95b1 |
@@ -1,6 +1,6 @@
|
||||
# ffd-retief-hrd fanfictiondownloader
|
||||
application: fanfictiondownloader
|
||||
version: 2-0-04
|
||||
version: 2-0-06
|
||||
runtime: python27
|
||||
api_version: 1
|
||||
threadsafe: true
|
||||
|
||||
@@ -42,8 +42,8 @@ class FanFictionDownLoaderBase(InterfaceActionBase):
|
||||
description = _('UI plugin to download FanFiction stories from various sites.')
|
||||
supported_platforms = ['windows', 'osx', 'linux']
|
||||
author = 'Jim Miller'
|
||||
version = (2, 0, 4)
|
||||
minimum_calibre_version = (1, 13, 0)
|
||||
version = (2, 0, 6)
|
||||
minimum_calibre_version = (1, 48, 0)
|
||||
|
||||
#: This field defines the GUI plugin class that contains all the code
|
||||
#: that actually does something. Its format is module_path:class_name
|
||||
|
||||
@@ -420,7 +420,7 @@ class FanFictionDownLoaderPlugin(InterfaceAction):
|
||||
|
||||
def list_story_urls(self):
|
||||
'''Get list of URLs from existing books.'''
|
||||
if self.gui.current_view().selectionModel().selectedRows() == 0 :
|
||||
if not self.gui.current_view().selectionModel().selectedRows() :
|
||||
self.gui.status_bar.show_message(_('No Selected Books to Get URLs From'),
|
||||
3000)
|
||||
return
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: calibre-plugins\n"
|
||||
"POT-Creation-Date: 2014-08-22 12:39+Central Daylight Time\n"
|
||||
"POT-Creation-Date: 2014-09-09 15:54+Central Daylight Time\n"
|
||||
"PO-Revision-Date: 2014-09-02 11:38+0000\n"
|
||||
"Last-Translator: Ettore Atalan <atalanttore@googlemail.com>\n"
|
||||
"Language-Team: German (http://www.transifex.com/projects/p/calibre-plugins/language/de/)\n"
|
||||
@@ -575,7 +575,7 @@ msgstr "Genre"
|
||||
msgid "Language"
|
||||
msgstr "Sprache"
|
||||
|
||||
#: config.py:928 ffdl_plugin.py:1142 ffdl_plugin.py:1306 ffdl_plugin.py:1336
|
||||
#: config.py:928 ffdl_plugin.py:1152 ffdl_plugin.py:1324 ffdl_plugin.py:1354
|
||||
msgid "Status"
|
||||
msgstr "Status"
|
||||
|
||||
@@ -603,7 +603,7 @@ msgstr "Beziehungen"
|
||||
msgid "Published"
|
||||
msgstr "Veröffentlicht"
|
||||
|
||||
#: config.py:935 ffdl_plugin.py:1419 ffdl_plugin.py:1438
|
||||
#: config.py:935 ffdl_plugin.py:1437 ffdl_plugin.py:1456
|
||||
msgid "Updated"
|
||||
msgstr "Aktualisierung"
|
||||
|
||||
@@ -644,7 +644,7 @@ msgid "Extra Tags"
|
||||
msgstr "zusätzliche Schlagworte"
|
||||
|
||||
#: config.py:945 config.py:1057 dialogs.py:804 dialogs.py:900
|
||||
#: ffdl_plugin.py:1142 ffdl_plugin.py:1306 ffdl_plugin.py:1336
|
||||
#: ffdl_plugin.py:1152 ffdl_plugin.py:1324 ffdl_plugin.py:1354
|
||||
msgid "Title"
|
||||
msgstr "Titel"
|
||||
|
||||
@@ -656,8 +656,8 @@ msgstr "Story URL"
|
||||
msgid "Description"
|
||||
msgstr "Beschreibung"
|
||||
|
||||
#: config.py:948 dialogs.py:804 dialogs.py:900 ffdl_plugin.py:1142
|
||||
#: ffdl_plugin.py:1306 ffdl_plugin.py:1336
|
||||
#: config.py:948 dialogs.py:804 dialogs.py:900 ffdl_plugin.py:1152
|
||||
#: ffdl_plugin.py:1324 ffdl_plugin.py:1354
|
||||
msgid "Author"
|
||||
msgstr "Autor"
|
||||
|
||||
@@ -960,7 +960,7 @@ msgid ""
|
||||
"What sort of update to perform. May set default from plugin configuration."
|
||||
msgstr "Welche Art von Aktualisierung ausgeführt werden soll. Eine Standardeinstellung kann in den Plugin Konfigurationen festgelegt werden."
|
||||
|
||||
#: dialogs.py:804 ffdl_plugin.py:1142 ffdl_plugin.py:1306 ffdl_plugin.py:1336
|
||||
#: dialogs.py:804 ffdl_plugin.py:1152 ffdl_plugin.py:1324 ffdl_plugin.py:1354
|
||||
msgid "Comment"
|
||||
msgstr "Kommentar"
|
||||
|
||||
@@ -1217,387 +1217,387 @@ msgstr "Stories für die Aktualisierung werden gesammelt..."
|
||||
msgid "Update Existing List"
|
||||
msgstr "Vorhandene Liste aktualisieren"
|
||||
|
||||
#: ffdl_plugin.py:744
|
||||
#: ffdl_plugin.py:745
|
||||
msgid "Started fetching metadata for %s stories."
|
||||
msgstr "Hole die Metadaten für %s-Stories."
|
||||
|
||||
#: ffdl_plugin.py:750
|
||||
#: ffdl_plugin.py:751
|
||||
msgid "No valid story URLs entered."
|
||||
msgstr "Es wurde keine gültige URL eingegeben."
|
||||
|
||||
#: ffdl_plugin.py:775 ffdl_plugin.py:781
|
||||
#: ffdl_plugin.py:776 ffdl_plugin.py:782
|
||||
msgid "Reject URL?"
|
||||
msgstr "URL ablehnen?"
|
||||
|
||||
#: ffdl_plugin.py:782 ffdl_plugin.py:800
|
||||
#: ffdl_plugin.py:783 ffdl_plugin.py:801
|
||||
msgid "<b>%s</b> is on your Reject URL list:"
|
||||
msgstr "<b>%s</b> ist auf ihrer URL-Ablehnungsliste:"
|
||||
|
||||
#: ffdl_plugin.py:784
|
||||
#: ffdl_plugin.py:785
|
||||
msgid "Click '<b>Yes</b>' to Reject."
|
||||
msgstr "Klicken Sie '<b>Yes</b>' um abzulehnen."
|
||||
|
||||
#: ffdl_plugin.py:785 ffdl_plugin.py:881
|
||||
#: ffdl_plugin.py:786 ffdl_plugin.py:890
|
||||
msgid "Click '<b>No</b>' to download anyway."
|
||||
msgstr "Klicken Sie '<b>No</b>' um trotzdem herunterzuladen."
|
||||
|
||||
#: ffdl_plugin.py:787
|
||||
#: ffdl_plugin.py:788
|
||||
msgid "Story on Reject URLs list (%s)."
|
||||
msgstr "Die Story ist auf der URL-Ablehnungsliste (%s)."
|
||||
|
||||
#: ffdl_plugin.py:790
|
||||
#: ffdl_plugin.py:791
|
||||
msgid "Rejected"
|
||||
msgstr "Abgelehnt"
|
||||
|
||||
#: ffdl_plugin.py:793
|
||||
#: ffdl_plugin.py:794
|
||||
msgid "Remove Reject URL?"
|
||||
msgstr "Entferne die abgelehnte URL?"
|
||||
|
||||
#: ffdl_plugin.py:799
|
||||
#: ffdl_plugin.py:800
|
||||
msgid "Remove URL from Reject List?"
|
||||
msgstr "Entferne die URL von der Ablehnungsliste?"
|
||||
|
||||
#: ffdl_plugin.py:802
|
||||
#: ffdl_plugin.py:803
|
||||
msgid "Click '<b>Yes</b>' to remove it from the list,"
|
||||
msgstr "Klicken Sie '<b>Yes</b>' um es von der Liste zu entfernen,"
|
||||
|
||||
#: ffdl_plugin.py:803
|
||||
#: ffdl_plugin.py:804
|
||||
msgid "Click '<b>No</b>' to leave it on the list."
|
||||
msgstr "Klicken Sie '<b>No</b>' um es auf der Liste zu lassen."
|
||||
|
||||
#: ffdl_plugin.py:820
|
||||
#: ffdl_plugin.py:821
|
||||
msgid "Cannot update non-epub format."
|
||||
msgstr "Nicht-EPUB-Format kann nicht aktualisiert werden."
|
||||
|
||||
#: ffdl_plugin.py:857
|
||||
#: ffdl_plugin.py:866
|
||||
msgid "Are You an Adult?"
|
||||
msgstr "Sind sie volljährig?"
|
||||
|
||||
#: ffdl_plugin.py:858
|
||||
#: ffdl_plugin.py:867
|
||||
msgid ""
|
||||
"%s requires that you be an adult. Please confirm you are an adult in your "
|
||||
"locale:"
|
||||
msgstr "%s erfordert, dass sie volljährig sind. Bitte bestätigen Sie, dass Sie ein Erwachsener in ihrem Land sind:"
|
||||
|
||||
#: ffdl_plugin.py:872
|
||||
#: ffdl_plugin.py:881
|
||||
msgid "Skip Story?"
|
||||
msgstr "Story überspringen?"
|
||||
|
||||
#: ffdl_plugin.py:878
|
||||
#: ffdl_plugin.py:887
|
||||
msgid "Skip Anthology Story?"
|
||||
msgstr "Sammelband-Story überspringen?"
|
||||
|
||||
#: ffdl_plugin.py:879
|
||||
#: ffdl_plugin.py:888
|
||||
msgid ""
|
||||
"\"<b>%s</b>\" is in series \"<b><a href=\"%s\">%s</a></b>\" that you have an"
|
||||
" anthology book for."
|
||||
msgstr "\"<b>%s</b>\" ist in der Serie \"<b><a href=\"%s\">%s</a></b>\" enthalten, die sie in einem Sammelband haben."
|
||||
|
||||
#: ffdl_plugin.py:880
|
||||
#: ffdl_plugin.py:889
|
||||
msgid "Click '<b>Yes</b>' to Skip."
|
||||
msgstr "Klicken Sie '<b>Yes</b>' um zu überspringen."
|
||||
|
||||
#: ffdl_plugin.py:883
|
||||
#: ffdl_plugin.py:892
|
||||
msgid "Story in Series Anthology(%s)."
|
||||
msgstr "Story in Serien-Sammelband (%s)."
|
||||
|
||||
#: ffdl_plugin.py:888
|
||||
#: ffdl_plugin.py:897
|
||||
msgid "Skipped"
|
||||
msgstr "Übersprungen"
|
||||
|
||||
#: ffdl_plugin.py:916
|
||||
#: ffdl_plugin.py:925
|
||||
msgid "Add"
|
||||
msgstr "Hinzufügen"
|
||||
|
||||
#: ffdl_plugin.py:929
|
||||
#: ffdl_plugin.py:938
|
||||
msgid "Meta"
|
||||
msgstr "Meta"
|
||||
|
||||
#: ffdl_plugin.py:962
|
||||
#: ffdl_plugin.py:971
|
||||
msgid "Skipping duplicate story."
|
||||
msgstr "Doppelte Story überspringen."
|
||||
|
||||
#: ffdl_plugin.py:965
|
||||
#: ffdl_plugin.py:974
|
||||
msgid ""
|
||||
"More than one identical book by Identifer URL or title/author(s)--can't tell"
|
||||
" which book to update/overwrite."
|
||||
msgstr "Mehr als ein identisches Buch mit der gleichen URL oder Titel/Autor(en) - es kann nicht festgestellt werden, welches Buch aktualisiert/überschrieben werden soll."
|
||||
|
||||
#: ffdl_plugin.py:976
|
||||
#: ffdl_plugin.py:985
|
||||
msgid "Update"
|
||||
msgstr "Aktualisieren"
|
||||
|
||||
#: ffdl_plugin.py:984 ffdl_plugin.py:991
|
||||
#: ffdl_plugin.py:993 ffdl_plugin.py:1000
|
||||
msgid "Change Story URL?"
|
||||
msgstr "Story-URL ändern?"
|
||||
|
||||
#: ffdl_plugin.py:992
|
||||
#: ffdl_plugin.py:1001
|
||||
msgid ""
|
||||
"<b>%s</b> by <b>%s</b> is already in your library with a different source "
|
||||
"URL:"
|
||||
msgstr "<b>%s</b> von <b>%s</b> ist bereits in ihrer Bibliothek mit einer anderen URL:"
|
||||
|
||||
#: ffdl_plugin.py:993
|
||||
#: ffdl_plugin.py:1002
|
||||
msgid "In library: <a href=\"%(liburl)s\">%(liburl)s</a>"
|
||||
msgstr "In der Bibliothek: <a href=\"%(liburl)s\">%(liburl)s</a>"
|
||||
|
||||
#: ffdl_plugin.py:994 ffdl_plugin.py:1008
|
||||
#: ffdl_plugin.py:1003 ffdl_plugin.py:1017
|
||||
msgid "New URL: <a href=\"%(newurl)s\">%(newurl)s</a>"
|
||||
msgstr "Neue URL: <a href=\"%(newurl)s\">%(newurl)s</a>"
|
||||
|
||||
#: ffdl_plugin.py:995
|
||||
#: ffdl_plugin.py:1004
|
||||
msgid "Click '<b>Yes</b>' to update/overwrite book with new URL."
|
||||
msgstr "Klicken Sie '<b>Yes</b>' um das Buch mit der neuen URL zu aktualisieren/überschreiben."
|
||||
|
||||
#: ffdl_plugin.py:996
|
||||
#: ffdl_plugin.py:1005
|
||||
msgid "Click '<b>No</b>' to skip updating/overwriting this book."
|
||||
msgstr "Klicken Sie '<b>No</b>' um das Aktualisieren/Überschreiben dieses Buches abzubrechen."
|
||||
|
||||
#: ffdl_plugin.py:998 ffdl_plugin.py:1005
|
||||
#: ffdl_plugin.py:1007 ffdl_plugin.py:1014
|
||||
msgid "Download as New Book?"
|
||||
msgstr "Als neues Buch herunterladen?"
|
||||
|
||||
#: ffdl_plugin.py:1006
|
||||
#: ffdl_plugin.py:1015
|
||||
msgid ""
|
||||
"<b>%s</b> by <b>%s</b> is already in your library with a different source "
|
||||
"URL."
|
||||
msgstr "<b>%s</b> von <b>%s</b> ist bereits in ihrer Bibliothek mit einer anderen URL:"
|
||||
|
||||
#: ffdl_plugin.py:1007
|
||||
#: ffdl_plugin.py:1016
|
||||
msgid ""
|
||||
"You chose not to update the existing book. Do you want to add a new book "
|
||||
"for this URL?"
|
||||
msgstr "Sie haben sich entschieden, das vorhandene Buch nicht zu aktualisieren. Wollen Sie ein neues Buch mit diese URL hinzufügen?"
|
||||
|
||||
#: ffdl_plugin.py:1009
|
||||
#: ffdl_plugin.py:1018
|
||||
msgid "Click '<b>Yes</b>' to a new book with new URL."
|
||||
msgstr "Klicken Sie '<b>Yes</b>' um eine neues Buch mit dieser neuen URL hinzuzufügen."
|
||||
|
||||
#: ffdl_plugin.py:1010
|
||||
#: ffdl_plugin.py:1019
|
||||
msgid "Click '<b>No</b>' to skip URL."
|
||||
msgstr "Klicken Sie '<b>No</b>' um die URL überspringen."
|
||||
|
||||
#: ffdl_plugin.py:1016
|
||||
#: ffdl_plugin.py:1025
|
||||
msgid "Update declined by user due to differing story URL(%s)"
|
||||
msgstr "Aktualisierung wurde vom Benutzer abgelehnt aufgrund unterschiedlicher Story-URL (%s)"
|
||||
|
||||
#: ffdl_plugin.py:1019
|
||||
#: ffdl_plugin.py:1028
|
||||
msgid "Different URL"
|
||||
msgstr "Andere URL"
|
||||
|
||||
#: ffdl_plugin.py:1024
|
||||
#: ffdl_plugin.py:1033
|
||||
msgid "Metadata collected."
|
||||
msgstr "Metadaten gesammelt."
|
||||
|
||||
#: ffdl_plugin.py:1040
|
||||
#: ffdl_plugin.py:1049
|
||||
msgid "Already contains %d chapters."
|
||||
msgstr "Enthält bereits %d Kapitel."
|
||||
|
||||
#: ffdl_plugin.py:1045 jobs.py:198
|
||||
#: ffdl_plugin.py:1054 jobs.py:199
|
||||
msgid ""
|
||||
"Existing epub contains %d chapters, web site only has %d. Use Overwrite to "
|
||||
"force update."
|
||||
msgstr "Das existierende EPUB hat %d Kapitel, die Web-Seite nur %d. Benutzen Sie überschreiben, um eine Aktualisierung zu erzwingen."
|
||||
|
||||
#: ffdl_plugin.py:1047
|
||||
#: ffdl_plugin.py:1056
|
||||
msgid ""
|
||||
"FFDL doesn't recognize chapters in existing epub, epub is probably from a "
|
||||
"different source. Use Overwrite to force update."
|
||||
msgstr "FFDL kann im existierenden EPUT die Kapitel nicht erkennen, das EPUB ist vermutlich aus einer anderen Quelle. Benutzen Sie überschreiben, um eine Aktualisierung zu erzwingen."
|
||||
|
||||
#: ffdl_plugin.py:1059
|
||||
#: ffdl_plugin.py:1068
|
||||
msgid "Not Overwriting, web site is not newer."
|
||||
msgstr "Keine Überschreibung, die Web-Seite ist nicht aktueller."
|
||||
|
||||
#: ffdl_plugin.py:1138
|
||||
#: ffdl_plugin.py:1148
|
||||
msgid "None of the <b>%d</b> URLs/stories given can be/need to be downloaded."
|
||||
msgstr "Keine der angegebenen <b>%d</b> URL´s kann/muss heruntergeladen werden."
|
||||
|
||||
#: ffdl_plugin.py:1139 ffdl_plugin.py:1302 ffdl_plugin.py:1332
|
||||
#: ffdl_plugin.py:1149 ffdl_plugin.py:1320 ffdl_plugin.py:1350
|
||||
msgid "See log for details."
|
||||
msgstr "Siehe Protokoll."
|
||||
|
||||
#: ffdl_plugin.py:1140
|
||||
#: ffdl_plugin.py:1150
|
||||
msgid "Proceed with updating your library(Error Column, if configured)?"
|
||||
msgstr "Fortfahren mit der Aktualisierung ihrer Bibliothek (Fehler-Spalte, wenn konfiguriert)?"
|
||||
|
||||
#: ffdl_plugin.py:1147 ffdl_plugin.py:1314
|
||||
#: ffdl_plugin.py:1157 ffdl_plugin.py:1332
|
||||
msgid "Bad"
|
||||
msgstr "Ungeeignet"
|
||||
|
||||
#: ffdl_plugin.py:1155
|
||||
#: ffdl_plugin.py:1165
|
||||
msgid "FFDL download ended"
|
||||
msgstr "FFDL herunterladen beendet"
|
||||
|
||||
#: ffdl_plugin.py:1155 ffdl_plugin.py:1357
|
||||
#: ffdl_plugin.py:1165 ffdl_plugin.py:1375
|
||||
msgid "FFDL log"
|
||||
msgstr "FFDL Protokoll"
|
||||
|
||||
#: ffdl_plugin.py:1163
|
||||
#: ffdl_plugin.py:1181
|
||||
msgid "Download FanFiction Book"
|
||||
msgstr "FanFiction-Buch herunterladen"
|
||||
|
||||
#: ffdl_plugin.py:1170
|
||||
#: ffdl_plugin.py:1188
|
||||
msgid "Starting %d FanFictionDownLoads"
|
||||
msgstr "%d FanFictionDownLoads starten"
|
||||
|
||||
#: ffdl_plugin.py:1200
|
||||
#: ffdl_plugin.py:1218
|
||||
msgid "Story Details:"
|
||||
msgstr "Story-Einzelheiten:"
|
||||
|
||||
#: ffdl_plugin.py:1203
|
||||
#: ffdl_plugin.py:1221
|
||||
msgid "Error Updating Metadata"
|
||||
msgstr "Fehler beim Herunterladen der Metadaten"
|
||||
|
||||
#: ffdl_plugin.py:1204
|
||||
#: ffdl_plugin.py:1222
|
||||
msgid ""
|
||||
"An error has occurred while FFDL was updating calibre's metadata for <a "
|
||||
"href='%s'>%s</a>."
|
||||
msgstr "Während FFDL die Calibre-Metadaten für <a href='%s'>%s</a> aktualisierte, trat ein Fehler auf."
|
||||
|
||||
#: ffdl_plugin.py:1205
|
||||
#: ffdl_plugin.py:1223
|
||||
msgid "The ebook has been updated, but the metadata has not."
|
||||
msgstr "Das eBook wurde aktualisiert, aber die Metadaten nicht."
|
||||
|
||||
#: ffdl_plugin.py:1257
|
||||
#: ffdl_plugin.py:1275
|
||||
msgid "Finished Adding/Updating %d books."
|
||||
msgstr "Hinzufügen/Aktualisierung von %d Büchern abgeschlossen."
|
||||
|
||||
#: ffdl_plugin.py:1265
|
||||
#: ffdl_plugin.py:1283
|
||||
msgid "Starting auto conversion of %d books."
|
||||
msgstr "Starte automatische Konvertierung von %d Büchern."
|
||||
|
||||
#: ffdl_plugin.py:1286
|
||||
#: ffdl_plugin.py:1304
|
||||
msgid "No Good Stories for Anthology"
|
||||
msgstr "Ungültige Story für einen Sammelband"
|
||||
|
||||
#: ffdl_plugin.py:1287
|
||||
#: ffdl_plugin.py:1305
|
||||
msgid ""
|
||||
"No good stories/updates where downloaded, Anthology creation/update aborted."
|
||||
msgstr "Ungültige Stories/Aktualisierungen wurden heruntergeladen, Sammelband-Erstellung/Aktualisierung wurde abgebrochen."
|
||||
|
||||
#: ffdl_plugin.py:1292 ffdl_plugin.py:1331
|
||||
#: ffdl_plugin.py:1310 ffdl_plugin.py:1349
|
||||
msgid "FFDL found <b>%s</b> good and <b>%s</b> bad updates."
|
||||
msgstr "FFDL hat <b>%s</b> gute und <b>%s</b> ungeeignete Updates gefunden."
|
||||
|
||||
#: ffdl_plugin.py:1299
|
||||
#: ffdl_plugin.py:1317
|
||||
msgid ""
|
||||
"Are you sure you want to continue with creating/updating this Anthology?"
|
||||
msgstr "Sind sie sicher, dass sie fortfahren wollen, diesen Sammelband zu erstellen/aktualisieren?"
|
||||
|
||||
#: ffdl_plugin.py:1300
|
||||
#: ffdl_plugin.py:1318
|
||||
msgid "Any updates that failed will <b>not</b> be included in the Anthology."
|
||||
msgstr "Jede Aktualisierung, die fehlgeschlagen ist, wird <b>nicht</b> in den Sammelband eingefügt."
|
||||
|
||||
#: ffdl_plugin.py:1301
|
||||
#: ffdl_plugin.py:1319
|
||||
msgid "However, if there's an older version, it will still be included."
|
||||
msgstr "Allerdings, wenn es eine ältere Version gibt, wird es dennoch aufgenommen werden."
|
||||
|
||||
#: ffdl_plugin.py:1304
|
||||
#: ffdl_plugin.py:1322
|
||||
msgid "Proceed with updating this anthology and your library?"
|
||||
msgstr "Mit der Aktualiserung dieses Sammelbandes und ihrer Bibliothek fortfahren?"
|
||||
|
||||
#: ffdl_plugin.py:1312
|
||||
#: ffdl_plugin.py:1330
|
||||
msgid "Good"
|
||||
msgstr "Geeignet"
|
||||
|
||||
#: ffdl_plugin.py:1333
|
||||
#: ffdl_plugin.py:1351
|
||||
msgid "Proceed with updating your library?"
|
||||
msgstr "Mit der Aktualisierung der Bibliothek fortfahren?"
|
||||
|
||||
#: ffdl_plugin.py:1357
|
||||
#: ffdl_plugin.py:1375
|
||||
msgid "FFDL download complete"
|
||||
msgstr "FFDL herunterladen abgeschlossen"
|
||||
|
||||
#: ffdl_plugin.py:1370
|
||||
#: ffdl_plugin.py:1388
|
||||
msgid "Merging %s books."
|
||||
msgstr "Zusammenführung von %s Büchern."
|
||||
|
||||
#: ffdl_plugin.py:1410
|
||||
#: ffdl_plugin.py:1428
|
||||
msgid "FFDL Adding/Updating books."
|
||||
msgstr "FFDL hinzufügen/aktualisieren der Bücher."
|
||||
|
||||
#: ffdl_plugin.py:1417
|
||||
#: ffdl_plugin.py:1435
|
||||
msgid "Updating calibre for FanFiction stories..."
|
||||
msgstr "Calibre mit FanFiction-Stories aktualisieren..."
|
||||
|
||||
#: ffdl_plugin.py:1418
|
||||
#: ffdl_plugin.py:1436
|
||||
msgid "Update calibre for FanFiction stories"
|
||||
msgstr "Calibre mit FanFiction-Stories aktualisieren."
|
||||
|
||||
#: ffdl_plugin.py:1427
|
||||
#: ffdl_plugin.py:1445
|
||||
msgid "Adding/Updating %s BAD books."
|
||||
msgstr "Hinzufügen/aktualisieren %s ungeeigneter Bücher."
|
||||
|
||||
#: ffdl_plugin.py:1436
|
||||
#: ffdl_plugin.py:1454
|
||||
msgid "Updating calibre for BAD FanFiction stories..."
|
||||
msgstr "Calibre mit ungeeigneten FanFiction-Stories aktualisieren..."
|
||||
|
||||
#: ffdl_plugin.py:1437
|
||||
#: ffdl_plugin.py:1455
|
||||
msgid "Update calibre for BAD FanFiction stories"
|
||||
msgstr "Calibre mit ungeeigneten FanFiction-Stories aktualisieren."
|
||||
|
||||
#: ffdl_plugin.py:1463
|
||||
#: ffdl_plugin.py:1481
|
||||
msgid "Adding format to book failed for some reason..."
|
||||
msgstr "Das Hinzufügen eines Formates zum Buch ist aus irgendeinem Grund fehlgeschlagen..."
|
||||
|
||||
#: ffdl_plugin.py:1466
|
||||
#: ffdl_plugin.py:1484
|
||||
msgid "Error"
|
||||
msgstr "Fehler"
|
||||
|
||||
#: ffdl_plugin.py:1739
|
||||
#: ffdl_plugin.py:1757
|
||||
msgid ""
|
||||
"You configured FanFictionDownLoader to automatically update Reading Lists, "
|
||||
"but you don't have the %s plugin installed anymore?"
|
||||
msgstr "Sie haben FFDL konfiguriert, die Leselisten automatisch zu aktualisieren, aber sie haben das %s-Plugin nicht mehr installiert?"
|
||||
|
||||
#: ffdl_plugin.py:1751
|
||||
#: ffdl_plugin.py:1769
|
||||
msgid ""
|
||||
"You configured FanFictionDownLoader to automatically update \"To Read\" "
|
||||
"Reading Lists, but you don't have any lists set?"
|
||||
msgstr "Sie haben FFDL konfiguriert, um die \"zu lesen\" Leselisten automatisch zu aktualisieren, aber sie haben keinen Listen gesetzt?"
|
||||
|
||||
#: ffdl_plugin.py:1761 ffdl_plugin.py:1779
|
||||
#: ffdl_plugin.py:1779 ffdl_plugin.py:1797
|
||||
msgid ""
|
||||
"You configured FanFictionDownLoader to automatically update Reading List "
|
||||
"'%s', but you don't have a list of that name?"
|
||||
msgstr "Sie haben FFDL konfiguriert, um die Leseliste '%s' automatisch zu aktualisieren, aber sie haben keine Liste dieses Namens?"
|
||||
|
||||
#: ffdl_plugin.py:1767
|
||||
#: ffdl_plugin.py:1785
|
||||
msgid ""
|
||||
"You configured FanFictionDownLoader to automatically update \"Send to "
|
||||
"Device\" Reading Lists, but you don't have any lists set?"
|
||||
msgstr "Sie haben FFDL konfiguriert, um die \"ans Gerät senden\"-Leselisten automatisch zu aktualisieren, aber sie haben keinen Listen gesetzt?"
|
||||
|
||||
#: ffdl_plugin.py:1888
|
||||
#: ffdl_plugin.py:1906
|
||||
msgid "No story URL found."
|
||||
msgstr "Keine URL wurde gefunden."
|
||||
|
||||
#: ffdl_plugin.py:1891
|
||||
#: ffdl_plugin.py:1909
|
||||
msgid "Not Found"
|
||||
msgstr "Nicht gefunden"
|
||||
|
||||
#: ffdl_plugin.py:1897
|
||||
#: ffdl_plugin.py:1915
|
||||
msgid "URL is not a valid story URL."
|
||||
msgstr "URL ist keine gültige Story-URL."
|
||||
|
||||
#: ffdl_plugin.py:1900
|
||||
#: ffdl_plugin.py:1918
|
||||
msgid "Bad URL"
|
||||
msgstr "Bad URL"
|
||||
|
||||
#: ffdl_plugin.py:2036 ffdl_plugin.py:2039
|
||||
#: ffdl_plugin.py:2054 ffdl_plugin.py:2057
|
||||
msgid "Anthology containing:"
|
||||
msgstr "Sammelband enthält:"
|
||||
|
||||
#: ffdl_plugin.py:2037
|
||||
#: ffdl_plugin.py:2055
|
||||
msgid "%s by %s"
|
||||
msgstr "%s von %s"
|
||||
|
||||
#: ffdl_plugin.py:2059
|
||||
#: ffdl_plugin.py:2077
|
||||
msgid " Anthology"
|
||||
msgstr "Sammelband"
|
||||
|
||||
#: ffdl_plugin.py:2096
|
||||
#: ffdl_plugin.py:2114
|
||||
msgid "(was set, removed for security)"
|
||||
msgstr "(wurde eingestellt, aus Sicherheitsgründen entfernt)"
|
||||
|
||||
@@ -1617,10 +1617,10 @@ msgstr "Erfolglos:"
|
||||
msgid "Download started..."
|
||||
msgstr "Herunterladen gestartet..."
|
||||
|
||||
#: jobs.py:192
|
||||
#: jobs.py:193
|
||||
msgid "Already contains %d chapters. Reuse as is."
|
||||
msgstr "Enthält bereits %d Kapitel. Erhalten wie es ist."
|
||||
|
||||
#: jobs.py:209
|
||||
#: jobs.py:210
|
||||
msgid "Update %s completed, added %s chapters for %s total."
|
||||
msgstr "Aktualisierung %s abgeschlossen, %s hinzugefügte Kapitel zu insgesamt %s."
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: calibre-plugins\n"
|
||||
"POT-Creation-Date: 2014-08-22 12:39+Central Daylight Time\n"
|
||||
"POT-Creation-Date: 2014-09-09 15:54+Central Daylight Time\n"
|
||||
"PO-Revision-Date: 2014-09-02 09:55+0000\n"
|
||||
"Last-Translator: Jellby <jellby@yahoo.com>\n"
|
||||
"Language-Team: Spanish (http://www.transifex.com/projects/p/calibre-plugins/language/es/)\n"
|
||||
@@ -574,7 +574,7 @@ msgstr "Género"
|
||||
msgid "Language"
|
||||
msgstr "Idioma"
|
||||
|
||||
#: config.py:928 ffdl_plugin.py:1142 ffdl_plugin.py:1306 ffdl_plugin.py:1336
|
||||
#: config.py:928 ffdl_plugin.py:1152 ffdl_plugin.py:1324 ffdl_plugin.py:1354
|
||||
msgid "Status"
|
||||
msgstr "Estado"
|
||||
|
||||
@@ -602,7 +602,7 @@ msgstr "Relaciones"
|
||||
msgid "Published"
|
||||
msgstr "Publicado"
|
||||
|
||||
#: config.py:935 ffdl_plugin.py:1419 ffdl_plugin.py:1438
|
||||
#: config.py:935 ffdl_plugin.py:1437 ffdl_plugin.py:1456
|
||||
msgid "Updated"
|
||||
msgstr "Actualizado"
|
||||
|
||||
@@ -643,7 +643,7 @@ msgid "Extra Tags"
|
||||
msgstr "Etiquetas adicionales"
|
||||
|
||||
#: config.py:945 config.py:1057 dialogs.py:804 dialogs.py:900
|
||||
#: ffdl_plugin.py:1142 ffdl_plugin.py:1306 ffdl_plugin.py:1336
|
||||
#: ffdl_plugin.py:1152 ffdl_plugin.py:1324 ffdl_plugin.py:1354
|
||||
msgid "Title"
|
||||
msgstr "Título"
|
||||
|
||||
@@ -655,8 +655,8 @@ msgstr "URL de la historia"
|
||||
msgid "Description"
|
||||
msgstr "Descripción"
|
||||
|
||||
#: config.py:948 dialogs.py:804 dialogs.py:900 ffdl_plugin.py:1142
|
||||
#: ffdl_plugin.py:1306 ffdl_plugin.py:1336
|
||||
#: config.py:948 dialogs.py:804 dialogs.py:900 ffdl_plugin.py:1152
|
||||
#: ffdl_plugin.py:1324 ffdl_plugin.py:1354
|
||||
msgid "Author"
|
||||
msgstr "Autor"
|
||||
|
||||
@@ -959,7 +959,7 @@ msgid ""
|
||||
"What sort of update to perform. May set default from plugin configuration."
|
||||
msgstr "Qué tipo de actualización se realizará. Puede definirse el valor predeterminado en la configuración del complemento."
|
||||
|
||||
#: dialogs.py:804 ffdl_plugin.py:1142 ffdl_plugin.py:1306 ffdl_plugin.py:1336
|
||||
#: dialogs.py:804 ffdl_plugin.py:1152 ffdl_plugin.py:1324 ffdl_plugin.py:1354
|
||||
msgid "Comment"
|
||||
msgstr "Comentario"
|
||||
|
||||
@@ -1216,387 +1216,387 @@ msgstr "Obtener historias para actualizar"
|
||||
msgid "Update Existing List"
|
||||
msgstr "Actualizando la lista existente"
|
||||
|
||||
#: ffdl_plugin.py:744
|
||||
#: ffdl_plugin.py:745
|
||||
msgid "Started fetching metadata for %s stories."
|
||||
msgstr "Obtención de metadatos iniciada para %s historias."
|
||||
|
||||
#: ffdl_plugin.py:750
|
||||
#: ffdl_plugin.py:751
|
||||
msgid "No valid story URLs entered."
|
||||
msgstr "No se ha introducido ningún URL de historia válido."
|
||||
|
||||
#: ffdl_plugin.py:775 ffdl_plugin.py:781
|
||||
#: ffdl_plugin.py:776 ffdl_plugin.py:782
|
||||
msgid "Reject URL?"
|
||||
msgstr "¿Rechazar URL?"
|
||||
|
||||
#: ffdl_plugin.py:782 ffdl_plugin.py:800
|
||||
#: ffdl_plugin.py:783 ffdl_plugin.py:801
|
||||
msgid "<b>%s</b> is on your Reject URL list:"
|
||||
msgstr "<b>%s</b> está en la lista de rechazos:"
|
||||
|
||||
#: ffdl_plugin.py:784
|
||||
#: ffdl_plugin.py:785
|
||||
msgid "Click '<b>Yes</b>' to Reject."
|
||||
msgstr "Pulse en «<b>Sí</b>» para rechazar."
|
||||
|
||||
#: ffdl_plugin.py:785 ffdl_plugin.py:881
|
||||
#: ffdl_plugin.py:786 ffdl_plugin.py:890
|
||||
msgid "Click '<b>No</b>' to download anyway."
|
||||
msgstr "Pulse en «<b>No</b>» para descargar de todos modos."
|
||||
|
||||
#: ffdl_plugin.py:787
|
||||
#: ffdl_plugin.py:788
|
||||
msgid "Story on Reject URLs list (%s)."
|
||||
msgstr "Historia en la lista de rechazos (%s)."
|
||||
|
||||
#: ffdl_plugin.py:790
|
||||
#: ffdl_plugin.py:791
|
||||
msgid "Rejected"
|
||||
msgstr "Rechazado"
|
||||
|
||||
#: ffdl_plugin.py:793
|
||||
#: ffdl_plugin.py:794
|
||||
msgid "Remove Reject URL?"
|
||||
msgstr "¿Eliminar URL rechazado?"
|
||||
|
||||
#: ffdl_plugin.py:799
|
||||
#: ffdl_plugin.py:800
|
||||
msgid "Remove URL from Reject List?"
|
||||
msgstr "¿Eliminar URL de la lista de rechazos?"
|
||||
|
||||
#: ffdl_plugin.py:802
|
||||
#: ffdl_plugin.py:803
|
||||
msgid "Click '<b>Yes</b>' to remove it from the list,"
|
||||
msgstr "Pulse en «<b>Sí</b>» para eliminarlo de la lista."
|
||||
|
||||
#: ffdl_plugin.py:803
|
||||
#: ffdl_plugin.py:804
|
||||
msgid "Click '<b>No</b>' to leave it on the list."
|
||||
msgstr "Pulse en «<b>No</b>» para dejarlo en la lista."
|
||||
|
||||
#: ffdl_plugin.py:820
|
||||
#: ffdl_plugin.py:821
|
||||
msgid "Cannot update non-epub format."
|
||||
msgstr "No se puede actualizar un formato que no sea EPUB."
|
||||
|
||||
#: ffdl_plugin.py:857
|
||||
#: ffdl_plugin.py:866
|
||||
msgid "Are You an Adult?"
|
||||
msgstr "¿Es usted adulto?"
|
||||
|
||||
#: ffdl_plugin.py:858
|
||||
#: ffdl_plugin.py:867
|
||||
msgid ""
|
||||
"%s requires that you be an adult. Please confirm you are an adult in your "
|
||||
"locale:"
|
||||
msgstr "%s requiere que usted sea adulto. Por favor confirme que es usted adulto en su jurisdicción:"
|
||||
|
||||
#: ffdl_plugin.py:872
|
||||
#: ffdl_plugin.py:881
|
||||
msgid "Skip Story?"
|
||||
msgstr "¿Omitir historia?"
|
||||
|
||||
#: ffdl_plugin.py:878
|
||||
#: ffdl_plugin.py:887
|
||||
msgid "Skip Anthology Story?"
|
||||
msgstr "¿Omitir historia de antología?"
|
||||
|
||||
#: ffdl_plugin.py:879
|
||||
#: ffdl_plugin.py:888
|
||||
msgid ""
|
||||
"\"<b>%s</b>\" is in series \"<b><a href=\"%s\">%s</a></b>\" that you have an"
|
||||
" anthology book for."
|
||||
msgstr "«<b>%s</b>» está en la serie «<b><a href=\"%s\">%s</a></b>», para la que tiene una antología."
|
||||
|
||||
#: ffdl_plugin.py:880
|
||||
#: ffdl_plugin.py:889
|
||||
msgid "Click '<b>Yes</b>' to Skip."
|
||||
msgstr "Pulse en «<b>Sí</b>» para omitir."
|
||||
|
||||
#: ffdl_plugin.py:883
|
||||
#: ffdl_plugin.py:892
|
||||
msgid "Story in Series Anthology(%s)."
|
||||
msgstr "Historia en antología de serie (%s)."
|
||||
|
||||
#: ffdl_plugin.py:888
|
||||
#: ffdl_plugin.py:897
|
||||
msgid "Skipped"
|
||||
msgstr "Omitida"
|
||||
|
||||
#: ffdl_plugin.py:916
|
||||
#: ffdl_plugin.py:925
|
||||
msgid "Add"
|
||||
msgstr "Añadir"
|
||||
|
||||
#: ffdl_plugin.py:929
|
||||
#: ffdl_plugin.py:938
|
||||
msgid "Meta"
|
||||
msgstr "Meta"
|
||||
|
||||
#: ffdl_plugin.py:962
|
||||
#: ffdl_plugin.py:971
|
||||
msgid "Skipping duplicate story."
|
||||
msgstr "Omitiendo historia duplicada."
|
||||
|
||||
#: ffdl_plugin.py:965
|
||||
#: ffdl_plugin.py:974
|
||||
msgid ""
|
||||
"More than one identical book by Identifer URL or title/author(s)--can't tell"
|
||||
" which book to update/overwrite."
|
||||
msgstr "Hay más de un libro idéntico según el URL identificador o el título y autor(es). No se puede saberse cuál hay que actualizar o reemplazar."
|
||||
|
||||
#: ffdl_plugin.py:976
|
||||
#: ffdl_plugin.py:985
|
||||
msgid "Update"
|
||||
msgstr "Actualizar"
|
||||
|
||||
#: ffdl_plugin.py:984 ffdl_plugin.py:991
|
||||
#: ffdl_plugin.py:993 ffdl_plugin.py:1000
|
||||
msgid "Change Story URL?"
|
||||
msgstr "¿Cambiar el URL de historia?"
|
||||
|
||||
#: ffdl_plugin.py:992
|
||||
#: ffdl_plugin.py:1001
|
||||
msgid ""
|
||||
"<b>%s</b> by <b>%s</b> is already in your library with a different source "
|
||||
"URL:"
|
||||
msgstr "<b>%s</b> por <b>%s</b> ya está en la biblioteca con un URL de origen diferente:"
|
||||
|
||||
#: ffdl_plugin.py:993
|
||||
#: ffdl_plugin.py:1002
|
||||
msgid "In library: <a href=\"%(liburl)s\">%(liburl)s</a>"
|
||||
msgstr "En la biblioteca: <a href=\"%(liburl)s\">%(liburl)s</a>"
|
||||
|
||||
#: ffdl_plugin.py:994 ffdl_plugin.py:1008
|
||||
#: ffdl_plugin.py:1003 ffdl_plugin.py:1017
|
||||
msgid "New URL: <a href=\"%(newurl)s\">%(newurl)s</a>"
|
||||
msgstr "Nuevo URL: <a href=\"%(newurl)s\">%(newurl)s</a>"
|
||||
|
||||
#: ffdl_plugin.py:995
|
||||
#: ffdl_plugin.py:1004
|
||||
msgid "Click '<b>Yes</b>' to update/overwrite book with new URL."
|
||||
msgstr "Pulse en «<b>Sí</b>» para actualizar o reemplazar el libro con el URL nuevo."
|
||||
|
||||
#: ffdl_plugin.py:996
|
||||
#: ffdl_plugin.py:1005
|
||||
msgid "Click '<b>No</b>' to skip updating/overwriting this book."
|
||||
msgstr "Pulse en «<b>No</b>» para omitir la actualización o reemplazo de este libro."
|
||||
|
||||
#: ffdl_plugin.py:998 ffdl_plugin.py:1005
|
||||
#: ffdl_plugin.py:1007 ffdl_plugin.py:1014
|
||||
msgid "Download as New Book?"
|
||||
msgstr "¿Descargar como un libro nuevo?"
|
||||
|
||||
#: ffdl_plugin.py:1006
|
||||
#: ffdl_plugin.py:1015
|
||||
msgid ""
|
||||
"<b>%s</b> by <b>%s</b> is already in your library with a different source "
|
||||
"URL."
|
||||
msgstr "<b>%s</b> por <b>%s</b> ya está en la biblioteca con un URL de origen diferente."
|
||||
|
||||
#: ffdl_plugin.py:1007
|
||||
#: ffdl_plugin.py:1016
|
||||
msgid ""
|
||||
"You chose not to update the existing book. Do you want to add a new book "
|
||||
"for this URL?"
|
||||
msgstr "Ha elegido no actualizar el libro existente. ¿Quiere añadir un nuevo libro con este URL?"
|
||||
|
||||
#: ffdl_plugin.py:1009
|
||||
#: ffdl_plugin.py:1018
|
||||
msgid "Click '<b>Yes</b>' to a new book with new URL."
|
||||
msgstr "Pulse en «<b>Sí</b>» para añadir un nuevo libro con el nuevo URL."
|
||||
|
||||
#: ffdl_plugin.py:1010
|
||||
#: ffdl_plugin.py:1019
|
||||
msgid "Click '<b>No</b>' to skip URL."
|
||||
msgstr "Pulse en «<b>No</b>» para omitir el URL."
|
||||
|
||||
#: ffdl_plugin.py:1016
|
||||
#: ffdl_plugin.py:1025
|
||||
msgid "Update declined by user due to differing story URL(%s)"
|
||||
msgstr "Actualización anulada por el usuario debido a un conflicto de URL de historia (%s)"
|
||||
|
||||
#: ffdl_plugin.py:1019
|
||||
#: ffdl_plugin.py:1028
|
||||
msgid "Different URL"
|
||||
msgstr "URL diferente"
|
||||
|
||||
#: ffdl_plugin.py:1024
|
||||
#: ffdl_plugin.py:1033
|
||||
msgid "Metadata collected."
|
||||
msgstr "Metadatos recopilados."
|
||||
|
||||
#: ffdl_plugin.py:1040
|
||||
#: ffdl_plugin.py:1049
|
||||
msgid "Already contains %d chapters."
|
||||
msgstr "Ya contiene %d capítulos."
|
||||
|
||||
#: ffdl_plugin.py:1045 jobs.py:198
|
||||
#: ffdl_plugin.py:1054 jobs.py:199
|
||||
msgid ""
|
||||
"Existing epub contains %d chapters, web site only has %d. Use Overwrite to "
|
||||
"force update."
|
||||
msgstr "El epub existente contiene %d capítulos, el sitio web sólo tiene %d. Use Reemplazar para forzar la actualización."
|
||||
|
||||
#: ffdl_plugin.py:1047
|
||||
#: ffdl_plugin.py:1056
|
||||
msgid ""
|
||||
"FFDL doesn't recognize chapters in existing epub, epub is probably from a "
|
||||
"different source. Use Overwrite to force update."
|
||||
msgstr "FFDL no encuentra capítulos en el epub existente, probablemente procede de un origen distinto. Use Reemplazar para forzar la actualización."
|
||||
|
||||
#: ffdl_plugin.py:1059
|
||||
#: ffdl_plugin.py:1068
|
||||
msgid "Not Overwriting, web site is not newer."
|
||||
msgstr "No se reemplaza, el sitio web no es más reciente."
|
||||
|
||||
#: ffdl_plugin.py:1138
|
||||
#: ffdl_plugin.py:1148
|
||||
msgid "None of the <b>%d</b> URLs/stories given can be/need to be downloaded."
|
||||
msgstr "Ninguna de las <b>%d</b> historias o URL dados pueden o necesitan descargarse."
|
||||
|
||||
#: ffdl_plugin.py:1139 ffdl_plugin.py:1302 ffdl_plugin.py:1332
|
||||
#: ffdl_plugin.py:1149 ffdl_plugin.py:1320 ffdl_plugin.py:1350
|
||||
msgid "See log for details."
|
||||
msgstr "Vea el registro para más detalles."
|
||||
|
||||
#: ffdl_plugin.py:1140
|
||||
#: ffdl_plugin.py:1150
|
||||
msgid "Proceed with updating your library(Error Column, if configured)?"
|
||||
msgstr "¿Continuar actualizando la biblioteca (columna de error, si está configurada)?"
|
||||
|
||||
#: ffdl_plugin.py:1147 ffdl_plugin.py:1314
|
||||
#: ffdl_plugin.py:1157 ffdl_plugin.py:1332
|
||||
msgid "Bad"
|
||||
msgstr "Incorrecta"
|
||||
|
||||
#: ffdl_plugin.py:1155
|
||||
#: ffdl_plugin.py:1165
|
||||
msgid "FFDL download ended"
|
||||
msgstr "Descarga de FFDL finalizada"
|
||||
|
||||
#: ffdl_plugin.py:1155 ffdl_plugin.py:1357
|
||||
#: ffdl_plugin.py:1165 ffdl_plugin.py:1375
|
||||
msgid "FFDL log"
|
||||
msgstr "Registro de FFDL"
|
||||
|
||||
#: ffdl_plugin.py:1163
|
||||
#: ffdl_plugin.py:1181
|
||||
msgid "Download FanFiction Book"
|
||||
msgstr "Descargar libro de «fanfiction»"
|
||||
|
||||
#: ffdl_plugin.py:1170
|
||||
#: ffdl_plugin.py:1188
|
||||
msgid "Starting %d FanFictionDownLoads"
|
||||
msgstr "Iniciando %d descargas de FanFictionDownLoader"
|
||||
|
||||
#: ffdl_plugin.py:1200
|
||||
#: ffdl_plugin.py:1218
|
||||
msgid "Story Details:"
|
||||
msgstr "Detalles de la historia:"
|
||||
|
||||
#: ffdl_plugin.py:1203
|
||||
#: ffdl_plugin.py:1221
|
||||
msgid "Error Updating Metadata"
|
||||
msgstr "Error actualizando metadatos"
|
||||
|
||||
#: ffdl_plugin.py:1204
|
||||
#: ffdl_plugin.py:1222
|
||||
msgid ""
|
||||
"An error has occurred while FFDL was updating calibre's metadata for <a "
|
||||
"href='%s'>%s</a>."
|
||||
msgstr "Ha ocurrido un error mientras FFDL actualizaba la base de datos de calibre para "
|
||||
|
||||
#: ffdl_plugin.py:1205
|
||||
#: ffdl_plugin.py:1223
|
||||
msgid "The ebook has been updated, but the metadata has not."
|
||||
msgstr "El libro ha sido actualizado, pero no los metadatos."
|
||||
|
||||
#: ffdl_plugin.py:1257
|
||||
#: ffdl_plugin.py:1275
|
||||
msgid "Finished Adding/Updating %d books."
|
||||
msgstr "Finalizada la adición o actualización de %d libros."
|
||||
|
||||
#: ffdl_plugin.py:1265
|
||||
#: ffdl_plugin.py:1283
|
||||
msgid "Starting auto conversion of %d books."
|
||||
msgstr "Iniciando la conversión automática de %d libros."
|
||||
|
||||
#: ffdl_plugin.py:1286
|
||||
#: ffdl_plugin.py:1304
|
||||
msgid "No Good Stories for Anthology"
|
||||
msgstr "No hay historias válidas para la antología"
|
||||
|
||||
#: ffdl_plugin.py:1287
|
||||
#: ffdl_plugin.py:1305
|
||||
msgid ""
|
||||
"No good stories/updates where downloaded, Anthology creation/update aborted."
|
||||
msgstr "No se han descargado historias o actualizaciones válidas, la creación o actualización de la antología se cancela."
|
||||
|
||||
#: ffdl_plugin.py:1292 ffdl_plugin.py:1331
|
||||
#: ffdl_plugin.py:1310 ffdl_plugin.py:1349
|
||||
msgid "FFDL found <b>%s</b> good and <b>%s</b> bad updates."
|
||||
msgstr "FFDL ha encontrado <b>%s</b> actualizaciones válidas y <b>%s</b> incorrectas."
|
||||
|
||||
#: ffdl_plugin.py:1299
|
||||
#: ffdl_plugin.py:1317
|
||||
msgid ""
|
||||
"Are you sure you want to continue with creating/updating this Anthology?"
|
||||
msgstr "¿Está seguro de querer continuar creando o actualizando la antología?"
|
||||
|
||||
#: ffdl_plugin.py:1300
|
||||
#: ffdl_plugin.py:1318
|
||||
msgid "Any updates that failed will <b>not</b> be included in the Anthology."
|
||||
msgstr "Las actualizaciones fallidas <b>no</b> se incluirán en la antología."
|
||||
|
||||
#: ffdl_plugin.py:1301
|
||||
#: ffdl_plugin.py:1319
|
||||
msgid "However, if there's an older version, it will still be included."
|
||||
msgstr "Sin embargo, si hay una versión más antigua, se incluirá."
|
||||
|
||||
#: ffdl_plugin.py:1304
|
||||
#: ffdl_plugin.py:1322
|
||||
msgid "Proceed with updating this anthology and your library?"
|
||||
msgstr "¿Continuar actualizando esta antología y la biblioteca?"
|
||||
|
||||
#: ffdl_plugin.py:1312
|
||||
#: ffdl_plugin.py:1330
|
||||
msgid "Good"
|
||||
msgstr "Válida"
|
||||
|
||||
#: ffdl_plugin.py:1333
|
||||
#: ffdl_plugin.py:1351
|
||||
msgid "Proceed with updating your library?"
|
||||
msgstr "¿Continuar actualizando la biblioteca?"
|
||||
|
||||
#: ffdl_plugin.py:1357
|
||||
#: ffdl_plugin.py:1375
|
||||
msgid "FFDL download complete"
|
||||
msgstr "Descarga de FFDL completa"
|
||||
|
||||
#: ffdl_plugin.py:1370
|
||||
#: ffdl_plugin.py:1388
|
||||
msgid "Merging %s books."
|
||||
msgstr "Combinando %s libros."
|
||||
|
||||
#: ffdl_plugin.py:1410
|
||||
#: ffdl_plugin.py:1428
|
||||
msgid "FFDL Adding/Updating books."
|
||||
msgstr "FFDL está añadiendo o actualizando libros."
|
||||
|
||||
#: ffdl_plugin.py:1417
|
||||
#: ffdl_plugin.py:1435
|
||||
msgid "Updating calibre for FanFiction stories..."
|
||||
msgstr "Actualizando calibre para las historias de «fanfiction»..."
|
||||
|
||||
#: ffdl_plugin.py:1418
|
||||
#: ffdl_plugin.py:1436
|
||||
msgid "Update calibre for FanFiction stories"
|
||||
msgstr "Actualizar calibre para las historias de «fanfiction»"
|
||||
|
||||
#: ffdl_plugin.py:1427
|
||||
#: ffdl_plugin.py:1445
|
||||
msgid "Adding/Updating %s BAD books."
|
||||
msgstr "Añadiendo o actualizando %s libros INCORRECTOS."
|
||||
|
||||
#: ffdl_plugin.py:1436
|
||||
#: ffdl_plugin.py:1454
|
||||
msgid "Updating calibre for BAD FanFiction stories..."
|
||||
msgstr "Actualizando calibre para las historias de «fanfiction» INCORRECTAS..."
|
||||
|
||||
#: ffdl_plugin.py:1437
|
||||
#: ffdl_plugin.py:1455
|
||||
msgid "Update calibre for BAD FanFiction stories"
|
||||
msgstr "Actualizar calibre para las historias de «fanfiction» INCORRECTAS"
|
||||
|
||||
#: ffdl_plugin.py:1463
|
||||
#: ffdl_plugin.py:1481
|
||||
msgid "Adding format to book failed for some reason..."
|
||||
msgstr "Hubo un fallo al añadir un formato al libro por algún motivo..."
|
||||
|
||||
#: ffdl_plugin.py:1466
|
||||
#: ffdl_plugin.py:1484
|
||||
msgid "Error"
|
||||
msgstr "Error"
|
||||
|
||||
#: ffdl_plugin.py:1739
|
||||
#: ffdl_plugin.py:1757
|
||||
msgid ""
|
||||
"You configured FanFictionDownLoader to automatically update Reading Lists, "
|
||||
"but you don't have the %s plugin installed anymore?"
|
||||
msgstr "Ha configurado FanFictionDownLoader para actualizar automáticamente las listas de lectura, pero ya no tiene instalado el complemento %s"
|
||||
|
||||
#: ffdl_plugin.py:1751
|
||||
#: ffdl_plugin.py:1769
|
||||
msgid ""
|
||||
"You configured FanFictionDownLoader to automatically update \"To Read\" "
|
||||
"Reading Lists, but you don't have any lists set?"
|
||||
msgstr "Ha configurado FanFictionDownLoader para actualizar automáticamente las listas «Para leer», pero no tiene ninguna lista configurada."
|
||||
|
||||
#: ffdl_plugin.py:1761 ffdl_plugin.py:1779
|
||||
#: ffdl_plugin.py:1779 ffdl_plugin.py:1797
|
||||
msgid ""
|
||||
"You configured FanFictionDownLoader to automatically update Reading List "
|
||||
"'%s', but you don't have a list of that name?"
|
||||
msgstr "Ha configurado FanFictionDownLoader para actualizar automáticamente las listas «%s», pero no tiene ninguna lista con ese nombre."
|
||||
|
||||
#: ffdl_plugin.py:1767
|
||||
#: ffdl_plugin.py:1785
|
||||
msgid ""
|
||||
"You configured FanFictionDownLoader to automatically update \"Send to "
|
||||
"Device\" Reading Lists, but you don't have any lists set?"
|
||||
msgstr "Ha configurado FanFictionDownLoader para actualizar automáticamente las listas de «Enviar a dispositivo», pero no tiene ninguna lista configurada."
|
||||
|
||||
#: ffdl_plugin.py:1888
|
||||
#: ffdl_plugin.py:1906
|
||||
msgid "No story URL found."
|
||||
msgstr "No se ha encontrado ningún URL de historia."
|
||||
|
||||
#: ffdl_plugin.py:1891
|
||||
#: ffdl_plugin.py:1909
|
||||
msgid "Not Found"
|
||||
msgstr "No se ha encontrado"
|
||||
|
||||
#: ffdl_plugin.py:1897
|
||||
#: ffdl_plugin.py:1915
|
||||
msgid "URL is not a valid story URL."
|
||||
msgstr "El URL no es un URL de historia válido."
|
||||
|
||||
#: ffdl_plugin.py:1900
|
||||
#: ffdl_plugin.py:1918
|
||||
msgid "Bad URL"
|
||||
msgstr "El URL es incorrecto"
|
||||
|
||||
#: ffdl_plugin.py:2036 ffdl_plugin.py:2039
|
||||
#: ffdl_plugin.py:2054 ffdl_plugin.py:2057
|
||||
msgid "Anthology containing:"
|
||||
msgstr "La antología contiene:"
|
||||
|
||||
#: ffdl_plugin.py:2037
|
||||
#: ffdl_plugin.py:2055
|
||||
msgid "%s by %s"
|
||||
msgstr "%s por %s"
|
||||
|
||||
#: ffdl_plugin.py:2059
|
||||
#: ffdl_plugin.py:2077
|
||||
msgid " Anthology"
|
||||
msgstr "Antología"
|
||||
|
||||
#: ffdl_plugin.py:2096
|
||||
#: ffdl_plugin.py:2114
|
||||
msgid "(was set, removed for security)"
|
||||
msgstr "(estaba activado, eliminado por seguridad)"
|
||||
|
||||
@@ -1616,10 +1616,10 @@ msgstr "Sin éxito:"
|
||||
msgid "Download started..."
|
||||
msgstr "Descarga comenzada..."
|
||||
|
||||
#: jobs.py:192
|
||||
#: jobs.py:193
|
||||
msgid "Already contains %d chapters. Reuse as is."
|
||||
msgstr "Ya contiene %d capítulos. Volver a usar tal cual."
|
||||
|
||||
#: jobs.py:209
|
||||
#: jobs.py:210
|
||||
msgid "Update %s completed, added %s chapters for %s total."
|
||||
msgstr "Completada la actualización de %s, se añadieron %s capítulos para un total de %s."
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: calibre-plugins\n"
|
||||
"POT-Creation-Date: 2014-08-22 12:39+Central Daylight Time\n"
|
||||
"POT-Creation-Date: 2014-09-09 15:54+Central Daylight Time\n"
|
||||
"PO-Revision-Date: 2014-09-04 12:30+0000\n"
|
||||
"Last-Translator: Ptitprince <leporello1791@gmail.com>\n"
|
||||
"Language-Team: French (http://www.transifex.com/projects/p/calibre-plugins/language/fr/)\n"
|
||||
@@ -573,7 +573,7 @@ msgstr "Genre"
|
||||
msgid "Language"
|
||||
msgstr "Langue"
|
||||
|
||||
#: config.py:928 ffdl_plugin.py:1142 ffdl_plugin.py:1306 ffdl_plugin.py:1336
|
||||
#: config.py:928 ffdl_plugin.py:1152 ffdl_plugin.py:1324 ffdl_plugin.py:1354
|
||||
msgid "Status"
|
||||
msgstr "Statut"
|
||||
|
||||
@@ -601,7 +601,7 @@ msgstr "Relations"
|
||||
msgid "Published"
|
||||
msgstr "Publié"
|
||||
|
||||
#: config.py:935 ffdl_plugin.py:1419 ffdl_plugin.py:1438
|
||||
#: config.py:935 ffdl_plugin.py:1437 ffdl_plugin.py:1456
|
||||
msgid "Updated"
|
||||
msgstr "Mis à jour"
|
||||
|
||||
@@ -642,7 +642,7 @@ msgid "Extra Tags"
|
||||
msgstr "Etiquettes additionnelles"
|
||||
|
||||
#: config.py:945 config.py:1057 dialogs.py:804 dialogs.py:900
|
||||
#: ffdl_plugin.py:1142 ffdl_plugin.py:1306 ffdl_plugin.py:1336
|
||||
#: ffdl_plugin.py:1152 ffdl_plugin.py:1324 ffdl_plugin.py:1354
|
||||
msgid "Title"
|
||||
msgstr "Titre"
|
||||
|
||||
@@ -654,8 +654,8 @@ msgstr "URL du récit"
|
||||
msgid "Description"
|
||||
msgstr "Description"
|
||||
|
||||
#: config.py:948 dialogs.py:804 dialogs.py:900 ffdl_plugin.py:1142
|
||||
#: ffdl_plugin.py:1306 ffdl_plugin.py:1336
|
||||
#: config.py:948 dialogs.py:804 dialogs.py:900 ffdl_plugin.py:1152
|
||||
#: ffdl_plugin.py:1324 ffdl_plugin.py:1354
|
||||
msgid "Author"
|
||||
msgstr "Auteur"
|
||||
|
||||
@@ -958,7 +958,7 @@ msgid ""
|
||||
"What sort of update to perform. May set default from plugin configuration."
|
||||
msgstr "Quel type de mise à jour à effectuer. Peut être réglé par défaut dans la configuration du greffon."
|
||||
|
||||
#: dialogs.py:804 ffdl_plugin.py:1142 ffdl_plugin.py:1306 ffdl_plugin.py:1336
|
||||
#: dialogs.py:804 ffdl_plugin.py:1152 ffdl_plugin.py:1324 ffdl_plugin.py:1354
|
||||
msgid "Comment"
|
||||
msgstr "Commentaire"
|
||||
|
||||
@@ -1215,387 +1215,387 @@ msgstr "Prend des récits pour la mise à jour"
|
||||
msgid "Update Existing List"
|
||||
msgstr "Mettre à jour la liste existante"
|
||||
|
||||
#: ffdl_plugin.py:744
|
||||
#: ffdl_plugin.py:745
|
||||
msgid "Started fetching metadata for %s stories."
|
||||
msgstr "A démarrré la recherche des métadonnées pour les récits %s."
|
||||
|
||||
#: ffdl_plugin.py:750
|
||||
#: ffdl_plugin.py:751
|
||||
msgid "No valid story URLs entered."
|
||||
msgstr "Pas d'URLs de récit valides entrées."
|
||||
|
||||
#: ffdl_plugin.py:775 ffdl_plugin.py:781
|
||||
#: ffdl_plugin.py:776 ffdl_plugin.py:782
|
||||
msgid "Reject URL?"
|
||||
msgstr "Rejeter l'URL ?"
|
||||
|
||||
#: ffdl_plugin.py:782 ffdl_plugin.py:800
|
||||
#: ffdl_plugin.py:783 ffdl_plugin.py:801
|
||||
msgid "<b>%s</b> is on your Reject URL list:"
|
||||
msgstr "<b>%s</b> est sur votre liste d'URL Rejetées :"
|
||||
|
||||
#: ffdl_plugin.py:784
|
||||
#: ffdl_plugin.py:785
|
||||
msgid "Click '<b>Yes</b>' to Reject."
|
||||
msgstr "Cliquer '<b>Oui</b>' pour rejeter."
|
||||
|
||||
#: ffdl_plugin.py:785 ffdl_plugin.py:881
|
||||
#: ffdl_plugin.py:786 ffdl_plugin.py:890
|
||||
msgid "Click '<b>No</b>' to download anyway."
|
||||
msgstr "Cliquer '<b>Non</b>' pour télécharger quand même."
|
||||
|
||||
#: ffdl_plugin.py:787
|
||||
#: ffdl_plugin.py:788
|
||||
msgid "Story on Reject URLs list (%s)."
|
||||
msgstr "Récit sur la liste des URLs rejetées (%s)"
|
||||
|
||||
#: ffdl_plugin.py:790
|
||||
#: ffdl_plugin.py:791
|
||||
msgid "Rejected"
|
||||
msgstr "Rejeté"
|
||||
|
||||
#: ffdl_plugin.py:793
|
||||
#: ffdl_plugin.py:794
|
||||
msgid "Remove Reject URL?"
|
||||
msgstr "Retirer l'URL rejetée ?"
|
||||
|
||||
#: ffdl_plugin.py:799
|
||||
#: ffdl_plugin.py:800
|
||||
msgid "Remove URL from Reject List?"
|
||||
msgstr "Retirer l'URL de la Liste de Rejets ?"
|
||||
|
||||
#: ffdl_plugin.py:802
|
||||
#: ffdl_plugin.py:803
|
||||
msgid "Click '<b>Yes</b>' to remove it from the list,"
|
||||
msgstr "Cliquer '<b>Oui</b>' pour retirer de la liste,"
|
||||
|
||||
#: ffdl_plugin.py:803
|
||||
#: ffdl_plugin.py:804
|
||||
msgid "Click '<b>No</b>' to leave it on the list."
|
||||
msgstr "Cliquer '<b>Non</b>' pour laisser dans la liste."
|
||||
|
||||
#: ffdl_plugin.py:820
|
||||
#: ffdl_plugin.py:821
|
||||
msgid "Cannot update non-epub format."
|
||||
msgstr "Ne peut mettre à jour un format non-ePub."
|
||||
|
||||
#: ffdl_plugin.py:857
|
||||
#: ffdl_plugin.py:866
|
||||
msgid "Are You an Adult?"
|
||||
msgstr "Êtes-vous un adulte ?"
|
||||
|
||||
#: ffdl_plugin.py:858
|
||||
#: ffdl_plugin.py:867
|
||||
msgid ""
|
||||
"%s requires that you be an adult. Please confirm you are an adult in your "
|
||||
"locale:"
|
||||
msgstr "%s requiert que vous soyez un adulte, Veuillez confirmer que vous êtes un adulte dans votre situation :"
|
||||
|
||||
#: ffdl_plugin.py:872
|
||||
#: ffdl_plugin.py:881
|
||||
msgid "Skip Story?"
|
||||
msgstr "Ignorer le récit ?"
|
||||
|
||||
#: ffdl_plugin.py:878
|
||||
#: ffdl_plugin.py:887
|
||||
msgid "Skip Anthology Story?"
|
||||
msgstr "Ignorer le récit d'Anthologie ?"
|
||||
|
||||
#: ffdl_plugin.py:879
|
||||
#: ffdl_plugin.py:888
|
||||
msgid ""
|
||||
"\"<b>%s</b>\" is in series \"<b><a href=\"%s\">%s</a></b>\" that you have an"
|
||||
" anthology book for."
|
||||
msgstr "\"<b>%s</b>\" est dans la série \"<b><a href=\"%s\">%s</a></b>\" dont vous avez un livre d'anthologie."
|
||||
|
||||
#: ffdl_plugin.py:880
|
||||
#: ffdl_plugin.py:889
|
||||
msgid "Click '<b>Yes</b>' to Skip."
|
||||
msgstr "Cliquer '<b>Oui</b>' pour ignorer."
|
||||
|
||||
#: ffdl_plugin.py:883
|
||||
#: ffdl_plugin.py:892
|
||||
msgid "Story in Series Anthology(%s)."
|
||||
msgstr "Récit dans la série Anthologie(%s)."
|
||||
|
||||
#: ffdl_plugin.py:888
|
||||
#: ffdl_plugin.py:897
|
||||
msgid "Skipped"
|
||||
msgstr "Ignoré"
|
||||
|
||||
#: ffdl_plugin.py:916
|
||||
#: ffdl_plugin.py:925
|
||||
msgid "Add"
|
||||
msgstr "Ajouter"
|
||||
|
||||
#: ffdl_plugin.py:929
|
||||
#: ffdl_plugin.py:938
|
||||
msgid "Meta"
|
||||
msgstr "Meta"
|
||||
|
||||
#: ffdl_plugin.py:962
|
||||
#: ffdl_plugin.py:971
|
||||
msgid "Skipping duplicate story."
|
||||
msgstr "Ignore les récits en doublons."
|
||||
|
||||
#: ffdl_plugin.py:965
|
||||
#: ffdl_plugin.py:974
|
||||
msgid ""
|
||||
"More than one identical book by Identifer URL or title/author(s)--can't tell"
|
||||
" which book to update/overwrite."
|
||||
msgstr "Plus d'un livre identique par Identifiant URL ou titre/auteur(s)--ne peut pas dire quel livre mettre à jour/écraser."
|
||||
|
||||
#: ffdl_plugin.py:976
|
||||
#: ffdl_plugin.py:985
|
||||
msgid "Update"
|
||||
msgstr "Mettre à jour"
|
||||
|
||||
#: ffdl_plugin.py:984 ffdl_plugin.py:991
|
||||
#: ffdl_plugin.py:993 ffdl_plugin.py:1000
|
||||
msgid "Change Story URL?"
|
||||
msgstr "Changer l'URL de Récit ?"
|
||||
|
||||
#: ffdl_plugin.py:992
|
||||
#: ffdl_plugin.py:1001
|
||||
msgid ""
|
||||
"<b>%s</b> by <b>%s</b> is already in your library with a different source "
|
||||
"URL:"
|
||||
msgstr "<b>%s</b> par <b>%s</b> est déjà dans votre bibliothèque avec une source URL différente :"
|
||||
|
||||
#: ffdl_plugin.py:993
|
||||
#: ffdl_plugin.py:1002
|
||||
msgid "In library: <a href=\"%(liburl)s\">%(liburl)s</a>"
|
||||
msgstr "Dans la bibliothèque : <a href=\"%(liburl)s\">%(liburl)s</a>"
|
||||
|
||||
#: ffdl_plugin.py:994 ffdl_plugin.py:1008
|
||||
#: ffdl_plugin.py:1003 ffdl_plugin.py:1017
|
||||
msgid "New URL: <a href=\"%(newurl)s\">%(newurl)s</a>"
|
||||
msgstr "Nouvelle URL : <a href=\"%(newurl)s\">%(newurl)s</a>"
|
||||
|
||||
#: ffdl_plugin.py:995
|
||||
#: ffdl_plugin.py:1004
|
||||
msgid "Click '<b>Yes</b>' to update/overwrite book with new URL."
|
||||
msgstr "Cliquer '<b>Oui</b>' pour mettre à jour/écraser le livre avec la nouvelle URL."
|
||||
|
||||
#: ffdl_plugin.py:996
|
||||
#: ffdl_plugin.py:1005
|
||||
msgid "Click '<b>No</b>' to skip updating/overwriting this book."
|
||||
msgstr "Cliquer '<b>Non</b>' pour ignorer la mise à jour/l'écrasement de ce livre."
|
||||
|
||||
#: ffdl_plugin.py:998 ffdl_plugin.py:1005
|
||||
#: ffdl_plugin.py:1007 ffdl_plugin.py:1014
|
||||
msgid "Download as New Book?"
|
||||
msgstr "Télécharger comme un Nouveau Livre ?"
|
||||
|
||||
#: ffdl_plugin.py:1006
|
||||
#: ffdl_plugin.py:1015
|
||||
msgid ""
|
||||
"<b>%s</b> by <b>%s</b> is already in your library with a different source "
|
||||
"URL."
|
||||
msgstr "<b>%s</b> par <b>%s</b> est déjà dans votre bibliothèque avec une source URL différente."
|
||||
|
||||
#: ffdl_plugin.py:1007
|
||||
#: ffdl_plugin.py:1016
|
||||
msgid ""
|
||||
"You chose not to update the existing book. Do you want to add a new book "
|
||||
"for this URL?"
|
||||
msgstr "Vous choisissez de ne pas mettre à jour le livre existant. Voulez-vous ajouter un nouveau livre pour cette URL ?"
|
||||
|
||||
#: ffdl_plugin.py:1009
|
||||
#: ffdl_plugin.py:1018
|
||||
msgid "Click '<b>Yes</b>' to a new book with new URL."
|
||||
msgstr "Cliquer '<b>Oui</b>' pour un nouveau livre avec une nouvelle URL."
|
||||
|
||||
#: ffdl_plugin.py:1010
|
||||
#: ffdl_plugin.py:1019
|
||||
msgid "Click '<b>No</b>' to skip URL."
|
||||
msgstr "Cliquer '<b>Non</b>' pour ignorer l'URL."
|
||||
|
||||
#: ffdl_plugin.py:1016
|
||||
#: ffdl_plugin.py:1025
|
||||
msgid "Update declined by user due to differing story URL(%s)"
|
||||
msgstr "Mise à jour déclinée par l'utilisateur en raison d'une URL(%s) de récit différente"
|
||||
|
||||
#: ffdl_plugin.py:1019
|
||||
#: ffdl_plugin.py:1028
|
||||
msgid "Different URL"
|
||||
msgstr "URL différente"
|
||||
|
||||
#: ffdl_plugin.py:1024
|
||||
#: ffdl_plugin.py:1033
|
||||
msgid "Metadata collected."
|
||||
msgstr "Métadonnées collectées"
|
||||
|
||||
#: ffdl_plugin.py:1040
|
||||
#: ffdl_plugin.py:1049
|
||||
msgid "Already contains %d chapters."
|
||||
msgstr "Contient déjà des chapitres %d."
|
||||
|
||||
#: ffdl_plugin.py:1045 jobs.py:198
|
||||
#: ffdl_plugin.py:1054 jobs.py:199
|
||||
msgid ""
|
||||
"Existing epub contains %d chapters, web site only has %d. Use Overwrite to "
|
||||
"force update."
|
||||
msgstr "L'ePub existant contient des chapitres %d, le site web a seulement %d. Utiliser Ecraser pour forcer la mise à jour."
|
||||
|
||||
#: ffdl_plugin.py:1047
|
||||
#: ffdl_plugin.py:1056
|
||||
msgid ""
|
||||
"FFDL doesn't recognize chapters in existing epub, epub is probably from a "
|
||||
"different source. Use Overwrite to force update."
|
||||
msgstr "FFDL ne reconnait pas les chapitres dans l'ePub existant, l'ePub est probablement d'une source différente. Utiliser Ecraser pour forcer la mise à jour."
|
||||
|
||||
#: ffdl_plugin.py:1059
|
||||
#: ffdl_plugin.py:1068
|
||||
msgid "Not Overwriting, web site is not newer."
|
||||
msgstr "Ne pas écraser, le site web n'est pas plus récent."
|
||||
|
||||
#: ffdl_plugin.py:1138
|
||||
#: ffdl_plugin.py:1148
|
||||
msgid "None of the <b>%d</b> URLs/stories given can be/need to be downloaded."
|
||||
msgstr "Aucun des URLs/récits <b>%d</b> donnés ne peut être/n'a besoin d'être téléchargé."
|
||||
|
||||
#: ffdl_plugin.py:1139 ffdl_plugin.py:1302 ffdl_plugin.py:1332
|
||||
#: ffdl_plugin.py:1149 ffdl_plugin.py:1320 ffdl_plugin.py:1350
|
||||
msgid "See log for details."
|
||||
msgstr "Voir le journal pour les détails."
|
||||
|
||||
#: ffdl_plugin.py:1140
|
||||
#: ffdl_plugin.py:1150
|
||||
msgid "Proceed with updating your library(Error Column, if configured)?"
|
||||
msgstr "Procéder à la mise à jour de votre bibliothèque (Erreur de Colonne, si configuré) ?"
|
||||
|
||||
#: ffdl_plugin.py:1147 ffdl_plugin.py:1314
|
||||
#: ffdl_plugin.py:1157 ffdl_plugin.py:1332
|
||||
msgid "Bad"
|
||||
msgstr "Mauvais(e)"
|
||||
|
||||
#: ffdl_plugin.py:1155
|
||||
#: ffdl_plugin.py:1165
|
||||
msgid "FFDL download ended"
|
||||
msgstr "Téléchargement FFDL effectué"
|
||||
|
||||
#: ffdl_plugin.py:1155 ffdl_plugin.py:1357
|
||||
#: ffdl_plugin.py:1165 ffdl_plugin.py:1375
|
||||
msgid "FFDL log"
|
||||
msgstr "Journal de FFDL"
|
||||
|
||||
#: ffdl_plugin.py:1163
|
||||
#: ffdl_plugin.py:1181
|
||||
msgid "Download FanFiction Book"
|
||||
msgstr "Télécharger des livres FanFiction"
|
||||
|
||||
#: ffdl_plugin.py:1170
|
||||
#: ffdl_plugin.py:1188
|
||||
msgid "Starting %d FanFictionDownLoads"
|
||||
msgstr "Démarrage FanFictionDownloads %d"
|
||||
|
||||
#: ffdl_plugin.py:1200
|
||||
#: ffdl_plugin.py:1218
|
||||
msgid "Story Details:"
|
||||
msgstr "Détails du récit : "
|
||||
|
||||
#: ffdl_plugin.py:1203
|
||||
#: ffdl_plugin.py:1221
|
||||
msgid "Error Updating Metadata"
|
||||
msgstr "Erreur de mise à jour des Métadonnées"
|
||||
|
||||
#: ffdl_plugin.py:1204
|
||||
#: ffdl_plugin.py:1222
|
||||
msgid ""
|
||||
"An error has occurred while FFDL was updating calibre's metadata for <a "
|
||||
"href='%s'>%s</a>."
|
||||
msgstr "Une erreur s'est produite pendant que FFDL était occupé à mettre à jour les métadonnes de calibre pour <a href='%s'>%s</a>."
|
||||
|
||||
#: ffdl_plugin.py:1205
|
||||
#: ffdl_plugin.py:1223
|
||||
msgid "The ebook has been updated, but the metadata has not."
|
||||
msgstr "Le livre a été mis à jour, mais les métadonnées ne l'ont pas été."
|
||||
|
||||
#: ffdl_plugin.py:1257
|
||||
#: ffdl_plugin.py:1275
|
||||
msgid "Finished Adding/Updating %d books."
|
||||
msgstr "Ajout/mise à jour des livres %d terminé."
|
||||
|
||||
#: ffdl_plugin.py:1265
|
||||
#: ffdl_plugin.py:1283
|
||||
msgid "Starting auto conversion of %d books."
|
||||
msgstr "Démarre l'auto conversion des livres %d."
|
||||
|
||||
#: ffdl_plugin.py:1286
|
||||
#: ffdl_plugin.py:1304
|
||||
msgid "No Good Stories for Anthology"
|
||||
msgstr "Pas de bons récits pour l'Anthologie"
|
||||
|
||||
#: ffdl_plugin.py:1287
|
||||
#: ffdl_plugin.py:1305
|
||||
msgid ""
|
||||
"No good stories/updates where downloaded, Anthology creation/update aborted."
|
||||
msgstr "Aucun bon récit/mise à jour n'a été téléchargé, la création/mise à jour de l'Anthologie a été abandonnée."
|
||||
|
||||
#: ffdl_plugin.py:1292 ffdl_plugin.py:1331
|
||||
#: ffdl_plugin.py:1310 ffdl_plugin.py:1349
|
||||
msgid "FFDL found <b>%s</b> good and <b>%s</b> bad updates."
|
||||
msgstr "FFDL trouve la mise à jour <b>%s</b> bonne et <b>%s</b> mauvaise"
|
||||
|
||||
#: ffdl_plugin.py:1299
|
||||
#: ffdl_plugin.py:1317
|
||||
msgid ""
|
||||
"Are you sure you want to continue with creating/updating this Anthology?"
|
||||
msgstr "Etes-vous certain(e) de vouloir continuer avec la création/mise à jour de cette Anthologie ?"
|
||||
|
||||
#: ffdl_plugin.py:1300
|
||||
#: ffdl_plugin.py:1318
|
||||
msgid "Any updates that failed will <b>not</b> be included in the Anthology."
|
||||
msgstr "Toute mise à jour qui échoue ne sera <b>pas</b> incluse dans l'Anthologie"
|
||||
|
||||
#: ffdl_plugin.py:1301
|
||||
#: ffdl_plugin.py:1319
|
||||
msgid "However, if there's an older version, it will still be included."
|
||||
msgstr "Cependant, s'il y a une version plus ancienne, celle-ci sera quand même incluse."
|
||||
|
||||
#: ffdl_plugin.py:1304
|
||||
#: ffdl_plugin.py:1322
|
||||
msgid "Proceed with updating this anthology and your library?"
|
||||
msgstr "Procéder à la mise à jour de cette anthologie et de votre librairie ?"
|
||||
|
||||
#: ffdl_plugin.py:1312
|
||||
#: ffdl_plugin.py:1330
|
||||
msgid "Good"
|
||||
msgstr "Bon"
|
||||
|
||||
#: ffdl_plugin.py:1333
|
||||
#: ffdl_plugin.py:1351
|
||||
msgid "Proceed with updating your library?"
|
||||
msgstr "Procéder à la mise à jour de votre bibliothèque ?"
|
||||
|
||||
#: ffdl_plugin.py:1357
|
||||
#: ffdl_plugin.py:1375
|
||||
msgid "FFDL download complete"
|
||||
msgstr "Téléchargement FFDL effectué"
|
||||
|
||||
#: ffdl_plugin.py:1370
|
||||
#: ffdl_plugin.py:1388
|
||||
msgid "Merging %s books."
|
||||
msgstr "Fusionnement des livres %s."
|
||||
|
||||
#: ffdl_plugin.py:1410
|
||||
#: ffdl_plugin.py:1428
|
||||
msgid "FFDL Adding/Updating books."
|
||||
msgstr "FFDL ajoute/met à jour des livres."
|
||||
|
||||
#: ffdl_plugin.py:1417
|
||||
#: ffdl_plugin.py:1435
|
||||
msgid "Updating calibre for FanFiction stories..."
|
||||
msgstr "Met à jour calibre depuis des récits FanFiction..."
|
||||
|
||||
#: ffdl_plugin.py:1418
|
||||
#: ffdl_plugin.py:1436
|
||||
msgid "Update calibre for FanFiction stories"
|
||||
msgstr "Mettre à jour calibre depuis des récits FanFiction"
|
||||
|
||||
#: ffdl_plugin.py:1427
|
||||
#: ffdl_plugin.py:1445
|
||||
msgid "Adding/Updating %s BAD books."
|
||||
msgstr "Ajoute/met à jour %s de MAUVAIS livres"
|
||||
|
||||
#: ffdl_plugin.py:1436
|
||||
#: ffdl_plugin.py:1454
|
||||
msgid "Updating calibre for BAD FanFiction stories..."
|
||||
msgstr "Met à jour calibre depuis de MAUVAIS récits Fanfiction..."
|
||||
|
||||
#: ffdl_plugin.py:1437
|
||||
#: ffdl_plugin.py:1455
|
||||
msgid "Update calibre for BAD FanFiction stories"
|
||||
msgstr "Mettre à jour calibre depuis de MAUVAIS récits FanFiction"
|
||||
|
||||
#: ffdl_plugin.py:1463
|
||||
#: ffdl_plugin.py:1481
|
||||
msgid "Adding format to book failed for some reason..."
|
||||
msgstr "Le format ajouté au livre a échoué pour une raison quelconque..."
|
||||
|
||||
#: ffdl_plugin.py:1466
|
||||
#: ffdl_plugin.py:1484
|
||||
msgid "Error"
|
||||
msgstr "Erreur"
|
||||
|
||||
#: ffdl_plugin.py:1739
|
||||
#: ffdl_plugin.py:1757
|
||||
msgid ""
|
||||
"You configured FanFictionDownLoader to automatically update Reading Lists, "
|
||||
"but you don't have the %s plugin installed anymore?"
|
||||
msgstr "Vous avec configuré FanFictionDownloader pour mettre à jour automatiquent les Listes de Lecture, mais vous n'avez pas le greffon %s installé ?"
|
||||
|
||||
#: ffdl_plugin.py:1751
|
||||
#: ffdl_plugin.py:1769
|
||||
msgid ""
|
||||
"You configured FanFictionDownLoader to automatically update \"To Read\" "
|
||||
"Reading Lists, but you don't have any lists set?"
|
||||
msgstr "Vous avec configuré FanFictionDownloader pour mettre à jour automatiquent les Listes de Lecture \"A lire\", mais vous n'avez paramétré aucunes listes ?"
|
||||
|
||||
#: ffdl_plugin.py:1761 ffdl_plugin.py:1779
|
||||
#: ffdl_plugin.py:1779 ffdl_plugin.py:1797
|
||||
msgid ""
|
||||
"You configured FanFictionDownLoader to automatically update Reading List "
|
||||
"'%s', but you don't have a list of that name?"
|
||||
msgstr "Vous avec configuré FanFictionDownloader pour mettre à jour automatiquent la Liste de Lecture '%s', mais vous n'avez pas de liste à ce nom ?"
|
||||
|
||||
#: ffdl_plugin.py:1767
|
||||
#: ffdl_plugin.py:1785
|
||||
msgid ""
|
||||
"You configured FanFictionDownLoader to automatically update \"Send to "
|
||||
"Device\" Reading Lists, but you don't have any lists set?"
|
||||
msgstr "Vous avec configuré FanFictionDownloader pour mette à jour automatiquement les Listes de Lecture \"Envoyé vers le dispositif\", mais vous n'avez paramétré aucune liste ?"
|
||||
|
||||
#: ffdl_plugin.py:1888
|
||||
#: ffdl_plugin.py:1906
|
||||
msgid "No story URL found."
|
||||
msgstr "Pas d'URL de récit trouvée."
|
||||
|
||||
#: ffdl_plugin.py:1891
|
||||
#: ffdl_plugin.py:1909
|
||||
msgid "Not Found"
|
||||
msgstr "Non trouvé(e)"
|
||||
|
||||
#: ffdl_plugin.py:1897
|
||||
#: ffdl_plugin.py:1915
|
||||
msgid "URL is not a valid story URL."
|
||||
msgstr "L'URL n'est pas une URL de récit valide."
|
||||
|
||||
#: ffdl_plugin.py:1900
|
||||
#: ffdl_plugin.py:1918
|
||||
msgid "Bad URL"
|
||||
msgstr "Mauvaise URL"
|
||||
|
||||
#: ffdl_plugin.py:2036 ffdl_plugin.py:2039
|
||||
#: ffdl_plugin.py:2054 ffdl_plugin.py:2057
|
||||
msgid "Anthology containing:"
|
||||
msgstr "Anthologie contenant : "
|
||||
|
||||
#: ffdl_plugin.py:2037
|
||||
#: ffdl_plugin.py:2055
|
||||
msgid "%s by %s"
|
||||
msgstr "%s par %s"
|
||||
|
||||
#: ffdl_plugin.py:2059
|
||||
#: ffdl_plugin.py:2077
|
||||
msgid " Anthology"
|
||||
msgstr "Anthologie"
|
||||
|
||||
#: ffdl_plugin.py:2096
|
||||
#: ffdl_plugin.py:2114
|
||||
msgid "(was set, removed for security)"
|
||||
msgstr "(a été paramétré, retiré par sécurité)"
|
||||
|
||||
@@ -1615,10 +1615,10 @@ msgstr "Échoué :"
|
||||
msgid "Download started..."
|
||||
msgstr "Téléchargement démarré..."
|
||||
|
||||
#: jobs.py:192
|
||||
#: jobs.py:193
|
||||
msgid "Already contains %d chapters. Reuse as is."
|
||||
msgstr "Contient déjà des chapitres %d. Réutilisez tel quel."
|
||||
|
||||
#: jobs.py:209
|
||||
#: jobs.py:210
|
||||
msgid "Update %s completed, added %s chapters for %s total."
|
||||
msgstr "Mise à jour %s terminée, ajouté %s chapitres pour %s au total."
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: calibre-plugins\n"
|
||||
"POT-Creation-Date: 2014-08-22 12:39+Central Daylight Time\n"
|
||||
"POT-Creation-Date: 2014-09-09 15:54+Central Daylight Time\n"
|
||||
"PO-Revision-Date: 2014-09-03 19:20+0000\n"
|
||||
"Last-Translator: Paulo_Neto <layoutbr@lexxa.com.br>\n"
|
||||
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/calibre-plugins/language/pt_BR/)\n"
|
||||
@@ -573,7 +573,7 @@ msgstr "Gênero"
|
||||
msgid "Language"
|
||||
msgstr "Idioma"
|
||||
|
||||
#: config.py:928 ffdl_plugin.py:1142 ffdl_plugin.py:1306 ffdl_plugin.py:1336
|
||||
#: config.py:928 ffdl_plugin.py:1152 ffdl_plugin.py:1324 ffdl_plugin.py:1354
|
||||
msgid "Status"
|
||||
msgstr "Estado"
|
||||
|
||||
@@ -601,7 +601,7 @@ msgstr "Relacionamentos"
|
||||
msgid "Published"
|
||||
msgstr "Publicado"
|
||||
|
||||
#: config.py:935 ffdl_plugin.py:1419 ffdl_plugin.py:1438
|
||||
#: config.py:935 ffdl_plugin.py:1437 ffdl_plugin.py:1456
|
||||
msgid "Updated"
|
||||
msgstr "Atualizado"
|
||||
|
||||
@@ -642,7 +642,7 @@ msgid "Extra Tags"
|
||||
msgstr "Etiquetas Extras"
|
||||
|
||||
#: config.py:945 config.py:1057 dialogs.py:804 dialogs.py:900
|
||||
#: ffdl_plugin.py:1142 ffdl_plugin.py:1306 ffdl_plugin.py:1336
|
||||
#: ffdl_plugin.py:1152 ffdl_plugin.py:1324 ffdl_plugin.py:1354
|
||||
msgid "Title"
|
||||
msgstr "Título"
|
||||
|
||||
@@ -654,8 +654,8 @@ msgstr "URL da História"
|
||||
msgid "Description"
|
||||
msgstr "Descrição"
|
||||
|
||||
#: config.py:948 dialogs.py:804 dialogs.py:900 ffdl_plugin.py:1142
|
||||
#: ffdl_plugin.py:1306 ffdl_plugin.py:1336
|
||||
#: config.py:948 dialogs.py:804 dialogs.py:900 ffdl_plugin.py:1152
|
||||
#: ffdl_plugin.py:1324 ffdl_plugin.py:1354
|
||||
msgid "Author"
|
||||
msgstr "Autor"
|
||||
|
||||
@@ -958,7 +958,7 @@ msgid ""
|
||||
"What sort of update to perform. May set default from plugin configuration."
|
||||
msgstr "Que tipo de atualização executar. Pode-se definir o padrão da configuração do plugin."
|
||||
|
||||
#: dialogs.py:804 ffdl_plugin.py:1142 ffdl_plugin.py:1306 ffdl_plugin.py:1336
|
||||
#: dialogs.py:804 ffdl_plugin.py:1152 ffdl_plugin.py:1324 ffdl_plugin.py:1354
|
||||
msgid "Comment"
|
||||
msgstr "Comentários"
|
||||
|
||||
@@ -1215,387 +1215,387 @@ msgstr "Obter histórias para atualização"
|
||||
msgid "Update Existing List"
|
||||
msgstr "Atualizar lista existente"
|
||||
|
||||
#: ffdl_plugin.py:744
|
||||
#: ffdl_plugin.py:745
|
||||
msgid "Started fetching metadata for %s stories."
|
||||
msgstr "Começou a busca de metadados para %s histórias."
|
||||
|
||||
#: ffdl_plugin.py:750
|
||||
#: ffdl_plugin.py:751
|
||||
msgid "No valid story URLs entered."
|
||||
msgstr "Nenhuma história válida nas URLs inseridas."
|
||||
|
||||
#: ffdl_plugin.py:775 ffdl_plugin.py:781
|
||||
#: ffdl_plugin.py:776 ffdl_plugin.py:782
|
||||
msgid "Reject URL?"
|
||||
msgstr "Rejeitar URL?"
|
||||
|
||||
#: ffdl_plugin.py:782 ffdl_plugin.py:800
|
||||
#: ffdl_plugin.py:783 ffdl_plugin.py:801
|
||||
msgid "<b>%s</b> is on your Reject URL list:"
|
||||
msgstr "<b>%s</b> está em sua lista de URLs rejeitadas:"
|
||||
|
||||
#: ffdl_plugin.py:784
|
||||
#: ffdl_plugin.py:785
|
||||
msgid "Click '<b>Yes</b>' to Reject."
|
||||
msgstr "Clique em '<b>Sim</b>' para rejeitar."
|
||||
|
||||
#: ffdl_plugin.py:785 ffdl_plugin.py:881
|
||||
#: ffdl_plugin.py:786 ffdl_plugin.py:890
|
||||
msgid "Click '<b>No</b>' to download anyway."
|
||||
msgstr "Clique em '<b>Não</b>' para transferir de qualquer maneira."
|
||||
|
||||
#: ffdl_plugin.py:787
|
||||
#: ffdl_plugin.py:788
|
||||
msgid "Story on Reject URLs list (%s)."
|
||||
msgstr "História na lista de URLs rejeitadas (%s)."
|
||||
|
||||
#: ffdl_plugin.py:790
|
||||
#: ffdl_plugin.py:791
|
||||
msgid "Rejected"
|
||||
msgstr "Rejeitado"
|
||||
|
||||
#: ffdl_plugin.py:793
|
||||
#: ffdl_plugin.py:794
|
||||
msgid "Remove Reject URL?"
|
||||
msgstr "Remover URL rejeitada?"
|
||||
|
||||
#: ffdl_plugin.py:799
|
||||
#: ffdl_plugin.py:800
|
||||
msgid "Remove URL from Reject List?"
|
||||
msgstr "Remover URL da lista de rejeição?"
|
||||
|
||||
#: ffdl_plugin.py:802
|
||||
#: ffdl_plugin.py:803
|
||||
msgid "Click '<b>Yes</b>' to remove it from the list,"
|
||||
msgstr "Clique em '<b>Sim</b>' para removê-la da lista."
|
||||
|
||||
#: ffdl_plugin.py:803
|
||||
#: ffdl_plugin.py:804
|
||||
msgid "Click '<b>No</b>' to leave it on the list."
|
||||
msgstr "Clique em '<b>Não</b>' para mantê-la na lista."
|
||||
|
||||
#: ffdl_plugin.py:820
|
||||
#: ffdl_plugin.py:821
|
||||
msgid "Cannot update non-epub format."
|
||||
msgstr "Não é possível atualizar formatos que não sejam epub."
|
||||
|
||||
#: ffdl_plugin.py:857
|
||||
#: ffdl_plugin.py:866
|
||||
msgid "Are You an Adult?"
|
||||
msgstr "Você é adulto?"
|
||||
|
||||
#: ffdl_plugin.py:858
|
||||
#: ffdl_plugin.py:867
|
||||
msgid ""
|
||||
"%s requires that you be an adult. Please confirm you are an adult in your "
|
||||
"locale:"
|
||||
msgstr "%s requer que você seja um adulto. Confirme que você é um adulto em sua localidade:"
|
||||
|
||||
#: ffdl_plugin.py:872
|
||||
#: ffdl_plugin.py:881
|
||||
msgid "Skip Story?"
|
||||
msgstr "Ignorar história?"
|
||||
|
||||
#: ffdl_plugin.py:878
|
||||
#: ffdl_plugin.py:887
|
||||
msgid "Skip Anthology Story?"
|
||||
msgstr "Ignorar antologia da história?"
|
||||
|
||||
#: ffdl_plugin.py:879
|
||||
#: ffdl_plugin.py:888
|
||||
msgid ""
|
||||
"\"<b>%s</b>\" is in series \"<b><a href=\"%s\">%s</a></b>\" that you have an"
|
||||
" anthology book for."
|
||||
msgstr "\"<b>%s</b>\" está na série \"<b><a href=\"%s\">%s</a></b>\" que você tem um livro de antologia."
|
||||
|
||||
#: ffdl_plugin.py:880
|
||||
#: ffdl_plugin.py:889
|
||||
msgid "Click '<b>Yes</b>' to Skip."
|
||||
msgstr "Clique em '<b>Sim</b>' para ignorar."
|
||||
|
||||
#: ffdl_plugin.py:883
|
||||
#: ffdl_plugin.py:892
|
||||
msgid "Story in Series Anthology(%s)."
|
||||
msgstr "História na série de antologia (%s)."
|
||||
|
||||
#: ffdl_plugin.py:888
|
||||
#: ffdl_plugin.py:897
|
||||
msgid "Skipped"
|
||||
msgstr "Ignorado"
|
||||
|
||||
#: ffdl_plugin.py:916
|
||||
#: ffdl_plugin.py:925
|
||||
msgid "Add"
|
||||
msgstr "Adicionar"
|
||||
|
||||
#: ffdl_plugin.py:929
|
||||
#: ffdl_plugin.py:938
|
||||
msgid "Meta"
|
||||
msgstr "Meta"
|
||||
|
||||
#: ffdl_plugin.py:962
|
||||
#: ffdl_plugin.py:971
|
||||
msgid "Skipping duplicate story."
|
||||
msgstr "Ignorando história duplicada."
|
||||
|
||||
#: ffdl_plugin.py:965
|
||||
#: ffdl_plugin.py:974
|
||||
msgid ""
|
||||
"More than one identical book by Identifer URL or title/author(s)--can't tell"
|
||||
" which book to update/overwrite."
|
||||
msgstr "Mais do que um livro idêntico por identificador de URL ou título/autor(es)--não pode dizer qual livro atualizar/substituir."
|
||||
|
||||
#: ffdl_plugin.py:976
|
||||
#: ffdl_plugin.py:985
|
||||
msgid "Update"
|
||||
msgstr "Atualizar"
|
||||
|
||||
#: ffdl_plugin.py:984 ffdl_plugin.py:991
|
||||
#: ffdl_plugin.py:993 ffdl_plugin.py:1000
|
||||
msgid "Change Story URL?"
|
||||
msgstr "Alterar URL de história?"
|
||||
|
||||
#: ffdl_plugin.py:992
|
||||
#: ffdl_plugin.py:1001
|
||||
msgid ""
|
||||
"<b>%s</b> by <b>%s</b> is already in your library with a different source "
|
||||
"URL:"
|
||||
msgstr "<b>%s</b> por <b>%s</b> já está na sua biblioteca com uma URL de origem diferente:"
|
||||
|
||||
#: ffdl_plugin.py:993
|
||||
#: ffdl_plugin.py:1002
|
||||
msgid "In library: <a href=\"%(liburl)s\">%(liburl)s</a>"
|
||||
msgstr "Na biblioteca: <a href=\"%(liburl)s\">%(liburl)s</a>"
|
||||
|
||||
#: ffdl_plugin.py:994 ffdl_plugin.py:1008
|
||||
#: ffdl_plugin.py:1003 ffdl_plugin.py:1017
|
||||
msgid "New URL: <a href=\"%(newurl)s\">%(newurl)s</a>"
|
||||
msgstr "Nova URL: <a href=\"%(newurl)s\">%(newurl)s</a>"
|
||||
|
||||
#: ffdl_plugin.py:995
|
||||
#: ffdl_plugin.py:1004
|
||||
msgid "Click '<b>Yes</b>' to update/overwrite book with new URL."
|
||||
msgstr "Clique em '<b>Sim</b>' para atualizar/substituir livro com a nova URL."
|
||||
|
||||
#: ffdl_plugin.py:996
|
||||
#: ffdl_plugin.py:1005
|
||||
msgid "Click '<b>No</b>' to skip updating/overwriting this book."
|
||||
msgstr "Clique em '<b>Não</b>' para ignorar a atualização/substituição desse livro."
|
||||
|
||||
#: ffdl_plugin.py:998 ffdl_plugin.py:1005
|
||||
#: ffdl_plugin.py:1007 ffdl_plugin.py:1014
|
||||
msgid "Download as New Book?"
|
||||
msgstr "Transferir como novo livro?"
|
||||
|
||||
#: ffdl_plugin.py:1006
|
||||
#: ffdl_plugin.py:1015
|
||||
msgid ""
|
||||
"<b>%s</b> by <b>%s</b> is already in your library with a different source "
|
||||
"URL."
|
||||
msgstr "<b>%s</b> por <b>%s</b> já está na sua biblioteca com uma URL de origem diferente."
|
||||
|
||||
#: ffdl_plugin.py:1007
|
||||
#: ffdl_plugin.py:1016
|
||||
msgid ""
|
||||
"You chose not to update the existing book. Do you want to add a new book "
|
||||
"for this URL?"
|
||||
msgstr "Você optou por não atualizar o livro existente. Você deseja adicionar um novo livro para esta URL?"
|
||||
|
||||
#: ffdl_plugin.py:1009
|
||||
#: ffdl_plugin.py:1018
|
||||
msgid "Click '<b>Yes</b>' to a new book with new URL."
|
||||
msgstr "Clique em '<b>Sim</b>' para um novo livro com nova URL."
|
||||
|
||||
#: ffdl_plugin.py:1010
|
||||
#: ffdl_plugin.py:1019
|
||||
msgid "Click '<b>No</b>' to skip URL."
|
||||
msgstr "Clique em '<b>Não</b>' para ignorar a URL."
|
||||
|
||||
#: ffdl_plugin.py:1016
|
||||
#: ffdl_plugin.py:1025
|
||||
msgid "Update declined by user due to differing story URL(%s)"
|
||||
msgstr "Atualização recusada pelo usuário devido à diferentes URL(%s) de história"
|
||||
|
||||
#: ffdl_plugin.py:1019
|
||||
#: ffdl_plugin.py:1028
|
||||
msgid "Different URL"
|
||||
msgstr "URL Diferente"
|
||||
|
||||
#: ffdl_plugin.py:1024
|
||||
#: ffdl_plugin.py:1033
|
||||
msgid "Metadata collected."
|
||||
msgstr "Metadados recolhidos."
|
||||
|
||||
#: ffdl_plugin.py:1040
|
||||
#: ffdl_plugin.py:1049
|
||||
msgid "Already contains %d chapters."
|
||||
msgstr "Já contém %s capítulos."
|
||||
|
||||
#: ffdl_plugin.py:1045 jobs.py:198
|
||||
#: ffdl_plugin.py:1054 jobs.py:199
|
||||
msgid ""
|
||||
"Existing epub contains %d chapters, web site only has %d. Use Overwrite to "
|
||||
"force update."
|
||||
msgstr "O epub existente contém %d capítulos, o site tem apenas %d. Use Substituir para forçar uma atualização."
|
||||
|
||||
#: ffdl_plugin.py:1047
|
||||
#: ffdl_plugin.py:1056
|
||||
msgid ""
|
||||
"FFDL doesn't recognize chapters in existing epub, epub is probably from a "
|
||||
"different source. Use Overwrite to force update."
|
||||
msgstr "O FFDL não reconhece capítulos em epub existente, o epub é, provavelmente, de uma fonte diferente. Use Substituir para forçar uma atualização."
|
||||
|
||||
#: ffdl_plugin.py:1059
|
||||
#: ffdl_plugin.py:1068
|
||||
msgid "Not Overwriting, web site is not newer."
|
||||
msgstr "Nenhuma substituição, o site não é mais novo."
|
||||
|
||||
#: ffdl_plugin.py:1138
|
||||
#: ffdl_plugin.py:1148
|
||||
msgid "None of the <b>%d</b> URLs/stories given can be/need to be downloaded."
|
||||
msgstr "Nenhuma das <b>%d</b> URLs/histórias fornecidas podem ser/precisam ser transferidas."
|
||||
|
||||
#: ffdl_plugin.py:1139 ffdl_plugin.py:1302 ffdl_plugin.py:1332
|
||||
#: ffdl_plugin.py:1149 ffdl_plugin.py:1320 ffdl_plugin.py:1350
|
||||
msgid "See log for details."
|
||||
msgstr "Veja o registro para detalhes."
|
||||
|
||||
#: ffdl_plugin.py:1140
|
||||
#: ffdl_plugin.py:1150
|
||||
msgid "Proceed with updating your library(Error Column, if configured)?"
|
||||
msgstr "Prosseguir com a atualização sua biblioteca (Coluna de erro, se configurado)?"
|
||||
|
||||
#: ffdl_plugin.py:1147 ffdl_plugin.py:1314
|
||||
#: ffdl_plugin.py:1157 ffdl_plugin.py:1332
|
||||
msgid "Bad"
|
||||
msgstr "Ruim"
|
||||
|
||||
#: ffdl_plugin.py:1155
|
||||
#: ffdl_plugin.py:1165
|
||||
msgid "FFDL download ended"
|
||||
msgstr "O FFDL finalizou a transferência"
|
||||
|
||||
#: ffdl_plugin.py:1155 ffdl_plugin.py:1357
|
||||
#: ffdl_plugin.py:1165 ffdl_plugin.py:1375
|
||||
msgid "FFDL log"
|
||||
msgstr "Registro do FFDL"
|
||||
|
||||
#: ffdl_plugin.py:1163
|
||||
#: ffdl_plugin.py:1181
|
||||
msgid "Download FanFiction Book"
|
||||
msgstr "Transferir Livro de Ficção"
|
||||
|
||||
#: ffdl_plugin.py:1170
|
||||
#: ffdl_plugin.py:1188
|
||||
msgid "Starting %d FanFictionDownLoads"
|
||||
msgstr "Começando %d FanFictionDownLoads"
|
||||
|
||||
#: ffdl_plugin.py:1200
|
||||
#: ffdl_plugin.py:1218
|
||||
msgid "Story Details:"
|
||||
msgstr "Detalhes da história:"
|
||||
|
||||
#: ffdl_plugin.py:1203
|
||||
#: ffdl_plugin.py:1221
|
||||
msgid "Error Updating Metadata"
|
||||
msgstr "Erro ao atualizar metadados"
|
||||
|
||||
#: ffdl_plugin.py:1204
|
||||
#: ffdl_plugin.py:1222
|
||||
msgid ""
|
||||
"An error has occurred while FFDL was updating calibre's metadata for <a "
|
||||
"href='%s'>%s</a>."
|
||||
msgstr "Ocorreu um erro enquanto o FFDL estava atualizando os metadados do calibre de <a href='%s'>%s</a>."
|
||||
|
||||
#: ffdl_plugin.py:1205
|
||||
#: ffdl_plugin.py:1223
|
||||
msgid "The ebook has been updated, but the metadata has not."
|
||||
msgstr "O ebook foi atualizado, mas os metadados não."
|
||||
|
||||
#: ffdl_plugin.py:1257
|
||||
#: ffdl_plugin.py:1275
|
||||
msgid "Finished Adding/Updating %d books."
|
||||
msgstr "O adicionamento/atualização de %s livros está concluído."
|
||||
|
||||
#: ffdl_plugin.py:1265
|
||||
#: ffdl_plugin.py:1283
|
||||
msgid "Starting auto conversion of %d books."
|
||||
msgstr "Começando a conversão automática de %s livros."
|
||||
|
||||
#: ffdl_plugin.py:1286
|
||||
#: ffdl_plugin.py:1304
|
||||
msgid "No Good Stories for Anthology"
|
||||
msgstr "Nenhuma BOA história para antologia"
|
||||
|
||||
#: ffdl_plugin.py:1287
|
||||
#: ffdl_plugin.py:1305
|
||||
msgid ""
|
||||
"No good stories/updates where downloaded, Anthology creation/update aborted."
|
||||
msgstr "Não há boas histórias/atualizações de onde transferir, a criação/atualização de antologia foi abortada."
|
||||
|
||||
#: ffdl_plugin.py:1292 ffdl_plugin.py:1331
|
||||
#: ffdl_plugin.py:1310 ffdl_plugin.py:1349
|
||||
msgid "FFDL found <b>%s</b> good and <b>%s</b> bad updates."
|
||||
msgstr "O FFDL encontrou <b>%s</b> atualizações boas e <b>%s</b> ruins."
|
||||
|
||||
#: ffdl_plugin.py:1299
|
||||
#: ffdl_plugin.py:1317
|
||||
msgid ""
|
||||
"Are you sure you want to continue with creating/updating this Anthology?"
|
||||
msgstr "Você deseja realmente continuar com a criação/atualização desta antologia?"
|
||||
|
||||
#: ffdl_plugin.py:1300
|
||||
#: ffdl_plugin.py:1318
|
||||
msgid "Any updates that failed will <b>not</b> be included in the Anthology."
|
||||
msgstr "Todas as atualizações que falharam <b>não</b> vão ser incluídas na antologia."
|
||||
|
||||
#: ffdl_plugin.py:1301
|
||||
#: ffdl_plugin.py:1319
|
||||
msgid "However, if there's an older version, it will still be included."
|
||||
msgstr "No entanto, se houver uma versão mais antiga, ela será incluída."
|
||||
|
||||
#: ffdl_plugin.py:1304
|
||||
#: ffdl_plugin.py:1322
|
||||
msgid "Proceed with updating this anthology and your library?"
|
||||
msgstr "Prosseguir com a atualização desta antologia e sua biblioteca?"
|
||||
|
||||
#: ffdl_plugin.py:1312
|
||||
#: ffdl_plugin.py:1330
|
||||
msgid "Good"
|
||||
msgstr "BOA"
|
||||
|
||||
#: ffdl_plugin.py:1333
|
||||
#: ffdl_plugin.py:1351
|
||||
msgid "Proceed with updating your library?"
|
||||
msgstr "Prosseguir com a atualização de sua biblioteca?"
|
||||
|
||||
#: ffdl_plugin.py:1357
|
||||
#: ffdl_plugin.py:1375
|
||||
msgid "FFDL download complete"
|
||||
msgstr "Transferência concluída do FFDL"
|
||||
|
||||
#: ffdl_plugin.py:1370
|
||||
#: ffdl_plugin.py:1388
|
||||
msgid "Merging %s books."
|
||||
msgstr "Mesclando %s livros."
|
||||
|
||||
#: ffdl_plugin.py:1410
|
||||
#: ffdl_plugin.py:1428
|
||||
msgid "FFDL Adding/Updating books."
|
||||
msgstr "Adicionar/atualizar livros do FFDL."
|
||||
|
||||
#: ffdl_plugin.py:1417
|
||||
#: ffdl_plugin.py:1435
|
||||
msgid "Updating calibre for FanFiction stories..."
|
||||
msgstr "Atualizando o calibre de histórias de ficção..."
|
||||
|
||||
#: ffdl_plugin.py:1418
|
||||
#: ffdl_plugin.py:1436
|
||||
msgid "Update calibre for FanFiction stories"
|
||||
msgstr "Atualizar o calibre de histórias de ficção"
|
||||
|
||||
#: ffdl_plugin.py:1427
|
||||
#: ffdl_plugin.py:1445
|
||||
msgid "Adding/Updating %s BAD books."
|
||||
msgstr "Adicionando/atualizando %s livros RUINS."
|
||||
|
||||
#: ffdl_plugin.py:1436
|
||||
#: ffdl_plugin.py:1454
|
||||
msgid "Updating calibre for BAD FanFiction stories..."
|
||||
msgstr "Atualizando o calibre de histórias RUINS de ficção..."
|
||||
|
||||
#: ffdl_plugin.py:1437
|
||||
#: ffdl_plugin.py:1455
|
||||
msgid "Update calibre for BAD FanFiction stories"
|
||||
msgstr "Atualizar o calibre de histórias RUINS de ficção"
|
||||
|
||||
#: ffdl_plugin.py:1463
|
||||
#: ffdl_plugin.py:1481
|
||||
msgid "Adding format to book failed for some reason..."
|
||||
msgstr "Falha ao adicionar formato por algum motivo..."
|
||||
|
||||
#: ffdl_plugin.py:1466
|
||||
#: ffdl_plugin.py:1484
|
||||
msgid "Error"
|
||||
msgstr "Erro"
|
||||
|
||||
#: ffdl_plugin.py:1739
|
||||
#: ffdl_plugin.py:1757
|
||||
msgid ""
|
||||
"You configured FanFictionDownLoader to automatically update Reading Lists, "
|
||||
"but you don't have the %s plugin installed anymore?"
|
||||
msgstr "Você configurou o FanFictionDownLoader para atualizar automaticamente listas de leitura, mas você não tem mais o plugin %s instalado?"
|
||||
|
||||
#: ffdl_plugin.py:1751
|
||||
#: ffdl_plugin.py:1769
|
||||
msgid ""
|
||||
"You configured FanFictionDownLoader to automatically update \"To Read\" "
|
||||
"Reading Lists, but you don't have any lists set?"
|
||||
msgstr "Você configurou o FanFictionDownLoader para atualizar automaticamente listas de leitura \"Para Ler\", mas você não tem nenhuma lista definida?"
|
||||
|
||||
#: ffdl_plugin.py:1761 ffdl_plugin.py:1779
|
||||
#: ffdl_plugin.py:1779 ffdl_plugin.py:1797
|
||||
msgid ""
|
||||
"You configured FanFictionDownLoader to automatically update Reading List "
|
||||
"'%s', but you don't have a list of that name?"
|
||||
msgstr "Você configurou o FanFictionDownLoader para atualizar automaticamente a Lista de Leitura '%s', mas você não tem uma lista com esse nome?"
|
||||
|
||||
#: ffdl_plugin.py:1767
|
||||
#: ffdl_plugin.py:1785
|
||||
msgid ""
|
||||
"You configured FanFictionDownLoader to automatically update \"Send to "
|
||||
"Device\" Reading Lists, but you don't have any lists set?"
|
||||
msgstr "Você configurou o FanFictionDownLoader para atualizar automaticamente listas de leitura \"Enviar para Dispositivo\", mas você não tem nenhuma lista definida?"
|
||||
|
||||
#: ffdl_plugin.py:1888
|
||||
#: ffdl_plugin.py:1906
|
||||
msgid "No story URL found."
|
||||
msgstr "Nenhuma URL de história encontrada."
|
||||
|
||||
#: ffdl_plugin.py:1891
|
||||
#: ffdl_plugin.py:1909
|
||||
msgid "Not Found"
|
||||
msgstr "Não encontrado"
|
||||
|
||||
#: ffdl_plugin.py:1897
|
||||
#: ffdl_plugin.py:1915
|
||||
msgid "URL is not a valid story URL."
|
||||
msgstr "A URL não é uma URL válida de história."
|
||||
|
||||
#: ffdl_plugin.py:1900
|
||||
#: ffdl_plugin.py:1918
|
||||
msgid "Bad URL"
|
||||
msgstr "URL ruim:"
|
||||
|
||||
#: ffdl_plugin.py:2036 ffdl_plugin.py:2039
|
||||
#: ffdl_plugin.py:2054 ffdl_plugin.py:2057
|
||||
msgid "Anthology containing:"
|
||||
msgstr "Antologia contendo:"
|
||||
|
||||
#: ffdl_plugin.py:2037
|
||||
#: ffdl_plugin.py:2055
|
||||
msgid "%s by %s"
|
||||
msgstr "%s por %s"
|
||||
|
||||
#: ffdl_plugin.py:2059
|
||||
#: ffdl_plugin.py:2077
|
||||
msgid " Anthology"
|
||||
msgstr "Antologia"
|
||||
|
||||
#: ffdl_plugin.py:2096
|
||||
#: ffdl_plugin.py:2114
|
||||
msgid "(was set, removed for security)"
|
||||
msgstr "(foi definido, removido para segurança)"
|
||||
|
||||
@@ -1615,10 +1615,10 @@ msgstr "Mal sucedido:"
|
||||
msgid "Download started..."
|
||||
msgstr "Transferência iniciada..."
|
||||
|
||||
#: jobs.py:192
|
||||
#: jobs.py:193
|
||||
msgid "Already contains %d chapters. Reuse as is."
|
||||
msgstr "Já contém %s capítulos. Reutilizar como está."
|
||||
|
||||
#: jobs.py:209
|
||||
#: jobs.py:210
|
||||
msgid "Update %s completed, added %s chapters for %s total."
|
||||
msgstr "Atualização %s concluída, adicionados %s capítulos de um total de %s."
|
||||
|
||||
@@ -712,6 +712,20 @@ extracategories:Castle
|
||||
## cover image. This lets you exclude them.
|
||||
cover_exclusion_regexp:/images/.*?ribbon.gif
|
||||
|
||||
[csi-forensics.com]
|
||||
## Some sites also require the user to confirm they are adult for
|
||||
## adult content. In commandline version, this should go in your
|
||||
## personal.ini, not defaults.ini.
|
||||
#is_adult:true
|
||||
|
||||
## Virtually all eFiction-based sites allow downloading the whole story in
|
||||
## bulk using the 'Print' feature. If 'bulk_load' is set to 'true', both
|
||||
## metadata and chapters can be loaded in one step
|
||||
bulk_load:true
|
||||
|
||||
extra_valid_entries: readings
|
||||
readings_label: Readings
|
||||
|
||||
[dark-solace.org]
|
||||
## Site dedicated to these categories/characters/ships
|
||||
## Some sites require login (or login for some rated stories) The
|
||||
@@ -1031,6 +1045,18 @@ extra_valid_entries:eroticatags
|
||||
eroticatags_label:Erotica Tags
|
||||
extra_titlepage_entries: eroticatags
|
||||
|
||||
[lotrfanfiction.com]
|
||||
## Virtually all eFiction-based sites allow downloading the whole story in
|
||||
## bulk using the 'Print' feature. If 'bulk_load' is set to 'true', both
|
||||
## metadata and chapters can be loaded in one step
|
||||
bulk_load:true
|
||||
|
||||
extra_valid_entries: readings
|
||||
readings_label: Readings
|
||||
|
||||
## Site dedicated to these categories/characters/ships
|
||||
extracategories:Lord of the Rings
|
||||
|
||||
[lumos.sycophanthex.com]
|
||||
## Some sites do not require a login, but do require the user to
|
||||
## confirm they are adult for adult content. In commandline version,
|
||||
@@ -1153,6 +1179,24 @@ extracategories:My Little Pony: Friendship is Magic
|
||||
## Site dedicated to these categories/characters/ships
|
||||
extracategories:The Pretender
|
||||
|
||||
[samandjack.net]
|
||||
## Some sites require login (or login for some rated stories) The
|
||||
## program can prompt you, or you can save it in config. In
|
||||
## commandline version, this should go in your personal.ini, not
|
||||
## defaults.ini.
|
||||
#username:YourName
|
||||
#password:yourpassword
|
||||
|
||||
## Some sites also require the user to confirm they are adult for
|
||||
## adult content. In commandline version, this should go in your
|
||||
## personal.ini, not defaults.ini.
|
||||
#is_adult:true
|
||||
|
||||
## Site dedicated to these categories/characters/ships
|
||||
extracategories:Stargate: SG-1
|
||||
extracharacters:Sam,Jack
|
||||
extraships:Sam/Jack
|
||||
|
||||
[samdean.archive.nu]
|
||||
## Site dedicated to these categories/characters/ships
|
||||
extracategories:Supernatural
|
||||
@@ -1181,6 +1225,24 @@ extracategories:Harry Potter
|
||||
## this should go in your personal.ini, not defaults.ini.
|
||||
#is_adult:true
|
||||
|
||||
[sheppardweir.com]
|
||||
## Some sites require login (or login for some rated stories) The
|
||||
## program can prompt you, or you can save it in config. In
|
||||
## commandline version, this should go in your personal.ini, not
|
||||
## defaults.ini.
|
||||
#username:YourName
|
||||
#password:yourpassword
|
||||
|
||||
## Some sites also require the user to confirm they are adult for
|
||||
## adult content. In commandline version, this should go in your
|
||||
## personal.ini, not defaults.ini.
|
||||
#is_adult:true
|
||||
|
||||
## Site dedicated to these categories/characters/ships
|
||||
extracategories:Stargate: Atlantis
|
||||
extracharacters:John Sheppard,Elizabeth Weir
|
||||
extraships:John Sheppard/Elizabeth Weir
|
||||
|
||||
[spikeluver.com]
|
||||
## Extra metadata that this adapter knows about. See [dramione.org]
|
||||
## for examples of how to use them.
|
||||
|
||||
Binary file not shown.
@@ -135,7 +135,9 @@ import adapter_tolkienfanfiction
|
||||
import adapter_themaplebookshelf
|
||||
import adapter_fannation
|
||||
import adapter_sheppardweircom
|
||||
|
||||
import adapter_samandjacknet
|
||||
import adapter_csiforensicscom
|
||||
import adapter_lotrfanfictioncom
|
||||
|
||||
## This bit of complexity allows adapters to be added by just adding
|
||||
## importing. It eliminates the long if/else clauses we used to need
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2014 Fanficdownloader team
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
# Software: eFiction
|
||||
import re
|
||||
from base_efiction_adapter import BaseEfictionAdapter
|
||||
|
||||
class CSIForensicsComAdapter(BaseEfictionAdapter):
|
||||
|
||||
@staticmethod
|
||||
def getSiteDomain():
|
||||
return 'csi-forensics.com'
|
||||
|
||||
@classmethod
|
||||
def getPathToArchive(self):
|
||||
return ''
|
||||
|
||||
@classmethod
|
||||
def getSiteAbbrev(self):
|
||||
return 'csiforensics'
|
||||
|
||||
@classmethod
|
||||
def getDateFormat(self):
|
||||
return "%d %b %Y"
|
||||
|
||||
def handleMetadataPair(self, key, value):
|
||||
if key == 'Warnings':
|
||||
for val in re.split("\s*,\s*", value):
|
||||
if value == 'None':
|
||||
return
|
||||
else:
|
||||
self.story.addToList('warnings', val)
|
||||
|
||||
elif 'Categories' in key:
|
||||
for val in re.split("\s*>\s*", value):
|
||||
self.story.addToList('category', val)
|
||||
else:
|
||||
super(CSIForensicsComAdapter, self).handleMetadataPair(key, value)
|
||||
|
||||
def getClass():
|
||||
return CSIForensicsComAdapter
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2014 Fanficdownloader team
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
# Software: eFiction
|
||||
from base_efiction_adapter import BaseEfictionAdapter
|
||||
|
||||
class TheLOTRFanFictionSiteAdapter(BaseEfictionAdapter):
|
||||
|
||||
@staticmethod
|
||||
def getSiteDomain():
|
||||
return 'lotrfanfiction.com'
|
||||
|
||||
@classmethod
|
||||
def getSiteAbbrev(seluuf):
|
||||
return 'lotrff'
|
||||
|
||||
@classmethod
|
||||
def getDateFormat(self):
|
||||
return "%d/%m/%y"
|
||||
|
||||
def getClass():
|
||||
return TheLOTRFanFictionSiteAdapter
|
||||
@@ -0,0 +1,342 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2011 Fanficdownloader team
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
import time
|
||||
import logging
|
||||
logger = logging.getLogger(__name__)
|
||||
import re
|
||||
import urllib2
|
||||
|
||||
from .. import BeautifulSoup as bs
|
||||
from ..htmlcleanup import stripHTML
|
||||
from .. import exceptions as exceptions
|
||||
|
||||
from base_adapter import BaseSiteAdapter, makeDate
|
||||
|
||||
# By virtue of being recent and requiring both is_adult and user/pass,
|
||||
# adapter_fanficcastletvnet.py is the best choice for learning to
|
||||
# write adapters--especially for sites that use the eFiction system.
|
||||
# Most sites that have ".../viewstory.php?sid=123" in the story URL
|
||||
# are eFiction.
|
||||
|
||||
# For non-eFiction sites, it can be considerably more complex, but
|
||||
# this is still a good starting point.
|
||||
|
||||
# In general an 'adapter' needs to do these five things:
|
||||
|
||||
# - 'Register' correctly with the downloader
|
||||
# - Site Login (if needed)
|
||||
# - 'Are you adult?' check (if needed--some do one, some the other, some both)
|
||||
# - Grab the chapter list
|
||||
# - Grab the story meta-data (some (non-eFiction) adapters have to get it from the author page)
|
||||
# - Grab the chapter texts
|
||||
|
||||
# Search for XXX comments--that's where things are most likely to need changing.
|
||||
|
||||
# This function is called by the downloader in all adapter_*.py files
|
||||
# in this dir to register the adapter class. So it needs to be
|
||||
# updated to reflect the class below it. That, plus getSiteDomain()
|
||||
# take care of 'Registering'.
|
||||
def getClass():
|
||||
return SamAndJackNetAdapter # XXX
|
||||
|
||||
# Class name has to be unique. Our convention is camel case the
|
||||
# sitename with Adapter at the end. www is skipped.
|
||||
class SamAndJackNetAdapter(BaseSiteAdapter): # XXX
|
||||
|
||||
def __init__(self, config, url):
|
||||
BaseSiteAdapter.__init__(self, config, url)
|
||||
|
||||
self.decode = ["Windows-1252",
|
||||
"utf8"] # 1252 is a superset of iso-8859-1.
|
||||
# Most sites that claim to be
|
||||
# iso-8859-1 (and some that claim to be
|
||||
# utf8) are really windows-1252.
|
||||
self.username = "NoneGiven" # if left empty, site doesn't return any message at all.
|
||||
self.password = ""
|
||||
self.is_adult=False
|
||||
|
||||
# get storyId from url--url validation guarantees query is only sid=1234
|
||||
self.story.setMetadata('storyId',self.parsedUrl.query.split('=',)[1])
|
||||
|
||||
|
||||
# normalized story URL.
|
||||
# XXX Most sites don't have the /fanfic part. Replace all to remove it usually.
|
||||
self._setURL('http://' + self.getSiteDomain() + '/fanfics/viewstory.php?sid='+self.story.getMetadata('storyId'))
|
||||
|
||||
# Each adapter needs to have a unique site abbreviation.
|
||||
self.story.setMetadata('siteabbrev','sjn') # XXX
|
||||
|
||||
# The date format will vary from site to site.
|
||||
# http://docs.python.org/library/datetime.html#strftime-strptime-behavior
|
||||
self.dateformat = "%b %d, %Y" # XXX
|
||||
|
||||
@staticmethod # must be @staticmethod, don't remove it.
|
||||
def getSiteDomain():
|
||||
# The site domain. Does have www here, if it uses it.
|
||||
return 'samandjack.net' # XXX
|
||||
|
||||
@classmethod
|
||||
def getSiteExampleURLs(self):
|
||||
return "http://"+self.getSiteDomain()+"/fanfics/viewstory.php?sid=1234"
|
||||
|
||||
def getSiteURLPattern(self):
|
||||
return re.escape("http://"+self.getSiteDomain()+"/fanfics/viewstory.php?sid=")+r"\d+$"
|
||||
|
||||
## Login seems to be reasonably standard across eFiction sites.
|
||||
def needToLoginCheck(self, data):
|
||||
if 'Registered Users Only' in data \
|
||||
or 'There is no such account on our website' in data \
|
||||
or "That password doesn't match the one in our database" in data:
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
def performLogin(self, url):
|
||||
params = {}
|
||||
|
||||
if self.password:
|
||||
params['penname'] = self.username
|
||||
params['password'] = self.password
|
||||
else:
|
||||
params['penname'] = self.getConfig("username")
|
||||
params['password'] = self.getConfig("password")
|
||||
params['cookiecheck'] = '1'
|
||||
params['submit'] = 'Submit'
|
||||
|
||||
loginUrl = 'http://' + self.getSiteDomain() + '/fanfics/user.php?action=login'
|
||||
logger.debug("Will now login to URL (%s) as (%s)" % (loginUrl,
|
||||
params['penname']))
|
||||
|
||||
d = self._fetchUrl(loginUrl, params)
|
||||
|
||||
if "Member Account" not in d : #Member Account
|
||||
logger.info("Failed to login to URL %s as %s" % (loginUrl,
|
||||
params['penname']))
|
||||
raise exceptions.FailedToLogin(url,params['penname'])
|
||||
return False
|
||||
else:
|
||||
return True
|
||||
|
||||
## Getting the chapter list and the meta data, plus 'is adult' checking.
|
||||
def extractChapterUrlsAndMetadata(self):
|
||||
|
||||
if self.is_adult or self.getConfig("is_adult"):
|
||||
# Weirdly, different sites use different warning numbers.
|
||||
# If the title search below fails, there's a good chance
|
||||
# you need a different number. print data at that point
|
||||
# and see what the 'click here to continue' url says.
|
||||
|
||||
# Furthermore, there's a couple sites now with more than
|
||||
# one warning level for different ratings. And they're
|
||||
# fussy about it. midnightwhispers has three: 10, 3 & 5.
|
||||
# we'll try 5 first.
|
||||
addurl = "&ageconsent=ok&warning=5" # XXX
|
||||
else:
|
||||
addurl=""
|
||||
|
||||
# index=1 makes sure we see the story chapter index. Some
|
||||
# sites skip that for one-chapter stories.
|
||||
url = self.url+'&index=1'+addurl
|
||||
logger.debug("URL: "+url)
|
||||
|
||||
try:
|
||||
data = self._fetchUrl(url)
|
||||
except urllib2.HTTPError, e:
|
||||
if e.code == 404:
|
||||
raise exceptions.StoryDoesNotExist(self.url)
|
||||
else:
|
||||
raise e
|
||||
|
||||
# The actual text that is used to announce you need to be an
|
||||
# adult varies from site to site. Again, print data before
|
||||
# the title search to troubleshoot.
|
||||
|
||||
# Since the warning text can change by warning level, let's
|
||||
# look for the warning pass url. nfacommunity uses
|
||||
# &warning= -- actually, so do other sites. Must be an
|
||||
# eFiction book.
|
||||
|
||||
# viewstory.php?sid=1882&warning=4
|
||||
# viewstory.php?sid=1654&ageconsent=ok&warning=5
|
||||
#print data
|
||||
#m = re.search(r"'viewstory.php\?sid=1882(&warning=4)'",data)
|
||||
m = re.search(r"'viewstory.php\?sid=\d+((?:&ageconsent=ok)?&warning=\d+)'",data)
|
||||
if m != None:
|
||||
if self.is_adult or self.getConfig("is_adult"):
|
||||
# We tried the default and still got a warning, so
|
||||
# let's pull the warning number from the 'continue'
|
||||
# link and reload data.
|
||||
addurl = m.group(1)
|
||||
# correct stupid & error in url.
|
||||
addurl = addurl.replace("&","&")
|
||||
url = self.url+'&index=1'+addurl
|
||||
logger.debug("URL 2nd try: "+url)
|
||||
|
||||
try:
|
||||
data = self._fetchUrl(url)
|
||||
except urllib2.HTTPError, e:
|
||||
if e.code == 404:
|
||||
raise exceptions.StoryDoesNotExist(self.url)
|
||||
else:
|
||||
raise e
|
||||
else:
|
||||
raise exceptions.AdultCheckRequired(self.url)
|
||||
|
||||
if "Access denied. This story has not been validated by the adminstrators of this site." in data:
|
||||
raise exceptions.FailedToDownload(self.getSiteDomain() +" says: Access denied. This story has not been validated by the adminstrators of this site.")
|
||||
|
||||
# use BeautifulSoup HTML parser to make everything easier to find.
|
||||
soup = bs.BeautifulSoup(data)
|
||||
# print data
|
||||
|
||||
# Now go hunting for all the meta data and the chapter list.
|
||||
|
||||
pagetitle = soup.find('div',{'id':'pagetitle'})
|
||||
## Title
|
||||
a = pagetitle.find('a', href=re.compile(r'viewstory.php\?sid='+self.story.getMetadata('storyId')+"$"))
|
||||
self.story.setMetadata('title',stripHTML(a))
|
||||
|
||||
# Find authorid and URL from... author url.
|
||||
# (fetch multiple authors)
|
||||
alist = soup.findAll('a', href=re.compile(r"viewuser.php\?uid=\d+"))
|
||||
for a in alist:
|
||||
self.story.addToList('authorId',a['href'].split('=')[1])
|
||||
self.story.addToList('authorUrl','http://'+self.host+'/fanfics/'+a['href'])
|
||||
self.story.addToList('author',a.string)
|
||||
|
||||
# Reviews
|
||||
reviewdata = soup.find('div', {'id' : 'sort'})
|
||||
a = reviewdata.findAll('a', href=re.compile(r'reviews.php\?type=ST&(amp;)?item='+self.story.getMetadata('storyId')+"$"))[1] # second one.
|
||||
self.story.setMetadata('reviews',stripHTML(a))
|
||||
|
||||
# Find the chapters:
|
||||
for chapter in soup.findAll('a', href=re.compile(r'viewstory.php\?sid='+self.story.getMetadata('storyId')+"&chapter=\d+$")):
|
||||
# just in case there's tags, like <i> in chapter titles.
|
||||
self.chapterUrls.append((stripHTML(chapter),'http://'+self.host+'/fanfics/'+chapter['href']+addurl))
|
||||
|
||||
self.story.setMetadata('numChapters',len(self.chapterUrls))
|
||||
|
||||
# eFiction sites don't help us out a lot with their meta data
|
||||
# formating, so it's a little ugly.
|
||||
|
||||
# utility method
|
||||
def defaultGetattr(d,k):
|
||||
try:
|
||||
return d[k]
|
||||
except:
|
||||
return ""
|
||||
|
||||
|
||||
# <span class="label">Rated:</span> NC-17<br /> etc
|
||||
labels = soup.findAll('span',{'class':'label'})
|
||||
for labelspan in labels:
|
||||
value = labelspan.nextSibling
|
||||
label = labelspan.string
|
||||
|
||||
if 'Summary' in label:
|
||||
self.setDescription(url,value)
|
||||
|
||||
if 'Rated' in label:
|
||||
self.story.setMetadata('rating', value)
|
||||
|
||||
if 'Word count' in label:
|
||||
self.story.setMetadata('numWords', value)
|
||||
|
||||
if 'Categories' in label:
|
||||
cats = labelspan.parent.findAll('a',href=re.compile(r'browse.php\?type=categories'))
|
||||
catstext = [cat.string for cat in cats]
|
||||
for cat in catstext:
|
||||
self.story.addToList('category',cat.string)
|
||||
|
||||
if 'Characters' in label:
|
||||
chars = labelspan.parent.findAll('a',href=re.compile(r'browse.php\?type=characters'))
|
||||
charstext = [char.string for char in chars]
|
||||
for char in charstext:
|
||||
self.story.addToList('characters',char.string)
|
||||
|
||||
## Not all sites use Genre, but there's no harm to
|
||||
## leaving it in. Check to make sure the type_id number
|
||||
## is correct, though--it's site specific.
|
||||
if 'Genre' in label:
|
||||
genres = labelspan.parent.findAll('a',href=re.compile(r'browse.php\?type=class&type_id=1')) # XXX
|
||||
genrestext = [genre.string for genre in genres]
|
||||
self.genre = ', '.join(genrestext)
|
||||
for genre in genrestext:
|
||||
self.story.addToList('genre',genre.string)
|
||||
|
||||
## Not all sites use Warnings, but there's no harm to
|
||||
## leaving it in. Check to make sure the type_id number
|
||||
## is correct, though--it's site specific.
|
||||
if 'Warnings' in label:
|
||||
warnings = labelspan.parent.findAll('a',href=re.compile(r'browse.php\?type=class&type_id=2')) # XXX
|
||||
warningstext = [warning.string for warning in warnings]
|
||||
self.warning = ', '.join(warningstext)
|
||||
for warning in warningstext:
|
||||
self.story.addToList('warnings',warning.string)
|
||||
|
||||
if 'Completed' in label:
|
||||
if 'Yes' in value:
|
||||
self.story.setMetadata('status', 'Completed')
|
||||
else:
|
||||
self.story.setMetadata('status', 'In-Progress')
|
||||
|
||||
if 'Published' in label:
|
||||
value=value.replace(' | ','')
|
||||
self.story.setMetadata('datePublished', makeDate(stripHTML(value), self.dateformat))
|
||||
|
||||
if 'Updated' in label:
|
||||
# there's a stray [ at the end.
|
||||
#value = value[0:-1]
|
||||
self.story.setMetadata('dateUpdated', makeDate(stripHTML(value), self.dateformat))
|
||||
|
||||
|
||||
try:
|
||||
# Find Series name from series URL.
|
||||
a = soup.find('a', href=re.compile(r"viewseries.php\?seriesid=\d+"))
|
||||
series_name = a.string
|
||||
series_url = 'http://'+self.host+'/fanfics/'+a['href']
|
||||
|
||||
# use BeautifulSoup HTML parser to make everything easier to find.
|
||||
seriessoup = bs.BeautifulSoup(self._fetchUrl(series_url))
|
||||
storyas = seriessoup.findAll('a', href=re.compile(r'^viewstory.php\?sid=\d+$'))
|
||||
i=1
|
||||
for a in storyas:
|
||||
if a['href'] == ('viewstory.php?sid='+self.story.getMetadata('storyId')):
|
||||
self.setSeries(series_name, i)
|
||||
self.story.setMetadata('seriesUrl',series_url)
|
||||
break
|
||||
i+=1
|
||||
|
||||
except:
|
||||
# I find it hard to care if the series parsing fails
|
||||
pass
|
||||
|
||||
# grab the text for an individual chapter.
|
||||
def getChapterText(self, url):
|
||||
|
||||
logger.debug('Getting chapter text from: %s' % url)
|
||||
|
||||
soup = bs.BeautifulStoneSoup(self._fetchUrl(url),
|
||||
selfClosingTags=('br','hr')) # otherwise soup eats the br/hr tags.
|
||||
|
||||
div = soup.find('div', {'id' : 'story'})
|
||||
|
||||
if None == div:
|
||||
raise exceptions.FailedToDownload("Error downloading Chapter: %s! Missing required element!" % url)
|
||||
|
||||
return self.utf8FromSoup(url,div)
|
||||
@@ -91,8 +91,8 @@ class SheppardWeirComAdapter(BaseSiteAdapter): # XXX
|
||||
return 'sheppardweir.com' # XXX
|
||||
|
||||
@classmethod
|
||||
def getSiteExampleURLs(cls):
|
||||
return "http://"+cls.getSiteDomain()+"/fanfics/viewstory.php?sid=1234"
|
||||
def getSiteExampleURLs(self):
|
||||
return "http://"+self.getSiteDomain()+"/fanfics/viewstory.php?sid=1234"
|
||||
|
||||
def getSiteURLPattern(self):
|
||||
return re.escape("http://"+self.getSiteDomain()+"/fanfics/viewstory.php?sid=")+r"\d+$"
|
||||
@@ -183,15 +183,18 @@ class SheppardWeirComAdapter(BaseSiteAdapter): # XXX
|
||||
self.story.setMetadata('title',stripHTML(a))
|
||||
|
||||
# Find authorid and URL from... author url.
|
||||
a = pagetitle.find('a', href=re.compile(r"viewuser.php\?uid=\d+"))
|
||||
self.story.setMetadata('authorId',a['href'].split('=')[1])
|
||||
self.story.setMetadata('authorUrl','http://'+self.host+'/fanfics/'+a['href'])
|
||||
self.story.setMetadata('author',a.string)
|
||||
# (fetch multiple authors)
|
||||
alist = soup.findAll('a', href=re.compile(r"viewuser.php\?uid=\d+"))
|
||||
for a in alist:
|
||||
self.story.addToList('authorId',a['href'].split('=')[1])
|
||||
self.story.addToList('authorUrl','http://'+self.host+'/fanfics/'+a['href'])
|
||||
self.story.addToList('author',a.string)
|
||||
|
||||
## Reviews
|
||||
a = pagetitle.find('a', href=re.compile(r'reviews.php?type=ST&item='+self.story.getMetadata('storyId')+"$"))
|
||||
self.story.setMetadata('reviews',stripHTML(a))
|
||||
#self.story.setMetadata('reviews', value)
|
||||
|
||||
# Reviews
|
||||
reviewdata = soup.find('div', {'id' : 'sort'})
|
||||
a = reviewdata.findAll('a', href=re.compile(r'reviews.php\?type=ST&(amp;)?item='+self.story.getMetadata('storyId')+"$"))[1] # second one.
|
||||
self.story.setMetadata('reviews',stripHTML(a))
|
||||
|
||||
|
||||
# Find the chapters:
|
||||
|
||||
@@ -87,7 +87,8 @@ class SquidgeOrgPejaAdapter(BaseSiteAdapter):
|
||||
return "https://"+cls.getSiteDomain()+"/peja/cgi-bin/viewstory.php?sid=1234"
|
||||
|
||||
def getSiteURLPattern(self):
|
||||
return r"https?"+re.escape("://"+self.getSiteDomain()+"/")+r"~?"+re.escape("peja/cgi-bin/viewstory.php?sid=")+r"\d+$"
|
||||
# but not https://www.squidge.org/peja/cgi-bin/viewstory.php?sid=47746 -- that's the 'Site Map' negative look aead
|
||||
return r"https?"+re.escape("://"+self.getSiteDomain()+"/")+r"~?"+re.escape("peja/cgi-bin/viewstory.php?sid=")+r"(?!47746)\d+$"
|
||||
|
||||
## Getting the chapter list and the meta data, plus 'is adult' checking.
|
||||
def extractChapterUrlsAndMetadata(self):
|
||||
@@ -219,7 +220,9 @@ class SquidgeOrgPejaAdapter(BaseSiteAdapter):
|
||||
self.setSeries(series_name, i)
|
||||
self.story.setMetadata('seriesUrl',series_url)
|
||||
break
|
||||
i+=1
|
||||
# don't count the 'site map' story. See the url pattern method.
|
||||
if '47746' not in a['href']:
|
||||
i+=1
|
||||
|
||||
except:
|
||||
# I find it hard to care if the series parsing fails
|
||||
|
||||
@@ -187,11 +187,11 @@ class StoriesOnlineNetAdapter(BaseSiteAdapter):
|
||||
# in lieu of word count.
|
||||
self.story.setMetadata('size', lc2.findNext('td', {'class' : 'num'}).text)
|
||||
|
||||
lc4 = lc2.findNext('td', {'class' : 'lc4'})
|
||||
lc4 = lc2.findNext('td', {'class' : 'lc4'})
|
||||
desc = lc4.contents[0]
|
||||
|
||||
try:
|
||||
a = lc4.find('a', href=re.compile(r"/library/show_series.php\?id=\d+"))
|
||||
a = lc4.find('a', href=re.compile(r"/series/\d+/.*"))
|
||||
if a:
|
||||
# if there's a number after the series name, series_contents is a two element list:
|
||||
# [<a href="...">Title</a>, u' (2)']
|
||||
@@ -209,8 +209,9 @@ class StoriesOnlineNetAdapter(BaseSiteAdapter):
|
||||
self.setSeries(series_name, i)
|
||||
desc = lc4.contents[2]
|
||||
# Check if series is in a universe
|
||||
universes_soup = bs.BeautifulSoup(self._fetchUrl(self.story.getMetadata('authorUrl') + "&type=uni"))
|
||||
# logger.debug("Universe page=", universes_soup)
|
||||
universe_url = self.story.getMetadata('authorUrl') + "&type=uni"
|
||||
universes_soup = bs.BeautifulSoup(self._fetchUrl(universe_url) )
|
||||
logger.debug("Universe url='{0}'".format(universe_url))
|
||||
if universes_soup:
|
||||
universes = universes_soup.findAll('div', {'class' : 'ser-box'})
|
||||
logger.debug("Number of Universes: %d" % len(universes))
|
||||
@@ -223,28 +224,31 @@ class StoriesOnlineNetAdapter(BaseSiteAdapter):
|
||||
universe_name = universe.find('div', {'class' : 'ser-name'}).text.partition(' ')[2]
|
||||
logger.debug("universe_name='%s'" % universe_name)
|
||||
# If there is link to the story, we have the right universe
|
||||
story_a = universe.find('a', {'href' : '/s/'+self.story.getMetadata('storyId')})
|
||||
story_a = universe.find('a', href=re.compile('/s/'+self.story.getMetadata('storyId')))
|
||||
if story_a:
|
||||
logger.debug("Story is in a series that is in a universe! The universe is '%s'" % universe_name)
|
||||
self.story.setMetadata("universe", universe_name)
|
||||
self.story.setMetadata('universeUrl','http://'+self.host+ '/library/universe.php?id=' + universe_id)
|
||||
break
|
||||
else:
|
||||
logger.debug("No universe page")
|
||||
except:
|
||||
pass
|
||||
try:
|
||||
a = lc4.find('a', href=re.compile(r"/library/universe.php\?id=\d+"))
|
||||
a = lc4.find('a', href=re.compile(r"/universe/\d+/.*"))
|
||||
logger.debug("Looking for universe - a='{0}'".format(a))
|
||||
if a:
|
||||
self.story.setMetadata("universe",stripHTML(a))
|
||||
desc = lc4.contents[2]
|
||||
# Assumed only one universe, but it does have a URL--use universeHTML
|
||||
universe_name = stripHTML(a)
|
||||
universeUrl = 'http://'+self.host+a['href']
|
||||
logger.debug("Retrieving Universe - about to get page")
|
||||
logger.debug("Retrieving Universe - about to get page - universeUrl='{0}".format(universeUrl))
|
||||
universe_soup = bs.BeautifulSoup(self._fetchUrl(universeUrl))
|
||||
logger.debug("Retrieving Universe - have page")
|
||||
if universe_soup:
|
||||
logger.debug("Retrieving Universe - looking for name")
|
||||
universe_name = universe_soup.find('span', {'id' : 'ptitle'}).text.partition(' —')[0]
|
||||
universe_name = universe_soup.find('h1', {'id' : 'ptitle'}).text.partition(' —')[0]
|
||||
logger.debug("Universes name: '{0}'".format(universe_name))
|
||||
|
||||
self.story.setMetadata('universeUrl',universeUrl)
|
||||
@@ -253,6 +257,8 @@ class StoriesOnlineNetAdapter(BaseSiteAdapter):
|
||||
if self.getConfig("universe_as_series"):
|
||||
self.setSeries(universe_name, 0)
|
||||
self.story.setMetadata('seriesUrl',universeUrl)
|
||||
else:
|
||||
logger.debug("Do not have a universe")
|
||||
except:
|
||||
pass
|
||||
|
||||
|
||||
@@ -97,7 +97,7 @@ class BaseEfictionAdapter(BaseSiteAdapter):
|
||||
|
||||
In many cases, it's '/archive' or '/fanfiction'
|
||||
"""
|
||||
return "/"
|
||||
return ""
|
||||
|
||||
@classmethod
|
||||
def getViewStoryPhpName(cls):
|
||||
@@ -281,7 +281,7 @@ class BaseEfictionAdapter(BaseSiteAdapter):
|
||||
self.story.addToList('characters', val)
|
||||
elif 'Categories' in key:
|
||||
for val in re.split("\s*,\s*", value):
|
||||
self.story.addToList('categories', val)
|
||||
self.story.addToList('category', val)
|
||||
elif 'Challenges' in key:
|
||||
for val in re.split("\s*,\s*", value):
|
||||
# TODO this should be an official field I guess
|
||||
@@ -389,7 +389,7 @@ class BaseEfictionAdapter(BaseSiteAdapter):
|
||||
|
||||
## strip whitespace
|
||||
key = key.strip()
|
||||
valueStr = valueStr.strip()
|
||||
valueStr = stripHTML(valueStr)
|
||||
|
||||
self.handleMetadataPair(key, valueStr)
|
||||
|
||||
|
||||
@@ -43,7 +43,10 @@ def get_urls_from_page(url,configuration=None,normalize=False):
|
||||
if 'archiveofourown.org' in url:
|
||||
if adapter.getConfig("username"):
|
||||
if adapter.getConfig("is_adult"):
|
||||
addurl = "?view_adult=true"
|
||||
if '?' in url:
|
||||
addurl = "&view_adult=true"
|
||||
else:
|
||||
addurl = "?view_adult=true"
|
||||
else:
|
||||
addurl=""
|
||||
# just to get an authenticity_token.
|
||||
|
||||
@@ -552,6 +552,8 @@ class Story(Configurable):
|
||||
self.setMetadata('authorHTML',linkhtml%('author',self.getMetadata('authorUrl', removeallentities, doreplacements),
|
||||
self.getMetadata('author', removeallentities, doreplacements)))
|
||||
|
||||
self.extendList("extratags",self.getConfigList("extratags"))
|
||||
|
||||
if self.getMetadataRaw('seriesUrl'):
|
||||
self.setMetadata('seriesHTML',linkhtml%('series',self.getMetadata('seriesUrl', removeallentities, doreplacements),
|
||||
self.getMetadata('series', removeallentities, doreplacements)))
|
||||
|
||||
+6
-10
@@ -60,17 +60,13 @@
|
||||
</p>
|
||||
<p>
|
||||
<ul>
|
||||
<li>New site bdsm-geschichten.net, thanks John Doe.</li>
|
||||
<li>New site: sheppardweir.com, thanks scout78.</li>
|
||||
<li>New eFiction base adapter courtesy of John Doe. This should make it easier for new developers to add eFiction type sites. But it doesn't support all type of metadata.</li>
|
||||
<li>New site using eFiction base adapter: fannation.shades-of-moonlight.com, thanks John Doe.</li>
|
||||
<li>New site using eFiction base adapter: themaplebookshelf.com, thanks John Doe.</li>
|
||||
<li>Fix numChapters in adapter_literotica.py.</li>
|
||||
<li>Fixes for nhamagicalworldsus changes.</li>
|
||||
<li>Fix for changes to fanfiktion.de.</li>
|
||||
<li>Fix to clear existing data when re-downloading a story again. Occasionally caused problems.
|
||||
<li>New Site: lotrfanfiction.com</li>
|
||||
<li>New Site: csi-forensics.com, thanks scout78.</li>
|
||||
<li>New Site: samandjack.net, thanks scout78.</li>
|
||||
<li>Fixes for sheppardweir.com, thanks scout78.</li>
|
||||
<li>Known issue: Password protected FimFiction.net stories aren't working. FimF changed API access.</li>
|
||||
<li>Known issue: Specific metadata 'eroticatags' for literotica.com doesn't work on all stories.</li>
|
||||
<li>Known issue: Metadata collection is not as complete for 'Base eFiction' adapters.</li>
|
||||
</ul>
|
||||
</p>
|
||||
<p>
|
||||
@@ -81,7 +77,7 @@
|
||||
If you have any problems with this application, please
|
||||
report them in
|
||||
the <a href="http://groups.google.com/group/fanfic-downloader">FanFictionDownLoader Google Group</a>. The
|
||||
<a href="http://2-0-03.fanfictiondownloader.appspot.com">Previous Version</a> is also available for you to use if necessary.
|
||||
<a href="http://2-0-05.fanfictiondownloader.appspot.com">Previous Version</a> is also available for you to use if necessary.
|
||||
</p>
|
||||
<div id='error'>
|
||||
{{ error_message }}
|
||||
|
||||
+62
-2
@@ -688,6 +688,20 @@ extracategories:Castle
|
||||
## cover image. This lets you exclude them.
|
||||
cover_exclusion_regexp:/images/.*?ribbon.gif
|
||||
|
||||
[csi-forensics.com]
|
||||
## Some sites also require the user to confirm they are adult for
|
||||
## adult content. In commandline version, this should go in your
|
||||
## personal.ini, not defaults.ini.
|
||||
#is_adult:true
|
||||
|
||||
## Virtually all eFiction-based sites allow downloading the whole story in
|
||||
## bulk using the 'Print' feature. If 'bulk_load' is set to 'true', both
|
||||
## metadata and chapters can be loaded in one step
|
||||
bulk_load:true
|
||||
|
||||
extra_valid_entries: readings
|
||||
readings_label: Readings
|
||||
|
||||
[dark-solace.org]
|
||||
## Site dedicated to these categories/characters/ships
|
||||
## Some sites require login (or login for some rated stories) The
|
||||
@@ -896,7 +910,6 @@ extra_titlepage_entries: readings,romance
|
||||
readings_label: Readings
|
||||
romance_label: Romance
|
||||
|
||||
|
||||
[ficwad.com]
|
||||
## Some sites require login (or login for some rated stories) The
|
||||
## program can prompt you, or you can save it in config. In
|
||||
@@ -1026,6 +1039,18 @@ extra_valid_entries:eroticatags
|
||||
eroticatags_label:Erotica Tags
|
||||
extra_titlepage_entries: eroticatags
|
||||
|
||||
[lotrfanfiction.com]
|
||||
## Virtually all eFiction-based sites allow downloading the whole story in
|
||||
## bulk using the 'Print' feature. If 'bulk_load' is set to 'true', both
|
||||
## metadata and chapters can be loaded in one step
|
||||
bulk_load:true
|
||||
|
||||
extra_valid_entries: readings
|
||||
readings_label: Readings
|
||||
|
||||
## Site dedicated to these categories/characters/ships
|
||||
extracategories:Lord of the Rings
|
||||
|
||||
[lumos.sycophanthex.com]
|
||||
## Some sites do not require a login, but do require the user to
|
||||
## confirm they are adult for adult content. In commandline version,
|
||||
@@ -1148,6 +1173,24 @@ extracategories:My Little Pony: Friendship is Magic
|
||||
## Site dedicated to these categories/characters/ships
|
||||
extracategories:The Pretender
|
||||
|
||||
[samandjack.net]
|
||||
## Some sites require login (or login for some rated stories) The
|
||||
## program can prompt you, or you can save it in config. In
|
||||
## commandline version, this should go in your personal.ini, not
|
||||
## defaults.ini.
|
||||
#username:YourName
|
||||
#password:yourpassword
|
||||
|
||||
## Some sites also require the user to confirm they are adult for
|
||||
## adult content. In commandline version, this should go in your
|
||||
## personal.ini, not defaults.ini.
|
||||
#is_adult:true
|
||||
|
||||
## Site dedicated to these categories/characters/ships
|
||||
extracategories:Stargate: SG-1
|
||||
extracharacters:Sam,Jack
|
||||
extraships:Sam/Jack
|
||||
|
||||
[samdean.archive.nu]
|
||||
## Site dedicated to these categories/characters/ships
|
||||
extracategories:Supernatural
|
||||
@@ -1176,6 +1219,24 @@ extracategories:Harry Potter
|
||||
## this should go in your personal.ini, not defaults.ini.
|
||||
#is_adult:true
|
||||
|
||||
[sheppardweir.com]
|
||||
## Some sites require login (or login for some rated stories) The
|
||||
## program can prompt you, or you can save it in config. In
|
||||
## commandline version, this should go in your personal.ini, not
|
||||
## defaults.ini.
|
||||
#username:YourName
|
||||
#password:yourpassword
|
||||
|
||||
## Some sites also require the user to confirm they are adult for
|
||||
## adult content. In commandline version, this should go in your
|
||||
## personal.ini, not defaults.ini.
|
||||
#is_adult:true
|
||||
|
||||
## Site dedicated to these categories/characters/ships
|
||||
extracategories:Stargate: Atlantis
|
||||
extracharacters:John Sheppard,Elizabeth Weir
|
||||
extraships:John Sheppard/Elizabeth Weir
|
||||
|
||||
[spikeluver.com]
|
||||
## Extra metadata that this adapter knows about. See [dramione.org]
|
||||
## for examples of how to use them.
|
||||
@@ -1341,7 +1402,6 @@ readings_label:Readings
|
||||
|
||||
cover_exclusion_regexp:art/.*Awards.jpg
|
||||
|
||||
|
||||
[voracity2.e-fic.com]
|
||||
## Extra metadata that this adapter knows about. See [dramione.org]
|
||||
## for examples of how to use them.
|
||||
|
||||
Reference in New Issue
Block a user