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
8b5bd614
Commit
8b5bd614
authored
Jun 18, 2016
by
Pavel Yakunin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fb2 uploading
parent
43d60778
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
75 additions
and
2 deletions
+75
-2
book_formats.py
cps/book_formats.py
+11
-2
fb2.py
cps/fb2.py
+64
-0
No files found.
cps/book_formats.py
View file @
8b5bd614
...
@@ -22,16 +22,25 @@ try:
...
@@ -22,16 +22,25 @@ try:
import
epub
import
epub
use_epub_meta
=
True
use_epub_meta
=
True
except
ImportError
,
e
:
except
ImportError
,
e
:
logger
.
warning
(
'cannot import PyPDF2, extracting
pdf
metadata will not work:
%
s'
,
e
)
logger
.
warning
(
'cannot import PyPDF2, extracting
epub
metadata will not work:
%
s'
,
e
)
use_epub_meta
=
False
use_epub_meta
=
False
try
:
import
fb2
use_fb2_meta
=
True
except
ImportError
,
e
:
logger
.
warning
(
'cannot import lxml, extracting fb2 metadata will not work:
%
s'
,
e
)
use_fb2_meta
=
False
def
process
(
tmp_file_path
,
original_file_name
,
original_file_extension
):
def
process
(
tmp_file_path
,
original_file_name
,
original_file_extension
):
try
:
try
:
if
".PDF"
==
original_file_extension
.
upper
():
if
".PDF"
==
original_file_extension
.
upper
():
return
pdf_meta
(
tmp_file_path
,
original_file_name
,
original_file_extension
)
return
pdf_meta
(
tmp_file_path
,
original_file_name
,
original_file_extension
)
if
".EPUB"
==
original_file_extension
.
upper
()
and
use_
pdf
_meta
==
True
:
if
".EPUB"
==
original_file_extension
.
upper
()
and
use_
epub
_meta
==
True
:
return
epub
.
get_epub_info
(
tmp_file_path
,
original_file_name
,
original_file_extension
)
return
epub
.
get_epub_info
(
tmp_file_path
,
original_file_name
,
original_file_extension
)
if
".FB2"
==
original_file_extension
.
upper
()
and
use_fb2_meta
==
True
:
return
fb2
.
get_fb2_info
(
tmp_file_path
,
original_file_name
,
original_file_extension
)
except
Exception
,
e
:
except
Exception
,
e
:
logger
.
warning
(
'cannot parse metadata, using default:
%
s'
,
e
)
logger
.
warning
(
'cannot parse metadata, using default:
%
s'
,
e
)
...
...
cps/fb2.py
0 → 100644
View file @
8b5bd614
from
lxml
import
etree
import
os
import
uploader
def
get_fb2_info
(
tmp_file_path
,
original_file_name
,
original_file_extension
):
ns
=
{
'fb'
:
'http://www.gribuser.ru/xml/fictionbook/2.0'
,
'l'
:
'ttp://www.w3.org/1999/xlink'
,
}
fb2_file
=
open
(
tmp_file_path
)
tree
=
etree
.
fromstring
(
fb2_file
.
read
())
authors
=
tree
.
xpath
(
'/fb:FictionBook/fb:description/fb:title-info/fb:author'
,
namespaces
=
ns
)
def
get_author
(
element
):
return
element
.
xpath
(
'fb:first-name/text()'
,
namespaces
=
ns
)[
0
]
+
' '
+
element
.
xpath
(
'fb:middle-name/text()'
,
namespaces
=
ns
)[
0
]
+
' '
+
element
.
xpath
(
'fb:last-name/text()'
,
namespaces
=
ns
)[
0
]
author
=
", "
.
join
(
map
(
get_author
,
authors
))
title
=
unicode
(
tree
.
xpath
(
'/fb:FictionBook/fb:description/fb:title-info/fb:book-title/text()'
,
namespaces
=
ns
)[
0
])
description
=
unicode
(
tree
.
xpath
(
'/fb:FictionBook/fb:description/fb:publish-info/fb:book-name/text()'
,
namespaces
=
ns
)[
0
])
#
#
#
# cfname = tree.xpath('n:rootfiles/n:rootfile/@full-path',namespaces=ns)[0]
#
# cf = zip.read(cfname)
# tree = etree.fromstring(cf)
#
# p = tree.xpath('/pkg:package/pkg:metadata',namespaces=ns)[0]
#
# epub_metadata = {}
# for s in ['title', 'description', 'creator']:
# tmp = p.xpath('dc:%s/text()'%(s),namespaces=ns)
# if (len(tmp) > 0):
# epub_metadata[s] = p.xpath('dc:%s/text()'%(s),namespaces=ns)[0]
# else:
# epub_metadata[s] = "Unknown"
#
# coversection = tree.xpath("/pkg:package/pkg:manifest/pkg:item[@id='cover']/@href",namespaces=ns)
# if (len(coversection) > 0):
# coverfile = extractCover(zip, coversection[0], tmp_file_path)
# else:
# coverfile = None
# if epub_metadata['title'] is None:
# title = original_file_name
# else:
# title = epub_metadata['title']
#
#
return
uploader
.
BookMeta
(
file_path
=
tmp_file_path
,
extension
=
original_file_extension
,
title
=
title
,
author
=
author
,
cover
=
None
,
description
=
description
,
tags
=
""
,
series
=
""
,
series_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