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
c3bec48b
Commit
c3bec48b
authored
Nov 03, 2018
by
Ozzieisaacs
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix #617
Additional texts translated
parent
c582a704
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
94 additions
and
142 deletions
+94
-142
helper.py
cps/helper.py
+42
-30
web.py
cps/web.py
+11
-74
worker.py
cps/worker.py
+41
-38
No files found.
cps/helper.py
View file @
c3bec48b
...
@@ -13,9 +13,10 @@ import unicodedata
...
@@ -13,9 +13,10 @@ import unicodedata
from
io
import
BytesIO
from
io
import
BytesIO
import
worker
import
worker
import
time
import
time
from
flask
import
send_from_directory
,
make_response
,
redirect
,
abort
from
flask
import
send_from_directory
,
make_response
,
redirect
,
abort
from
flask_babel
import
gettext
as
_
from
flask_babel
import
gettext
as
_
from
flask_login
import
current_user
from
babel.dates
import
format_datetime
import
threading
import
threading
import
shutil
import
shutil
import
requests
import
requests
...
@@ -73,10 +74,12 @@ def convert_book_format(book_id, calibrepath, old_book_format, new_book_format,
...
@@ -73,10 +74,12 @@ def convert_book_format(book_id, calibrepath, old_book_format, new_book_format,
# read settings and append converter task to queue
# read settings and append converter task to queue
if
kindle_mail
:
if
kindle_mail
:
settings
=
ub
.
get_mail_settings
()
settings
=
ub
.
get_mail_settings
()
text
=
_
(
u"
%(format)
s:
%(book)
s"
,
format
=
new_book_format
,
book
=
book
.
title
)
settings
[
'subject'
]
=
_
(
'Send to Kindle'
)
# pretranslate Subject for e-mail
settings
[
'body'
]
=
_
(
u'This e-mail has been sent via Calibre-Web.'
)
# text = _(u"%(format)s: %(book)s", format=new_book_format, book=book.title)
else
:
else
:
settings
=
dict
()
settings
=
dict
()
text
=
_
(
u"
%(format)
s:
%(book)
s"
,
format
=
new_book_format
,
book
=
book
.
title
)
text
=
(
u"
%
s ->
%
s:
%
s"
%
(
old_book_format
,
new_book_format
,
book
.
title
)
)
settings
[
'old_book_format'
]
=
old_book_format
settings
[
'old_book_format'
]
=
old_book_format
settings
[
'new_book_format'
]
=
new_book_format
settings
[
'new_book_format'
]
=
new_book_format
global_WorkerThread
.
add_convert
(
file_path
,
book
.
id
,
user_id
,
text
,
settings
,
kindle_mail
)
global_WorkerThread
.
add_convert
(
file_path
,
book
.
id
,
user_id
,
text
,
settings
,
kindle_mail
)
...
@@ -89,7 +92,8 @@ def convert_book_format(book_id, calibrepath, old_book_format, new_book_format,
...
@@ -89,7 +92,8 @@ def convert_book_format(book_id, calibrepath, old_book_format, new_book_format,
def
send_test_mail
(
kindle_mail
,
user_name
):
def
send_test_mail
(
kindle_mail
,
user_name
):
global_WorkerThread
.
add_email
(
_
(
u'Calibre-Web test e-mail'
),
None
,
None
,
ub
.
get_mail_settings
(),
global_WorkerThread
.
add_email
(
_
(
u'Calibre-Web test e-mail'
),
None
,
None
,
ub
.
get_mail_settings
(),
kindle_mail
,
user_name
,
_
(
u"Test e-mail"
))
kindle_mail
,
user_name
,
_
(
u"Test e-mail"
),
_
(
u'This e-mail has been sent via Calibre-Web.'
))
return
return
...
@@ -133,7 +137,7 @@ def send_mail(book_id, kindle_mail, calibrepath, user_id):
...
@@ -133,7 +137,7 @@ def send_mail(book_id, kindle_mail, calibrepath, user_id):
if
'mobi'
in
formats
:
if
'mobi'
in
formats
:
result
=
formats
[
'mobi'
]
result
=
formats
[
'mobi'
]
elif
'epub'
in
formats
:
elif
'epub'
in
formats
:
# returns None if sucess, otherwise errormessage
# returns None if suc
c
ess, otherwise errormessage
return
convert_book_format
(
book_id
,
calibrepath
,
u'epub'
,
u'mobi'
,
user_id
,
kindle_mail
)
return
convert_book_format
(
book_id
,
calibrepath
,
u'epub'
,
u'mobi'
,
user_id
,
kindle_mail
)
elif
'pdf'
in
formats
:
elif
'pdf'
in
formats
:
result
=
formats
[
'pdf'
]
# worker.get_attachment()
result
=
formats
[
'pdf'
]
# worker.get_attachment()
...
@@ -591,31 +595,39 @@ def render_task_status(tasklist):
...
@@ -591,31 +595,39 @@ def render_task_status(tasklist):
renderedtasklist
=
list
()
renderedtasklist
=
list
()
for
task
in
tasklist
:
for
task
in
tasklist
:
if
task
[
'user'
]
==
current_user
.
nickname
or
current_user
.
role_admin
():
if
task
[
'formStarttime'
]:
task
[
'starttime'
]
=
format_datetime
(
task
[
'formStarttime'
],
format
=
'short'
,
locale
=
web
.
get_locale
())
task
[
'formStarttime'
]
=
""
else
:
if
'starttime'
not
in
task
:
task
[
'starttime'
]
=
""
# localize the task status
# localize the task status
if
isinstance
(
task
[
'status
'
],
int
):
if
isinstance
(
task
[
'stat
'
],
int
):
if
task
[
'status
'
]
==
worker
.
STAT_WAITING
:
if
task
[
'stat
'
]
==
worker
.
STAT_WAITING
:
task
[
'status'
]
=
_
(
'Waiting'
)
task
[
'status'
]
=
_
(
u
'Waiting'
)
elif
task
[
'status
'
]
==
worker
.
STAT_FAIL
:
elif
task
[
'stat
'
]
==
worker
.
STAT_FAIL
:
task
[
'status'
]
=
_
(
'Failed'
)
task
[
'status'
]
=
_
(
u
'Failed'
)
elif
task
[
'status
'
]
==
worker
.
STAT_STARTED
:
elif
task
[
'stat
'
]
==
worker
.
STAT_STARTED
:
task
[
'status'
]
=
_
(
'Started'
)
task
[
'status'
]
=
_
(
u
'Started'
)
elif
task
[
'status
'
]
==
worker
.
STAT_FINISH_SUCCESS
:
elif
task
[
'stat
'
]
==
worker
.
STAT_FINISH_SUCCESS
:
task
[
'status'
]
=
_
(
'Finished'
)
task
[
'status'
]
=
_
(
u
'Finished'
)
else
:
else
:
task
[
'status'
]
=
_
(
'Unknown Status'
)
task
[
'status'
]
=
_
(
u
'Unknown Status'
)
# localize the task type
# localize the task type
if
isinstance
(
task
[
'taskType'
],
int
):
if
isinstance
(
task
[
'taskType'
],
int
):
if
task
[
'taskType'
]
==
worker
.
TASK_EMAIL
:
if
task
[
'taskType'
]
==
worker
.
TASK_EMAIL
:
task
[
'taskMessage'
]
=
_
(
'EMAIL: '
)
+
task
[
'taskMessage
'
]
task
[
'taskMessage'
]
=
_
(
u'E-mail: '
)
+
task
[
'taskMess
'
]
elif
task
[
'taskType'
]
==
worker
.
TASK_CONVERT
:
elif
task
[
'taskType'
]
==
worker
.
TASK_CONVERT
:
task
[
'taskMessage'
]
=
_
(
'CONVERT: '
)
+
task
[
'taskMessage
'
]
task
[
'taskMessage'
]
=
_
(
u'Convert: '
)
+
task
[
'taskMess
'
]
elif
task
[
'taskType'
]
==
worker
.
TASK_UPLOAD
:
elif
task
[
'taskType'
]
==
worker
.
TASK_UPLOAD
:
task
[
'taskMessage'
]
=
_
(
'UPLOAD: '
)
+
task
[
'taskMessage
'
]
task
[
'taskMessage'
]
=
_
(
u'Upload: '
)
+
task
[
'taskMess
'
]
elif
task
[
'taskType'
]
==
worker
.
TASK_CONVERT_ANY
:
elif
task
[
'taskType'
]
==
worker
.
TASK_CONVERT_ANY
:
task
[
'taskMessage'
]
=
_
(
'CONVERT: '
)
+
task
[
'taskMessage
'
]
task
[
'taskMessage'
]
=
_
(
u'Convert: '
)
+
task
[
'taskMess
'
]
else
:
else
:
task
[
'taskMessage'
]
=
_
(
'Unknown Task: '
)
+
task
[
'taskMessage
'
]
task
[
'taskMessage'
]
=
_
(
u'Unknown Task: '
)
+
task
[
'taskMess
'
]
renderedtasklist
.
append
(
task
)
renderedtasklist
.
append
(
task
)
...
...
cps/web.py
View file @
c3bec48b
...
@@ -54,8 +54,9 @@ import tempfile
...
@@ -54,8 +54,9 @@ import tempfile
from
redirect
import
redirect_back
from
redirect
import
redirect_back
import
time
import
time
import
server
import
server
import
copy
#
import copy
from
reverseproxy
import
ReverseProxied
from
reverseproxy
import
ReverseProxied
try
:
try
:
from
googleapiclient.errors
import
HttpError
from
googleapiclient.errors
import
HttpError
except
ImportError
:
except
ImportError
:
...
@@ -116,44 +117,6 @@ EXTENSIONS_CONVERT = {'pdf', 'epub', 'mobi', 'azw3', 'docx', 'rtf', 'fb2', 'lit'
...
@@ -116,44 +117,6 @@ EXTENSIONS_CONVERT = {'pdf', 'epub', 'mobi', 'azw3', 'docx', 'rtf', 'fb2', 'lit'
# EXTENSIONS_READER = set(['txt', 'pdf', 'epub', 'zip', 'cbz', 'tar', 'cbt'] + (['rar','cbr'] if rar_support else []))
# EXTENSIONS_READER = set(['txt', 'pdf', 'epub', 'zip', 'cbz', 'tar', 'cbt'] + (['rar','cbr'] if rar_support else []))
'''class ReverseProxied(object):
"""Wrap the application in this middleware and configure the
front-end server to add these headers, to let you quietly bind
this to a URL other than / and to an HTTP scheme that is
different than what is used locally.
Code courtesy of: http://flask.pocoo.org/snippets/35/
In nginx:
location /myprefix {
proxy_pass http://127.0.0.1:8083;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Scheme $scheme;
proxy_set_header X-Script-Name /myprefix;
}
"""
def __init__(self, application):
self.app = application
def __call__(self, environ, start_response):
script_name = environ.get('HTTP_X_SCRIPT_NAME', '')
if script_name:
environ['SCRIPT_NAME'] = script_name
path_info = environ.get('PATH_INFO', '')
if path_info and path_info.startswith(script_name):
environ['PATH_INFO'] = path_info[len(script_name):]
scheme = environ.get('HTTP_X_SCHEME', '')
if scheme:
environ['wsgi.url_scheme'] = scheme
servr = environ.get('HTTP_X_FORWARDED_SERVER', '')
if servr:
environ['HTTP_HOST'] = servr
return self.app(environ, start_response)'''
# Main code
# Main code
mimetypes
.
init
()
mimetypes
.
init
()
mimetypes
.
add_type
(
'application/xhtml+xml'
,
'.xhtml'
)
mimetypes
.
add_type
(
'application/xhtml+xml'
,
'.xhtml'
)
...
@@ -897,14 +860,6 @@ def get_opds_download_link(book_id, book_format):
...
@@ -897,14 +860,6 @@ def get_opds_download_link(book_id, book_format):
except
KeyError
:
except
KeyError
:
headers
[
"Content-Type"
]
=
"application/octet-stream"
headers
[
"Content-Type"
]
=
"application/octet-stream"
return
helper
.
do_download_file
(
book
,
book_format
,
data
,
headers
)
return
helper
.
do_download_file
(
book
,
book_format
,
data
,
headers
)
#if config.config_use_google_drive:
# app.logger.info(time.time() - startTime)
# df = gdriveutils.getFileFromEbooksFolder(book.path, data.name + "." + book_format)
# return do_gdrive_download(df, headers)
#else:
# response = make_response(send_from_directory(os.path.join(config.config_calibre_dir, book.path), data.name + "." + book_format))
# response.headers = headers
# return response
@
app
.
route
(
"/ajax/book/<string:uuid>"
)
@
app
.
route
(
"/ajax/book/<string:uuid>"
)
...
@@ -923,7 +878,7 @@ def get_metadata_calibre_companion(uuid):
...
@@ -923,7 +878,7 @@ def get_metadata_calibre_companion(uuid):
@
login_required
@
login_required
def
get_email_status_json
():
def
get_email_status_json
():
answer
=
list
()
answer
=
list
()
UIanswer
=
list
()
#
UIanswer = list()
tasks
=
helper
.
global_WorkerThread
.
get_taskstatus
()
tasks
=
helper
.
global_WorkerThread
.
get_taskstatus
()
if
not
current_user
.
role_admin
():
if
not
current_user
.
role_admin
():
for
task
in
tasks
:
for
task
in
tasks
:
...
@@ -945,10 +900,10 @@ def get_email_status_json():
...
@@ -945,10 +900,10 @@ def get_email_status_json():
task
[
'starttime'
]
=
""
task
[
'starttime'
]
=
""
answer
=
tasks
answer
=
tasks
UIanswer
=
copy
.
deepcopy
(
answer
)
#
UIanswer = copy.deepcopy(answer)
UIanswer
=
helper
.
render_task_status
(
UI
answer
)
answer
=
helper
.
render_task_status
(
answer
)
js
=
json
.
dumps
(
UI
answer
)
js
=
json
.
dumps
(
answer
)
response
=
make_response
(
js
)
response
=
make_response
(
js
)
response
.
headers
[
"Content-Type"
]
=
"application/json; charset=utf-8"
response
.
headers
[
"Content-Type"
]
=
"application/json; charset=utf-8"
return
response
return
response
...
@@ -1734,32 +1689,14 @@ def bookmark(book_id, book_format):
...
@@ -1734,32 +1689,14 @@ def bookmark(book_id, book_format):
def
get_tasks_status
():
def
get_tasks_status
():
# if current user admin, show all email, otherwise only own emails
# if current user admin, show all email, otherwise only own emails
answer
=
list
()
answer
=
list
()
UIanswer
=
list
()
#
UIanswer=list()
tasks
=
helper
.
global_WorkerThread
.
get_taskstatus
()
tasks
=
helper
.
global_WorkerThread
.
get_taskstatus
()
if
not
current_user
.
role_admin
():
# answer = tasks
for
task
in
tasks
:
if
task
[
'user'
]
==
current_user
.
nickname
:
if
task
[
'formStarttime'
]:
task
[
'starttime'
]
=
format_datetime
(
task
[
'formStarttime'
],
format
=
'short'
,
locale
=
get_locale
())
task
[
'formStarttime'
]
=
""
else
:
if
'starttime'
not
in
task
:
task
[
'starttime'
]
=
""
answer
.
append
(
task
)
else
:
for
task
in
tasks
:
if
task
[
'formStarttime'
]:
task
[
'starttime'
]
=
format_datetime
(
task
[
'formStarttime'
],
format
=
'short'
,
locale
=
get_locale
())
task
[
'formStarttime'
]
=
""
else
:
if
'starttime'
not
in
task
:
task
[
'starttime'
]
=
""
answer
=
tasks
UIanswer
=
copy
.
deepcopy
(
answer
)
#
UIanswer = copy.deepcopy(answer)
UIanswer
=
helper
.
render_task_status
(
UIanswer
)
answer
=
helper
.
render_task_status
(
tasks
)
# foreach row format row
# foreach row format row
return
render_title_template
(
'tasks.html'
,
entries
=
UI
answer
,
title
=
_
(
u"Tasks"
))
return
render_title_template
(
'tasks.html'
,
entries
=
answer
,
title
=
_
(
u"Tasks"
))
@
app
.
route
(
"/admin"
)
@
app
.
route
(
"/admin"
)
...
...
cps/worker.py
View file @
c3bec48b
This diff is collapsed.
Click to expand it.
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