From 87580e27ba9e270e1c104b32b9fdc6d0b41fd283 Mon Sep 17 00:00:00 2001 From: John Schember Date: Mon, 30 Mar 2009 19:03:49 -0400 Subject: [PATCH] TXT metadata reader --- src/calibre/customize/builtins.py | 10 ++++++++++ src/calibre/ebooks/metadata/txt.py | 30 ++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 src/calibre/ebooks/metadata/txt.py diff --git a/src/calibre/customize/builtins.py b/src/calibre/customize/builtins.py index d37e241891..2cbf036c1f 100644 --- a/src/calibre/customize/builtins.py +++ b/src/calibre/customize/builtins.py @@ -159,6 +159,16 @@ class ODTMetadataReader(MetadataReaderPlugin): def get_metadata(self, stream, ftype): from calibre.ebooks.metadata.odt import get_metadata return get_metadata(stream) + +class TXTMetadataReader(MetaReaderPlugin): + + name = 'Read TXT metadata' + file_types = set(['txt']) + description = _('Read metadata from %s files') % 'TXT' + + def get_metadata(self, stream, ftype): + from calibre.ebooks.metadata.txt import get_metadata + return get_metadata(stream) class LRXMetadataReader(MetadataReaderPlugin): diff --git a/src/calibre/ebooks/metadata/txt.py b/src/calibre/ebooks/metadata/txt.py new file mode 100644 index 0000000000..5a5ab13ae9 --- /dev/null +++ b/src/calibre/ebooks/metadata/txt.py @@ -0,0 +1,30 @@ +'''Read meta information from TXT files''' + +from __future__ import with_statement + +__license__ = 'GPL v3' +__copyright__ = '2009, John Schember ' + +import re + +from calibre.ebooks.metadata import MetaInformation + +def get_metadata(stream, extract_cover=True): + """ Return metadata as a L{MetaInfo} object """ + mi = MetaInformation(_('Unknown'), [_('Unknown')]) + stream.seek(0) + + mdata = '' + for x in range(0, 4): + line = stream.readline() + if line == '': + break + else: + mdata += line + + mo = re.search('(?u)^[ ]*(?P.+)[ ]*\n\n\n[ ]*(?P<author>.+)[ ]*\n$', mdata) + if mo != None: + mi.title = mo.group('title') + mi.authors = mo.group('author').split(',') + + return mi