Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
D
douban-api-proxy
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
captainwong
douban-api-proxy
Commits
6d687a51
Commit
6d687a51
authored
Mar 04, 2017
by
林檎
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'refactor/patch-bookmeta-20170304' into travis
parents
622a2fc4
a850e64b
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
35 additions
and
42 deletions
+35
-42
book_formats.py
cps/book_formats.py
+0
-2
epub.py
cps/epub.py
+33
-38
uploader.py
cps/uploader.py
+1
-1
web.py
cps/web.py
+1
-1
No files found.
cps/book_formats.py
View file @
6d687a51
...
@@ -64,7 +64,6 @@ def default_meta(tmp_file_path, original_file_name, original_file_extension):
...
@@ -64,7 +64,6 @@ def default_meta(tmp_file_path, original_file_name, original_file_extension):
tags
=
""
,
tags
=
""
,
series
=
""
,
series
=
""
,
series_id
=
""
,
series_id
=
""
,
comments
=
""
,
languages
=
""
)
languages
=
""
)
...
@@ -94,7 +93,6 @@ def pdf_meta(tmp_file_path, original_file_name, original_file_extension):
...
@@ -94,7 +93,6 @@ def pdf_meta(tmp_file_path, original_file_name, original_file_extension):
tags
=
""
,
tags
=
""
,
series
=
""
,
series
=
""
,
series_id
=
""
,
series_id
=
""
,
comments
=
""
,
languages
=
""
)
languages
=
""
)
...
...
cps/epub.py
View file @
6d687a51
...
@@ -41,57 +41,53 @@ def get_epub_info(tmp_file_path, original_file_name, original_file_extension):
...
@@ -41,57 +41,53 @@ def get_epub_info(tmp_file_path, original_file_name, original_file_extension):
p
=
tree
.
xpath
(
'/pkg:package/pkg:metadata'
,
namespaces
=
ns
)[
0
]
p
=
tree
.
xpath
(
'/pkg:package/pkg:metadata'
,
namespaces
=
ns
)[
0
]
epub_metadata
=
{}
epub_metadata
=
{}
try
:
#maybe description isn't present
comments
=
tree
.
xpath
(
"//*[local-name() = 'description']/text()"
)[
0
]
epub_metadata
[
'comments'
]
=
comments
except
:
epub_metadata
[
'comments'
]
=
""
for
s
in
[
'title'
,
'description'
,
'creator'
]:
for
s
in
[
'title'
,
'description'
,
'creator'
,
'language'
]:
tmp
=
p
.
xpath
(
'dc:
%
s/text()'
%
s
,
namespaces
=
ns
)
tmp
=
p
.
xpath
(
'dc:
%
s/text()'
%
s
,
namespaces
=
ns
)
if
len
(
tmp
)
>
0
:
if
len
(
tmp
)
>
0
:
epub_metadata
[
s
]
=
p
.
xpath
(
'dc:
%
s/text()'
%
s
,
namespaces
=
ns
)[
0
]
epub_metadata
[
s
]
=
p
.
xpath
(
'dc:
%
s/text()'
%
s
,
namespaces
=
ns
)[
0
]
else
:
else
:
epub_metadata
[
s
]
=
"Unknown"
epub_metadata
[
s
]
=
"Unknown"
#detect lang need futher modification in web.py /upload
try
:
#maybe dc:language isn't present, less possible but possible
if
epub_metadata
[
'description'
]
==
"Unknown"
:
lang
=
p
.
xpath
(
'dc:language/text()'
,
namespaces
=
ns
)[
0
]
description
=
tree
.
xpath
(
"//*[local-name() = 'description']/text()"
)
lang
=
lang
.
split
(
'-'
,
1
)[
0
]
if
len
(
description
)
>
0
:
lang
.
lower
()
epub_metadata
[
'description'
]
=
description
else
:
epub_metadata
[
'description'
]
=
""
if
epub_metadata
[
'language'
]
==
"Unknown"
:
epub_metadata
[
'language'
]
==
""
else
:
lang
=
epub_metadata
[
'language'
]
.
split
(
'-'
,
1
)[
0
]
.
lower
()
if
len
(
lang
)
==
2
:
if
len
(
lang
)
==
2
:
epub_metadata
[
'language
s
'
]
=
isoLanguages
.
get
(
part1
=
lang
)
.
name
epub_metadata
[
'language'
]
=
isoLanguages
.
get
(
part1
=
lang
)
.
name
elif
len
(
lang
)
==
3
:
elif
len
(
lang
)
==
3
:
epub_metadata
[
'language
s
'
]
=
isoLanguages
.
get
(
part3
=
lang
)
.
name
epub_metadata
[
'language'
]
=
isoLanguages
.
get
(
part3
=
lang
)
.
name
else
:
else
:
epub_metadata
[
'languages'
]
=
""
epub_metadata
[
'language'
]
=
""
except
:
epub_metadata
[
'languages'
]
=
""
coversection
=
tree
.
xpath
(
"/pkg:package/pkg:manifest/pkg:item[@id='cover-image']/@href"
,
namespaces
=
ns
)
coversection
=
tree
.
xpath
(
"/pkg:package/pkg:manifest/pkg:item[@id='cover-image']/@href"
,
namespaces
=
ns
)
coverfile
=
None
coverfile
=
None
if
len
(
coversection
)
>
0
:
if
len
(
coversection
)
>
0
:
coverfile
=
extractCover
(
zip
,
coversection
[
0
],
coverpath
,
tmp_file_path
)
coverfile
=
extractCover
(
zip
,
coversection
[
0
],
coverpath
,
tmp_file_path
)
else
:
else
:
coversection
=
tree
.
xpath
(
"/pkg:package/pkg:manifest/pkg:item[@id='cover']/@href"
,
namespaces
=
ns
)
meta_cover
=
tree
.
xpath
(
"/pkg:package/pkg:metadata/pkg:meta[@name='cover']/@content"
,
namespaces
=
ns
)
if
len
(
coversection
)
>
0
:
if
len
(
meta_cover
)
>
0
:
filetype
=
coversection
[
0
]
.
rsplit
(
'.'
,
1
)[
-
1
]
coversection
=
tree
.
xpath
(
"/pkg:package/pkg:manifest/pkg:item[@id='"
+
meta_cover
[
0
]
+
"']/@href"
,
namespaces
=
ns
)
if
filetype
==
"xhtml"
or
filetype
==
"html"
:
#if cover is (x)html format
if
len
(
coversection
)
>
0
:
markup
=
zip
.
read
(
os
.
path
.
join
(
coverpath
,
coversection
[
0
]))
filetype
=
coversection
[
0
]
.
rsplit
(
'.'
,
1
)[
-
1
]
markupTree
=
etree
.
fromstring
(
markup
)
if
filetype
==
"xhtml"
or
filetype
==
"html"
:
#if cover is (x)html format
#no matter xhtml or html with no namespace
markup
=
zip
.
read
(
os
.
path
.
join
(
coverpath
,
coversection
[
0
]))
imgsrc
=
markupTree
.
xpath
(
"//*[local-name() = 'img']/@src"
)
markupTree
=
etree
.
fromstring
(
markup
)
#imgsrc maybe startwith "../"" so fullpath join then relpath to cwd
#no matter xhtml or html with no namespace
filename
=
os
.
path
.
relpath
(
os
.
path
.
join
(
os
.
path
.
dirname
(
os
.
path
.
join
(
coverpath
,
coversection
[
0
])),
imgsrc
[
0
]))
imgsrc
=
markupTree
.
xpath
(
"//*[local-name() = 'img']/@src"
)
coverfile
=
extractCover
(
zip
,
filename
,
""
,
tmp_file_path
)
#imgsrc maybe startwith "../"" so fullpath join then relpath to cwd
else
:
filename
=
os
.
path
.
relpath
(
os
.
path
.
join
(
os
.
path
.
dirname
(
os
.
path
.
join
(
coverpath
,
coversection
[
0
])),
imgsrc
[
0
]))
coverfile
=
extractCover
(
zip
,
coversection
[
0
],
coverpath
,
tmp_file_path
)
coverfile
=
extractCover
(
zip
,
filename
,
""
,
tmp_file_path
)
else
:
else
:
meta_cover
=
tree
.
xpath
(
"/pkg:package/pkg:metadata/pkg:meta[@name='cover']/@content"
,
namespaces
=
ns
)
coverfile
=
extractCover
(
zip
,
coversection
[
0
],
coverpath
,
tmp_file_path
)
if
len
(
meta_cover
)
>
0
:
meta_cover_content
=
tree
.
xpath
(
"/pkg:package/pkg:manifest/pkg:item[@id='"
+
meta_cover
[
0
]
+
"']/@href"
,
namespaces
=
ns
)
if
len
(
meta_cover_content
)
>
0
:
coverfile
=
extractCover
(
zip
,
meta_cover_content
[
0
],
coverpath
,
tmp_file_path
)
if
epub_metadata
[
'title'
]
is
None
:
if
epub_metadata
[
'title'
]
is
None
:
title
=
original_file_name
title
=
original_file_name
else
:
else
:
...
@@ -107,5 +103,4 @@ def get_epub_info(tmp_file_path, original_file_name, original_file_extension):
...
@@ -107,5 +103,4 @@ def get_epub_info(tmp_file_path, original_file_name, original_file_extension):
tags
=
""
,
tags
=
""
,
series
=
""
,
series
=
""
,
series_id
=
""
,
series_id
=
""
,
comments
=
epub_metadata
[
'comments'
],
languages
=
epub_metadata
[
'language'
])
languages
=
epub_metadata
[
'languages'
])
cps/uploader.py
View file @
6d687a51
...
@@ -7,7 +7,7 @@ import hashlib
...
@@ -7,7 +7,7 @@ import hashlib
from
collections
import
namedtuple
from
collections
import
namedtuple
import
book_formats
import
book_formats
BookMeta
=
namedtuple
(
'BookMeta'
,
'file_path, extension, title, author, cover, description, tags, series, series_id,
comments,
languages'
)
BookMeta
=
namedtuple
(
'BookMeta'
,
'file_path, extension, title, author, cover, description, tags, series, series_id, languages'
)
"""
"""
:rtype: BookMeta
:rtype: BookMeta
...
...
cps/web.py
View file @
6d687a51
...
@@ -2234,7 +2234,7 @@ def upload():
...
@@ -2234,7 +2234,7 @@ def upload():
db
.
session
.
add
(
db_book
)
db
.
session
.
add
(
db_book
)
db
.
session
.
flush
()
# flush content get db_book.id avalible
db
.
session
.
flush
()
# flush content get db_book.id avalible
#add comment
#add comment
upload_comment
=
Markup
(
meta
.
comments
)
.
unescape
()
upload_comment
=
Markup
(
meta
.
description
)
.
unescape
()
db_comment
=
None
db_comment
=
None
if
upload_comment
!=
""
:
if
upload_comment
!=
""
:
db_comment
=
db
.
Comments
(
upload_comment
,
db_book
.
id
)
db_comment
=
db
.
Comments
(
upload_comment
,
db_book
.
id
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment