Merged upstream changes

This commit is contained in:
Marshall T. Vandegrift 2008-07-22 00:02:09 -04:00
commit 7d8b8942e7
8 changed files with 97 additions and 28 deletions

View File

@ -5,6 +5,7 @@ import os, sys, shutil, glob, logging
from tempfile import mkdtemp
from subprocess import Popen, PIPE
from calibre.ebooks.lrf import option_parser as lrf_option_parser
from calibre.ebooks.lit.reader import LitReader
from calibre.ebooks import ConversionError
from calibre.ebooks.lrf.html.convert_from import process_file as html_process_file
from calibre.ebooks.metadata.opf import OPFReader
@ -17,12 +18,24 @@ if islinux and getattr(sys, 'frozen_path', False):
CLIT = os.path.join(getattr(sys, 'frozen_path'), 'clit')
def option_parser():
return lrf_option_parser(
parser = lrf_option_parser(
_('''Usage: %prog [options] mybook.lit
%prog converts mybook.lit to mybook.lrf''')
)
parser.add_option('--lit2oeb', default=False, dest='lit2oeb', action='store_true',
help='Use the new lit2oeb to convert lit files instead of convertlit.')
return parser
def generate_html2(pathtolit, logger):
if not os.access(pathtolit, os.R_OK):
raise ConversionError, 'Cannot read from ' + pathtolit
tdir = mkdtemp(prefix=__appname__+'_')
lr = LitReader(pathtolit)
print 'Extracting LIT file to', tdir
lr.extract_content(tdir)
return tdir
def generate_html(pathtolit, logger):
if not os.access(pathtolit, os.R_OK):
@ -51,7 +64,7 @@ def process_file(path, options, logger=None):
logger = logging.getLogger('lit2lrf')
setup_cli_handlers(logger, level)
lit = os.path.abspath(os.path.expanduser(path))
tdir = generate_html(lit, logger)
tdir = generate_html2(lit, logger) if options.lit2oeb else generate_html(lit, logger)
try:
opf = glob.glob(os.path.join(tdir, '*.opf'))
if opf:

View File

@ -19,7 +19,7 @@ from calibre.ebooks.metadata.meta import get_metadata
from calibre.ebooks.metadata.opf import OPFCreator, OPFReader
from calibre.library.database import LibraryDatabase, text_to_tokens
FIELDS = set(['title', 'authors', 'publisher', 'rating', 'timestamp', 'size', 'tags', 'comments', 'series', 'series_index', 'formats'])
FIELDS = set(['title', 'authors', 'publisher', 'rating', 'timestamp', 'size', 'tags', 'comments', 'series', 'series_index', 'formats', 'isbn'])
def get_parser(usage):
parser = OptionParser(usage)

View File

@ -755,6 +755,31 @@ ALTER TABLE books ADD COLUMN isbn TEXT DEFAULT "" COLLATE NOCASE;
conn.execute('pragma user_version=11')
conn.commit()
@staticmethod
def upgrade_version11(conn):
conn.executescript(
'''
/***** Add isbn column to meta view ******/
DROP VIEW meta;
CREATE VIEW meta AS
SELECT id, title,
(SELECT concat(name) FROM authors WHERE authors.id IN (SELECT author from books_authors_link WHERE book=books.id)) authors,
(SELECT name FROM publishers WHERE publishers.id IN (SELECT publisher from books_publishers_link WHERE book=books.id)) publisher,
(SELECT rating FROM ratings WHERE ratings.id IN (SELECT rating from books_ratings_link WHERE book=books.id)) rating,
timestamp,
(SELECT MAX(uncompressed_size) FROM data WHERE book=books.id) size,
(SELECT concat(name) FROM tags WHERE tags.id IN (SELECT tag from books_tags_link WHERE book=books.id)) tags,
(SELECT text FROM comments WHERE book=books.id) comments,
(SELECT name FROM series WHERE series.id IN (SELECT series FROM books_series_link WHERE book=books.id)) series,
series_index,
sort,
author_sort,
(SELECT concat(format) FROM data WHERE data.book=books.id) formats,
isbn
FROM books;
''')
conn.execute('pragma user_version=12')
conn.commit()
def __init__(self, dbpath, row_factory=False):
self.dbpath = dbpath

View File

@ -70,8 +70,22 @@ def import_from_launchpad(url):
open(out, 'wb').write(tf.extractfile(next).read())
next = tf.next()
check_for_critical_bugs()
return 0
def check_for_critical_bugs():
if os.path.exists('.errors'):
shutil.rmtree('.errors')
pofilter = ('pofilter', '-i', '.', '-o', '.errors',
'-t', 'accelerators', '-t', 'escapes', '-t', 'variables',
'-t', 'xmltags')
subprocess.check_call(pofilter)
errs = os.listdir('.errors')
if errs:
print 'WARNING: Translation errors detected'
print 'See the .errors directory and http://translate.sourceforge.net/wiki/toolkit/using_pofilter'
def main(args=sys.argv):
if len(args) > 1:
if args[1] == 'pot':

View File

@ -426,6 +426,7 @@ msgstr ""
"Expressión regular utilizada para detectar los títulos de los capítulos. "
"Busca las marcas de encabezado (h1-h6). Por defecto: %default"
# (pofilter) escapes: escapes in original ('"h\d,class,chapter".') don't match escapes in translation ()
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/__init__.py:165
msgid ""
"Detect a chapter beginning at an element having the specified attribute. The "
@ -437,7 +438,7 @@ msgstr ""
"especificado. El formato para ésta espresión es tagname regexp, nombre del "
"atributo, valor del atributo regexp. Por ejemplo, para encontrar todas las "
"etiquetas de cabecera que tienen como attribute class=\"capítulo\" podría "
"usar: \"h/d,class,capítulo\". El valor por defecto es: %default"
"usar: \"h\\d,class,capítulo\". El valor por defecto es: %default"
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/__init__.py:167
msgid ""
@ -2111,6 +2112,7 @@ msgstr "&Compartir receta"
msgid "&Load recipe from file"
msgstr "&Cargar receta desde un archivo"
# (pofilter) xmltags: checks that XML/HTML tags have not been translated
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:215
msgid ""
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style "
@ -2124,16 +2126,15 @@ msgid ""
"use the \"Advanced mode\" to further customize the fetch "
"process.</p></body></html>"
msgstr ""
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style "
"type=\"text/css\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:'DejaVu Sans'; font-size:10pt; "
"font-weight:400; font-style:normal;\">\n"
"<p style=\" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-"
"right:0px; -qt-block-indent:0; text-indent:0px;\">Crear una receta de "
"noticias básica, añadiendo un RSS Feed. Para la mayoría de los feeds, "
"necesitará utilizar el \"modo avanzado\" para una configuración mas "
"detallada del proceso de adquisición de los datos</p></body></html>"
"noticias básica, añadiendo un RSS Feed. <br /> Para la mayoría de los feeds, "
"necesitará utilizar el \"modo avanzado\" para una configuración mas detallada "
"del proceso de adquisición de los datos</p></body></html>"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:219
msgid "Recipe &title:"
@ -2253,9 +2254,10 @@ msgstr "Ninguna coincidencia"
msgid "Authors:"
msgstr "Autores:"
# (pofilter) xmltags: checks that XML/HTML tags have not been translated
#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:106
msgid "Regular expression group name (?P<authors>)"
msgstr "Nombre de grupo de expresión regular (?P<authos>)"
msgstr "Nombre de grupo de expresión regular (?P<authors>)"
#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:108
msgid "Series:"
@ -2348,9 +2350,10 @@ msgstr "Formatos"
msgid "Book <font face=\"serif\">%s</font> of %s."
msgstr "Libro <font face=\"serif\">%s</font> de %s."
# (pofilter) xmltags: checks that XML/HTML tags have not been translated
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:396
msgid "Double click to <b>edit</b> me<br><br>"
msgstr "Doble click para <b>editarme</b>"
msgstr "Doble click para <b>editarme</b><br><br>"
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:406
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:757
@ -2898,14 +2901,15 @@ msgstr "ERROR: Excepción no Contemplada"
msgid "Add a custom news source"
msgstr "Añadir nueva fuente de noticias"
# (pofilter) xmltags: checks that XML/HTML tags have not been translated
#: /home/kovid/work/calibre/src/calibre/gui2/news.py:53
msgid ""
"<p>Please enter your username and password for %s<br>If you do not have one, "
"please subscribe to get access to the articles.<br/> Click OK to proceed."
msgstr ""
"<p>Por favor, introduzca el nombre de usuario y contraseña para %s<br/> Si "
"no tiene uno, por favor dese de alta para obtener acceso a los "
"artículos.<br/> Haga click en OK para continuar."
"<p>Por favor, introduzca el nombre de usuario y contraseña para %s<br> Si no "
"tiene uno, por favor dese de alta para obtener acceso a los artículos.<br/> "
"Haga click en OK para continuar."
#: /home/kovid/work/calibre/src/calibre/gui2/news.py:79
msgid "Custom news sources"

View File

@ -1481,6 +1481,7 @@ msgstr "Cambia l'editore di questo libro"
msgid "Ta&gs: "
msgstr "T&ag: "
# (pofilter) xmltags: checks that XML/HTML tags have not been translated
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/lrf_single_ui.py:524
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:127
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:271
@ -1489,7 +1490,7 @@ msgid ""
"<br><br>They can be any words or phrases, separated by commas."
msgstr ""
"I tag categorizzano un libro. Questo è particolarmente utile durante le "
"ricerche. <br>Possono essere qualsiasi parola o frase, separati da una "
"ricerche. <br><br>Possono essere qualsiasi parola o frase, separati da una "
"virgola"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/lrf_single_ui.py:525
@ -2143,6 +2144,7 @@ msgstr ""
msgid "Recipe source code (python)"
msgstr "Codice sorgente formula (python)"
# (pofilter) xmltags: checks that XML/HTML tags have not been translated
#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:97
msgid ""
"<p>Set a regular expression pattern to use when trying to guess ebook "
@ -2154,7 +2156,7 @@ msgstr ""
"<p>Impostare un modello di espressione regolare da usare nel tentativo di "
"indovinare i metadati dei libri dal nome del file. <p>È disponibile un <a "
"href=\"http://docs.python.org/lib/re-syntax.html\">riferimento</a> sulla "
"sintassi delle espressioni regolari. Usare la funzionalità <b>Test</b> "
"sintassi delle espressioni regolari.<p> Usare la funzionalità <b>Test</b> "
"sottostante per testare le proprie espressioni regolari su una serie di nomi "
"di file di esempio."
@ -2294,9 +2296,10 @@ msgstr "Formati"
msgid "Book <font face=\"serif\">%s</font> of %s."
msgstr "Libro <font face=\"serif\">%s</font> di %s"
# (pofilter) xmltags: checks that XML/HTML tags have not been translated
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:396
msgid "Double click to <b>edit</b> me<br><br>"
msgstr "Doppio clic per modificarmi"
msgstr "Doppio clic per <b>modificarmi</b><br><br>"
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:406
#: /home/kovid/work/calibre/src/calibre/gui2/library.py:757

View File

@ -332,6 +332,7 @@ msgstr ""
"De reguliere expressie die wordt gebruikt om hoofdstukken te herkennen. Deze "
"wordt gezocht in 'heading tags' (h1-h6). Standaard: %default"
# (pofilter) escapes: escapes in original ('"h\d,class,chapter".') don't match escapes in translation ('"h\d\klasse,hoofdstuk".')
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/__init__.py:165
msgid ""
"Detect a chapter beginning at an element having the specified attribute. The "
@ -342,8 +343,8 @@ msgstr ""
"vind het begin van een hoofdstuk bij een element met het gespecificeerde "
"attribuut. Het formaat voor deze optie is tagnaam regexp, attribuut naam, "
"attribuut waarde regexp. Bijvoorbeeld, om alle kop tags te vinden met de "
"attribuut klasse \"hoofstuk\", gebruik \"h\\d\\klasse,hoofdstuk\". Standaard "
"is %default"
"attribuut klasse \"hoofstuk\", gebruik \"h\\d,klasse,hoofdstuk\". Standaard is "
"%default"
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/__init__.py:167
msgid ""
@ -1307,10 +1308,11 @@ msgstr "Je hebt geen permissie om het bestand te lezen: "
msgid "Error reading file"
msgstr "Fout bij het lezen van bestand"
# (pofilter) xmltags: checks that XML/HTML tags have not been translated
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/lrf_single.py:183
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:53
msgid "<p>There was an error reading from file: <br /><b>"
msgstr "<p>Er is een fout opgetreden bij het lezen van bestand: <br></b>"
msgstr "<p>Er is een fout opgetreden bij het lezen van bestand: <br /><b>"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/lrf_single.py:189
msgid " is not a valid picture"
@ -1733,6 +1735,7 @@ msgid "Comma separated list of tags to remove from the books. "
msgstr ""
"Lijst van tags die moeten worden verwijderd, gescheiden met komma's. "
# (pofilter) xmltags: checks that XML/HTML tags have not been translated
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:235
msgid ""
"<p>Enter your username and password for <b>LibraryThing.com</b>. <br/>If you "
@ -1740,8 +1743,8 @@ msgid ""
"for free!.</p>"
msgstr ""
"<p>Geef uw gebruikersnaam en wachtwoord voor <b>LibraryThing.com</b>. "
"<br>Als u deze niet heeft, dan kunt u er gratis een krijgen door te <a "
"href='http://www.librarything.com'>registreren</a>"
"<br/>Als u deze niet heeft, dan kunt u er gratis een krijgen door te <a "
"href='http://www.librarything.com'>registreren</a>.</p>"
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:265
msgid "<b>Could not fetch cover.</b><br/>"
@ -2181,26 +2184,29 @@ msgstr "Geen overeenkomst"
msgid "Authors:"
msgstr "Auteurs:"
# (pofilter) xmltags: checks that XML/HTML tags have not been translated
#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:106
msgid "Regular expression group name (?P<authors>)"
msgstr "Reguliere expressie groep naam (?<auteurs>)"
msgstr "Reguliere expressie groep naam (?P<authors>)"
#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:108
msgid "Series:"
msgstr "Serie:"
# (pofilter) xmltags: checks that XML/HTML tags have not been translated
#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:109
msgid "Regular expression group name (?P<series>)"
msgstr "Reguliere expressie groep naam (?<serie>)"
msgstr "Reguliere expressie groep naam (?P<series>)"
#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:111
msgid "Series index:"
msgstr "Serie Index"
# (pofilter) xmltags: checks that XML/HTML tags have not been translated
#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:112
#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:115
msgid "Regular expression group name (?P<series_index>)"
msgstr "Reguliere expressie groep naam (?<serie_index>)"
msgstr "Reguliere expressie groep naam (?P<series_index>)"
#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:114
msgid "ISBN:"
@ -2825,13 +2831,14 @@ msgstr "FOUT: Niet-verwerkte uitzondering"
msgid "Add a custom news source"
msgstr "Voeg een persoonlijke nieuwsbron toe"
# (pofilter) xmltags: checks that XML/HTML tags have not been translated
#: /home/kovid/work/calibre/src/calibre/gui2/news.py:53
msgid ""
"<p>Please enter your username and password for %s<br>If you do not have one, "
"please subscribe to get access to the articles.<br/> Click OK to proceed."
msgstr ""
"<p>Voer uw gebruikersnaam en wachtwoord voor %s in.<br>Als u er geen geeft, "
"registreer dan om toegang tot de artikelen te krijgen.<br>Klik op OK om "
"registreer dan om toegang tot de artikelen te krijgen.<br/>Klik op OK om "
"verder te gaan."
#: /home/kovid/work/calibre/src/calibre/gui2/news.py:79
@ -3447,13 +3454,14 @@ msgstr ""
"Maximum aantal level om recursief te zoeken -- de diepte om links te volgen. "
"Standaard %default"
# (pofilter) xmltags: checks that XML/HTML tags have not been translated
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:394
msgid ""
"The maximum number of files to download. This only applies to files from <a "
"href> tags. Default is %default"
msgstr ""
"Het maximum aantal bestanden te downloaden. Dit is alleen van toepassing op "
"bestanden in <A HREF> tags. Standaard is %default"
"bestanden in <a href> tags. Standaard is %default"
#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:396
msgid ""

View File

@ -307,7 +307,9 @@ msgstr ""
"Устанавливать разрывы страниц после тегов, имена которых соответствуют этому "
"регулярному выражению."
# (pofilter) escapes: escapes in original ('"h\d,class,chapter".') don't match escapes in translation ()
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/__init__.py:179
#, fuzzy
msgid ""
"Force a page break before an element having the specified attribute. The "
"format for this option is tagname regexp,attribute name,attribute value "