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
8c751eb5
Commit
8c751eb5
authored
Mar 14, 2021
by
Ozzie Isaacs
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Some code cosmetics
parent
4df443e0
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
57 additions
and
54 deletions
+57
-54
gdrive.py
cps/gdrive.py
+1
-1
kobo.py
cps/kobo.py
+2
-14
main.css
cps/static/css/main.css
+1
-1
filter_grid.js
cps/static/js/filter_grid.js
+6
-6
get_meta.js
cps/static/js/get_meta.js
+4
-4
ub.py
cps/ub.py
+1
-1
updater.py
cps/updater.py
+2
-1
web.py
cps/web.py
+40
-26
No files found.
cps/gdrive.py
View file @
8c751eb5
...
...
@@ -47,7 +47,7 @@ except ImportError as err:
current_milli_time
=
lambda
:
int
(
round
(
time
()
*
1000
))
gdrive_watch_callback_token
=
'target=calibreweb-watch_files'
gdrive_watch_callback_token
=
'target=calibreweb-watch_files'
#nosec
@
gdrive
.
route
(
"/authenticate"
)
...
...
cps/kobo.py
View file @
8c751eb5
...
...
@@ -42,8 +42,7 @@ from flask import (
from
flask_login
import
current_user
from
werkzeug.datastructures
import
Headers
from
sqlalchemy
import
func
from
sqlalchemy.sql.expression
import
and_
,
or_
from
sqlalchemy.orm
import
load_only
from
sqlalchemy.sql.expression
import
and_
from
sqlalchemy.exc
import
StatementError
import
requests
...
...
@@ -893,17 +892,6 @@ def HandleProductsRequest(dummy=None):
return
redirect_or_proxy_request
()
'''@kobo.errorhandler(404)
def handle_404(err):
# This handler acts as a catch-all for endpoints that we don't have an interest in
# implementing (e.g: v1/analytics/gettests, v1/user/recommendations, etc)
if err:
print('404')
return jsonify(error=str(err)), 404
log.debug("Unknown Request received:
%
s, method:
%
s, data:
%
s", request.base_url, request.method, request.data)
return redirect_or_proxy_request()'''
def
make_calibre_web_auth_response
():
# As described in kobo_auth.py, CalibreWeb doesn't make use practical use of this auth/device API call for
# authentation (nor for authorization). We return a dummy response just to keep the device happy.
...
...
@@ -947,7 +935,7 @@ def HandleInitRequest():
store_response_json
=
store_response
.
json
()
if
"Resources"
in
store_response_json
:
kobo_resources
=
store_response_json
[
"Resources"
]
except
:
except
Exception
:
log
.
error
(
"Failed to receive or parse response from Kobo's init endpoint. Falling back to un-proxied mode."
)
if
not
kobo_resources
:
kobo_resources
=
NATIVE_KOBO_RESOURCES
()
...
...
cps/static/css/main.css
View file @
8c751eb5
...
...
@@ -370,7 +370,7 @@ input:-moz-placeholder { color: #454545; }
}
#searchResults
li
{
margin-bottom
:
10px
;
margin-bottom
:
10px
;
width
:
225px
;
font-family
:
Georgia
,
"Times New Roman"
,
Times
,
serif
;
list-style
:
none
;
...
...
cps/static/js/filter_grid.js
View file @
8c751eb5
...
...
@@ -36,7 +36,6 @@ $("#desc").click(function() {
sortBy
:
"name"
,
sortAscending
:
true
});
return
;
});
$
(
"#asc"
).
click
(
function
()
{
...
...
@@ -52,19 +51,20 @@ $("#asc").click(function() {
sortBy
:
"name"
,
sortAscending
:
false
});
return
;
});
$
(
"#all"
).
click
(
function
()
{
// go through all elements and make them visible
$list
.
isotope
({
filter
:
function
()
{
return
true
;
}
})
}
});
});
$
(
".char"
).
click
(
function
()
{
var
character
=
this
.
innerText
;
$list
.
isotope
({
filter
:
function
()
{
return
this
.
attributes
[
"data-id"
].
value
.
charAt
(
0
).
toUpperCase
()
==
character
;
}
})
}
});
});
cps/static/js/get_meta.js
View file @
8c751eb5
...
...
@@ -138,8 +138,8 @@ $(function () {
seriesTitle
=
result
.
series
.
title
;
}
var
dateFomers
=
result
.
pubdate
.
split
(
"-"
);
var
publishedYear
=
parseInt
(
dateFomers
[
0
]);
var
publishedMonth
=
parseInt
(
dateFomers
[
1
]);
var
publishedYear
=
parseInt
(
dateFomers
[
0
]
,
10
);
var
publishedMonth
=
parseInt
(
dateFomers
[
1
]
,
10
);
var
publishedDate
=
new
Date
(
publishedYear
,
publishedMonth
-
1
,
1
);
publishedDate
=
formatDate
(
publishedDate
);
...
...
@@ -194,8 +194,8 @@ $(function () {
}
else
{
dateFomers
=
result
.
date_added
.
split
(
"-"
);
}
var
publishedYear
=
parseInt
(
dateFomers
[
0
]);
var
publishedMonth
=
parseInt
(
dateFomers
[
1
]);
var
publishedYear
=
parseInt
(
dateFomers
[
0
]
,
10
);
var
publishedMonth
=
parseInt
(
dateFomers
[
1
]
,
10
);
var
publishedDate
=
new
Date
(
publishedYear
,
publishedMonth
-
1
,
1
);
publishedDate
=
formatDate
(
publishedDate
);
...
...
cps/ub.py
View file @
8c751eb5
cps/updater.py
View file @
8c751eb5
...
...
@@ -267,7 +267,8 @@ class Updater(threading.Thread):
log
.
debug
(
"Could not remove:
%
s"
,
item_path
)
shutil
.
rmtree
(
source
,
ignore_errors
=
True
)
def
is_venv
(
self
):
@
staticmethod
def
is_venv
():
if
(
hasattr
(
sys
,
'real_prefix'
))
or
(
hasattr
(
sys
,
'base_prefix'
)
and
sys
.
base_prefix
!=
sys
.
prefix
):
return
os
.
sep
+
os
.
path
.
relpath
(
sys
.
prefix
,
constants
.
BASE_DIR
)
else
:
...
...
cps/web.py
View file @
8c751eb5
...
...
@@ -373,23 +373,9 @@ def render_books_list(data, sort, book_id, page):
order
=
get_sort_function
(
sort
,
data
)
if
data
==
"rated"
:
if
current_user
.
check_visibility
(
constants
.
SIDEBAR_BEST_RATED
):
entries
,
random
,
pagination
=
calibre_db
.
fill_indexpage
(
page
,
0
,
db
.
Books
,
db
.
Books
.
ratings
.
any
(
db
.
Ratings
.
rating
>
9
),
order
)
return
render_title_template
(
'index.html'
,
random
=
random
,
entries
=
entries
,
pagination
=
pagination
,
id
=
book_id
,
title
=
_
(
u"Top Rated Books"
),
page
=
"rated"
)
else
:
abort
(
404
)
return
render_rated_books
(
page
,
book_id
,
order
=
order
)
elif
data
==
"discover"
:
if
current_user
.
check_visibility
(
constants
.
SIDEBAR_RANDOM
):
entries
,
__
,
pagination
=
calibre_db
.
fill_indexpage
(
page
,
0
,
db
.
Books
,
True
,
[
func
.
randomblob
(
2
)])
pagination
=
Pagination
(
1
,
config
.
config_books_per_page
,
config
.
config_books_per_page
)
return
render_title_template
(
'discover.html'
,
entries
=
entries
,
pagination
=
pagination
,
id
=
book_id
,
title
=
_
(
u"Discover (Random Books)"
),
page
=
"discover"
)
else
:
abort
(
404
)
return
render_discover_books
(
page
,
book_id
)
elif
data
==
"unread"
:
return
render_read_books
(
page
,
False
,
order
=
order
)
elif
data
==
"read"
:
...
...
@@ -429,6 +415,27 @@ def render_books_list(data, sort, book_id, page):
title
=
_
(
u"Books"
),
page
=
website
)
def
render_rated_books
(
page
,
book_id
,
order
):
if
current_user
.
check_visibility
(
constants
.
SIDEBAR_BEST_RATED
):
entries
,
random
,
pagination
=
calibre_db
.
fill_indexpage
(
page
,
0
,
db
.
Books
,
db
.
Books
.
ratings
.
any
(
db
.
Ratings
.
rating
>
9
),
order
)
return
render_title_template
(
'index.html'
,
random
=
random
,
entries
=
entries
,
pagination
=
pagination
,
id
=
book_id
,
title
=
_
(
u"Top Rated Books"
),
page
=
"rated"
)
else
:
abort
(
404
)
def
render_discover_books
(
page
,
book_id
):
if
current_user
.
check_visibility
(
constants
.
SIDEBAR_RANDOM
):
entries
,
__
,
pagination
=
calibre_db
.
fill_indexpage
(
page
,
0
,
db
.
Books
,
True
,
[
func
.
randomblob
(
2
)])
pagination
=
Pagination
(
1
,
config
.
config_books_per_page
,
config
.
config_books_per_page
)
return
render_title_template
(
'discover.html'
,
entries
=
entries
,
pagination
=
pagination
,
id
=
book_id
,
title
=
_
(
u"Discover (Random Books)"
),
page
=
"discover"
)
else
:
abort
(
404
)
def
render_hot_books
(
page
):
if
current_user
.
check_visibility
(
constants
.
SIDEBAR_HOT
):
if
current_user
.
show_detail_random
():
...
...
@@ -1478,16 +1485,7 @@ def logout():
# ################################### Users own configuration #########################################################
def
change_profile
(
kobo_support
,
local_oauth_check
,
oauth_status
,
translations
,
languages
):
to_save
=
request
.
form
.
to_dict
()
current_user
.
random_books
=
0
if
current_user
.
role_passwd
()
or
current_user
.
role_admin
():
if
"password"
in
to_save
and
to_save
[
"password"
]:
current_user
.
password
=
generate_password_hash
(
to_save
[
"password"
])
if
"kindle_mail"
in
to_save
and
to_save
[
"kindle_mail"
]
!=
current_user
.
kindle_mail
:
current_user
.
kindle_mail
=
to_save
[
"kindle_mail"
]
if
"allowed_tags"
in
to_save
and
to_save
[
"allowed_tags"
]
!=
current_user
.
allowed_tags
:
current_user
.
allowed_tags
=
to_save
[
"allowed_tags"
]
.
strip
()
def
change_profile_email
(
to_save
,
kobo_support
,
local_oauth_check
,
oauth_status
):
if
"email"
in
to_save
and
to_save
[
"email"
]
!=
current_user
.
email
:
if
config
.
config_public_reg
and
not
check_valid_domain
(
to_save
[
"email"
]):
flash
(
_
(
u"E-mail is not from valid domain"
),
category
=
"error"
)
...
...
@@ -1496,6 +1494,8 @@ def change_profile(kobo_support, local_oauth_check, oauth_status, translations,
kobo_support
=
kobo_support
,
registered_oauth
=
local_oauth_check
,
oauth_status
=
oauth_status
)
current_user
.
email
=
to_save
[
"email"
]
def
change_profile_nickname
(
to_save
,
kobo_support
,
local_oauth_check
,
translations
,
languages
):
if
"nickname"
in
to_save
and
to_save
[
"nickname"
]
!=
current_user
.
nickname
:
# Query User nickname, if not existing, change
if
not
ub
.
session
.
query
(
ub
.
User
)
.
filter
(
ub
.
User
.
nickname
==
to_save
[
"nickname"
])
.
scalar
():
...
...
@@ -1511,6 +1511,20 @@ def change_profile(kobo_support, local_oauth_check, oauth_status, translations,
title
=
_
(
u"Edit User
%(nick)
s"
,
nick
=
current_user
.
nickname
),
page
=
"edituser"
)
def
change_profile
(
kobo_support
,
local_oauth_check
,
oauth_status
,
translations
,
languages
):
to_save
=
request
.
form
.
to_dict
()
current_user
.
random_books
=
0
if
current_user
.
role_passwd
()
or
current_user
.
role_admin
():
if
"password"
in
to_save
and
to_save
[
"password"
]:
current_user
.
password
=
generate_password_hash
(
to_save
[
"password"
])
if
"kindle_mail"
in
to_save
and
to_save
[
"kindle_mail"
]
!=
current_user
.
kindle_mail
:
current_user
.
kindle_mail
=
to_save
[
"kindle_mail"
]
if
"allowed_tags"
in
to_save
and
to_save
[
"allowed_tags"
]
!=
current_user
.
allowed_tags
:
current_user
.
allowed_tags
=
to_save
[
"allowed_tags"
]
.
strip
()
change_profile_email
(
to_save
,
kobo_support
,
local_oauth_check
,
oauth_status
)
change_profile_nickname
(
to_save
,
kobo_support
,
local_oauth_check
,
translations
,
languages
)
if
"show_random"
in
to_save
and
to_save
[
"show_random"
]
==
"on"
:
current_user
.
random_books
=
1
if
"default_language"
in
to_save
:
...
...
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