fnp
/
librarian.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Epub: only attach images referenced in the text.
[librarian.git]
/
librarian
/
picture.py
diff --git
a/librarian/picture.py
b/librarian/picture.py
index
1aa1d07
..
10d2ae7
100644
(file)
--- a/
librarian/picture.py
+++ b/
librarian/picture.py
@@
-1,14
+1,16
@@
# -*- coding: utf-8 -*-
# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
from operator import and_
from operator import and_
-from dcparser import Field, WorkInfo, DCNS
+from
.
dcparser import Field, WorkInfo, DCNS
from librarian import (RDFNS, ValidationError, NoDublinCore, ParseError, WLURI)
from xml.parsers.expat import ExpatError
from os import path
from librarian import (RDFNS, ValidationError, NoDublinCore, ParseError, WLURI)
from xml.parsers.expat import ExpatError
from os import path
-from StringIO import StringIO
from lxml import etree
from lxml.etree import (XMLSyntaxError, XSLTApplyError, Element)
import re
from lxml import etree
from lxml.etree import (XMLSyntaxError, XSLTApplyError, Element)
import re
+import six
class WLPictureURI(WLURI):
class WLPictureURI(WLURI):
@@
-99,14
+101,14
@@
class WLPicture(object):
self.frame = None
@classmethod
self.frame = None
@classmethod
- def from_
string
(cls, xml, *args, **kwargs):
- return cls.from_file(
String
IO(xml), *args, **kwargs)
+ def from_
bytes
(cls, xml, *args, **kwargs):
+ return cls.from_file(
six.Bytes
IO(xml), *args, **kwargs)
@classmethod
def from_file(cls, xmlfile, parse_dublincore=True, image_store=None):
# first, prepare for parsing
@classmethod
def from_file(cls, xmlfile, parse_dublincore=True, image_store=None):
# first, prepare for parsing
- if isinstance(xmlfile,
basestring
):
+ if isinstance(xmlfile,
six.text_type
):
file = open(xmlfile, 'rb')
try:
data = file.read()
file = open(xmlfile, 'rb')
try:
data = file.read()
@@
-115,7
+117,7
@@
class WLPicture(object):
else:
data = xmlfile.read()
else:
data = xmlfile.read()
- if not isinstance(data,
unicod
e):
+ if not isinstance(data,
six.text_typ
e):
data = data.decode('utf-8')
data = data.replace(u'\ufeff', '')
data = data.decode('utf-8')
data = data.replace(u'\ufeff', '')
@@
-126,12
+128,12
@@
class WLPicture(object):
try:
parser = etree.XMLParser(remove_blank_text=False)
try:
parser = etree.XMLParser(remove_blank_text=False)
- tree = etree.parse(
String
IO(data.encode('utf-8')), parser)
+ tree = etree.parse(
six.Bytes
IO(data.encode('utf-8')), parser)
me = cls(tree, parse_dublincore=parse_dublincore, image_store=image_store)
me.load_frame_info()
return me
me = cls(tree, parse_dublincore=parse_dublincore, image_store=image_store)
me.load_frame_info()
return me
- except (ExpatError, XMLSyntaxError, XSLTApplyError)
,
e:
+ except (ExpatError, XMLSyntaxError, XSLTApplyError)
as
e:
raise ParseError(e)
@property
raise ParseError(e)
@property
@@
-152,7
+154,7
@@
class WLPicture(object):
return self.image_store.path(self.slug, self.mime_type)
def image_file(self, *args, **kwargs):
return self.image_store.path(self.slug, self.mime_type)
def image_file(self, *args, **kwargs):
- return open(self.image_path, *args, **kwargs)
+ return open(self.image_path,
'rb',
*args, **kwargs)
def get_sem_coords(self, sem):
area = sem.find("div[@type='rect']")
def get_sem_coords(self, sem):
area = sem.find("div[@type='rect']")
@@
-184,7
+186,7
@@
class WLPicture(object):
pd['coords'] = coords
def want_unicode(x):
pd['coords'] = coords
def want_unicode(x):
- if not isinstance(x,
unicod
e):
+ if not isinstance(x,
six.text_typ
e):
return x.decode('utf-8')
else:
return x
return x.decode('utf-8')
else:
return x