mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Preserve tag order when reading metadata from MOBI files
This commit is contained in:
parent
4da23549bf
commit
67298f3c5a
@ -21,6 +21,14 @@ from polyglot.builtins import unicode_type
|
|||||||
NULL_INDEX = 0xffffffff
|
NULL_INDEX = 0xffffffff
|
||||||
|
|
||||||
|
|
||||||
|
def uniq(vals):
|
||||||
|
''' Remove all duplicates from vals, while preserving order. '''
|
||||||
|
vals = vals or ()
|
||||||
|
seen = set()
|
||||||
|
seen_add = seen.add
|
||||||
|
return list(x for x in vals if x not in seen and not seen_add(x))
|
||||||
|
|
||||||
|
|
||||||
class EXTHHeader(object): # {{{
|
class EXTHHeader(object): # {{{
|
||||||
|
|
||||||
def __init__(self, raw, codec, title):
|
def __init__(self, raw, codec, title):
|
||||||
@ -135,7 +143,7 @@ class EXTHHeader(object): # {{{
|
|||||||
if not self.mi.tags:
|
if not self.mi.tags:
|
||||||
self.mi.tags = []
|
self.mi.tags = []
|
||||||
self.mi.tags.extend([x.strip() for x in clean_xml_chars(self.decode(content)).split(';')])
|
self.mi.tags.extend([x.strip() for x in clean_xml_chars(self.decode(content)).split(';')])
|
||||||
self.mi.tags = list(set(self.mi.tags))
|
self.mi.tags = uniq(self.mi.tags)
|
||||||
elif idx == 106:
|
elif idx == 106:
|
||||||
try:
|
try:
|
||||||
self.mi.pubdate = parse_date(self.decode(content), as_utc=False)
|
self.mi.pubdate = parse_date(self.decode(content), as_utc=False)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user