1# -*- coding: utf-8 -*- 2 3 4__license__ = 'GPL v3' 5__copyright__ = '2009, John Schember <john@nachtimwald.com>' 6 7''' 8Read meta information from TXT files 9''' 10 11import re, os 12 13from calibre.ebooks.metadata import MetaInformation 14 15 16def get_metadata(stream, extract_cover=True): 17 ''' 18 Return metadata as a L{MetaInfo} object 19 ''' 20 name = getattr(stream, 'name', '').rpartition('.')[0] 21 if name: 22 name = os.path.basename(name) 23 mi = MetaInformation(name or _('Unknown'), [_('Unknown')]) 24 stream.seek(0) 25 26 mdata = '' 27 for x in range(0, 4): 28 line = stream.readline().decode('utf-8', 'replace') 29 if not line: 30 break 31 else: 32 mdata += line 33 34 mdata = mdata[:1024] 35 36 mo = re.search('(?u)^[ ]*(?P<title>.+)[ ]*(\n{3}|(\r\n){3}|\r{3})[ ]*(?P<author>.+)[ ]*(\n|\r\n|\r)$', mdata) 37 if mo is not None: 38 mi.title = mo.group('title') 39 mi.authors = mo.group('author').split(',') 40 41 return mi 42