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
45ff9394
Commit
45ff9394
authored
Aug 23, 2020
by
OzzieIsaacs
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix comma separated author names during for upload
parent
282859bc
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
38 additions
and
23 deletions
+38
-23
epub.py
cps/epub.py
+3
-2
helper.py
cps/helper.py
+35
-21
No files found.
cps/epub.py
View file @
45ff9394
...
...
@@ -22,6 +22,7 @@ import zipfile
from
lxml
import
etree
from
.
import
isoLanguages
from
.helper
import
split_authors
from
.constants
import
BookMeta
...
...
@@ -64,9 +65,9 @@ def get_epub_info(tmp_file_path, original_file_name, original_file_extension):
tmp
=
p
.
xpath
(
'dc:
%
s/text()'
%
s
,
namespaces
=
ns
)
if
len
(
tmp
)
>
0
:
if
s
==
'creator'
:
epub_metadata
[
s
]
=
' & '
.
join
(
p
.
xpath
(
'dc:
%
s/text()'
%
s
,
namespaces
=
ns
))
epub_metadata
[
s
]
=
' & '
.
join
(
split_authors
(
p
.
xpath
(
'dc:
%
s/text()'
%
s
,
namespaces
=
ns
)
))
elif
s
==
'subject'
:
epub_metadata
[
s
]
=
', '
.
join
(
p
.
xpath
(
'dc:
%
s/text()'
%
s
,
namespaces
=
ns
))
epub_metadata
[
s
]
=
', '
.
join
(
p
.
xpath
(
'dc:
%
s/text()'
%
s
,
namespaces
=
ns
))
else
:
epub_metadata
[
s
]
=
p
.
xpath
(
'dc:
%
s/text()'
%
s
,
namespaces
=
ns
)[
0
]
else
:
...
...
cps/helper.py
View file @
45ff9394
...
...
@@ -21,7 +21,6 @@ from __future__ import division, print_function, unicode_literals
import
sys
import
os
import
io
import
json
import
mimetypes
import
re
import
shutil
...
...
@@ -36,7 +35,7 @@ from babel.units import format_unit
from
flask
import
send_from_directory
,
make_response
,
redirect
,
abort
from
flask_babel
import
gettext
as
_
from
flask_login
import
current_user
from
sqlalchemy.sql.expression
import
true
,
false
,
and_
,
or_
,
text
,
func
from
sqlalchemy.sql.expression
import
true
,
false
,
and_
,
text
,
func
from
werkzeug.datastructures
import
Headers
from
werkzeug.security
import
generate_password_hash
from
.
import
calibre_db
...
...
@@ -59,10 +58,9 @@ try:
except
ImportError
:
use_PIL
=
False
from
.
import
logger
,
config
,
get_locale
,
db
,
ub
,
isoLanguages
,
worker
from
.
import
logger
,
config
,
get_locale
,
db
,
ub
,
worker
from
.
import
gdriveutils
as
gd
from
.constants
import
STATIC_DIR
as
_STATIC_DIR
from
.pagination
import
Pagination
from
.subproc_wrapper
import
process_wait
from
.worker
import
STAT_WAITING
,
STAT_FAIL
,
STAT_STARTED
,
STAT_FINISH_SUCCESS
from
.worker
import
TASK_EMAIL
,
TASK_CONVERT
,
TASK_UPLOAD
,
TASK_CONVERT_ANY
...
...
@@ -100,10 +98,10 @@ def convert_book_format(book_id, calibrepath, old_book_format, new_book_format,
# text = _(u"%(format)s: %(book)s", format=new_book_format, book=book.title)
else
:
settings
=
dict
()
t
e
xt
=
(
u"
%
s ->
%
s:
%
s"
%
(
old_book_format
,
new_book_format
,
book
.
title
))
txt
=
(
u"
%
s ->
%
s:
%
s"
%
(
old_book_format
,
new_book_format
,
book
.
title
))
settings
[
'old_book_format'
]
=
old_book_format
settings
[
'new_book_format'
]
=
new_book_format
worker
.
add_convert
(
file_path
,
book
.
id
,
user_id
,
t
e
xt
,
settings
,
kindle_mail
)
worker
.
add_convert
(
file_path
,
book
.
id
,
user_id
,
txt
,
settings
,
kindle_mail
)
return
None
else
:
error_message
=
_
(
u"
%(format)
s not found:
%(fn)
s"
,
...
...
@@ -263,6 +261,22 @@ def get_valid_filename(value, replace_whitespace=True):
return
value
.
decode
(
'utf-8'
)
def
split_authors
(
values
):
authors_list
=
[]
for
value
in
values
:
authors
=
re
.
split
(
'[&;]'
,
value
)
for
author
in
authors
:
commas
=
author
.
count
(
','
)
if
commas
==
1
:
author_split
=
author
.
split
(
','
)
authors_list
.
append
(
author_split
[
1
]
+
' '
+
author_split
[
0
])
elif
commas
>
1
:
authors_list
.
append
(
author
.
split
(
','
))
else
:
authors_list
.
append
(
author
)
return
authors_list
def
get_sorted_author
(
value
):
try
:
if
','
not
in
value
:
...
...
@@ -303,8 +317,8 @@ def delete_book_file(book, calibrepath, book_format=None):
log
.
warning
(
"Deleting book {} failed, path {} has subfolders: {}"
.
format
(
book
.
id
,
book
.
path
,
folders
))
return
True
,
_
(
"Deleting bookfolder for book
%(id)
s failed, path has subfolders:
%(path)
s"
,
id
=
book
.
id
,
path
=
book
.
path
)
id
=
book
.
id
,
path
=
book
.
path
)
shutil
.
rmtree
(
path
)
except
(
IOError
,
OSError
)
as
e
:
log
.
error
(
"Deleting book
%
s failed:
%
s"
,
book
.
id
,
e
)
...
...
@@ -319,8 +333,8 @@ def delete_book_file(book, calibrepath, book_format=None):
else
:
log
.
error
(
"Deleting book
%
s failed, book path not valid:
%
s"
,
book
.
id
,
book
.
path
)
return
True
,
_
(
"Deleting book
%(id)
s, book path not valid:
%(path)
s"
,
id
=
book
.
id
,
path
=
book
.
path
)
id
=
book
.
id
,
path
=
book
.
path
)
def
update_dir_structure_file
(
book_id
,
calibrepath
,
first_author
):
...
...
@@ -366,6 +380,7 @@ def update_dir_structure_file(book_id, calibrepath, first_author):
src
=
path
,
dest
=
new_author_path
,
error
=
str
(
ex
))
# Rename all files from old names to new names
if
authordir
!=
new_authordir
or
titledir
!=
new_titledir
:
new_name
=
""
try
:
new_name
=
get_valid_filename
(
localbook
.
title
)
+
' - '
+
get_valid_filename
(
new_authordir
)
path_name
=
os
.
path
.
join
(
calibrepath
,
new_authordir
,
os
.
path
.
basename
(
path
))
...
...
@@ -474,14 +489,14 @@ def generate_random_password():
return
""
.
join
(
s
[
c
%
len
(
s
)]
for
c
in
os
.
urandom
(
passlen
))
def
uniq
(
inp
u
t
):
output
=
[]
for
x
in
inpu
t
:
if
x
not
in
output
:
output
.
append
(
x
)
return
output
def
uniq
(
inpt
):
output
=
[]
for
x
in
inp
t
:
if
x
not
in
output
:
output
.
append
(
x
)
return
output
#
################################# External interface
#
################################# External interface #################################
def
update_dir_stucture
(
book_id
,
calibrepath
,
first_author
=
None
):
...
...
@@ -558,7 +573,6 @@ def save_cover_from_url(url, book_path):
return
False
,
_
(
"Cover Format Error"
)
def
save_cover_from_filestorage
(
filepath
,
saved_filename
,
img
):
if
hasattr
(
img
,
'_content'
):
f
=
open
(
os
.
path
.
join
(
filepath
,
saved_filename
),
"wb"
)
...
...
@@ -617,7 +631,6 @@ def save_cover(img, book_path):
return
save_cover_from_filestorage
(
os
.
path
.
join
(
config
.
config_calibre_dir
,
book_path
),
"cover.jpg"
,
img
)
def
do_download_file
(
book
,
book_format
,
client
,
data
,
headers
):
if
config
.
config_use_google_drive
:
startTime
=
time
.
time
()
...
...
@@ -718,7 +731,7 @@ def render_task_status(tasklist):
task
[
'runtime'
]
=
format_runtime
(
task
[
'formRuntime'
])
# localize the task status
if
isinstance
(
task
[
'stat'
],
int
):
if
isinstance
(
task
[
'stat'
],
int
):
if
task
[
'stat'
]
==
STAT_WAITING
:
task
[
'status'
]
=
_
(
u'Waiting'
)
elif
task
[
'stat'
]
==
STAT_FAIL
:
...
...
@@ -731,7 +744,7 @@ def render_task_status(tasklist):
task
[
'status'
]
=
_
(
u'Unknown Status'
)
# localize the task type
if
isinstance
(
task
[
'taskType'
],
int
):
if
isinstance
(
task
[
'taskType'
],
int
):
if
task
[
'taskType'
]
==
TASK_EMAIL
:
task
[
'taskMessage'
]
=
_
(
u'E-mail: '
)
+
task
[
'taskMess'
]
elif
task
[
'taskType'
]
==
TASK_CONVERT
:
...
...
@@ -787,6 +800,7 @@ def get_cc_columns(filter_config_custom_read=False):
return
cc
def
get_download_link
(
book_id
,
book_format
,
client
):
book_format
=
book_format
.
split
(
"."
)[
0
]
book
=
calibre_db
.
get_filtered_book
(
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