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
fcefd803
Commit
fcefd803
authored
May 02, 2020
by
Ozzieisaacs
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix #985 (png and webp are extracted as cover files from comic files)
parent
64bebaa1
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
47 additions
and
17 deletions
+47
-17
comic.py
cps/comic.py
+33
-14
config_sql.py
cps/config_sql.py
+1
-1
archive.js
cps/static/js/archive/archive.js
+13
-0
uploader.py
cps/uploader.py
+0
-2
No files found.
cps/comic.py
View file @
fcefd803
...
@@ -18,10 +18,17 @@
...
@@ -18,10 +18,17 @@
from
__future__
import
division
,
print_function
,
unicode_literals
from
__future__
import
division
,
print_function
,
unicode_literals
import
os
import
os
import
io
from
.
import
logger
,
isoLanguages
from
.
import
logger
,
isoLanguages
from
.constants
import
BookMeta
from
.constants
import
BookMeta
try
:
from
PIL
import
Image
as
PILImage
use_PIL
=
True
except
ImportError
as
e
:
use_PIL
=
False
log
=
logger
.
create
()
log
=
logger
.
create
()
...
@@ -41,6 +48,27 @@ except ImportError as e:
...
@@ -41,6 +48,27 @@ except ImportError as e:
use_rarfile
=
False
use_rarfile
=
False
use_comic_meta
=
False
use_comic_meta
=
False
def
_cover_processing
(
tmp_file_name
,
img
,
extension
):
if
use_PIL
:
# convert to jpg because calibre only supports jpg
if
extension
in
(
'.png'
,
'.webp'
):
imgc
=
PILImage
.
open
(
io
.
BytesIO
(
img
))
im
=
imgc
.
convert
(
'RGB'
)
tmp_bytesio
=
io
.
BytesIO
()
im
.
save
(
tmp_bytesio
,
format
=
'JPEG'
)
img
=
tmp_bytesio
.
getvalue
()
prefix
=
os
.
path
.
dirname
(
tmp_file_name
)
if
img
:
tmp_cover_name
=
prefix
+
'/cover.jpg'
image
=
open
(
tmp_cover_name
,
'wb'
)
image
.
write
(
img
)
image
.
close
()
else
:
tmp_cover_name
=
None
return
tmp_cover_name
def
_extractCover
(
tmp_file_name
,
original_file_extension
,
rarExceutable
):
def
_extractCover
(
tmp_file_name
,
original_file_extension
,
rarExceutable
):
cover_data
=
extension
=
None
cover_data
=
extension
=
None
...
@@ -50,7 +78,7 @@ def _extractCover(tmp_file_name, original_file_extension, rarExceutable):
...
@@ -50,7 +78,7 @@ def _extractCover(tmp_file_name, original_file_extension, rarExceutable):
ext
=
os
.
path
.
splitext
(
name
)
ext
=
os
.
path
.
splitext
(
name
)
if
len
(
ext
)
>
1
:
if
len
(
ext
)
>
1
:
extension
=
ext
[
1
]
.
lower
()
extension
=
ext
[
1
]
.
lower
()
if
extension
==
'.jpg'
or
extension
==
'.jpeg'
:
if
extension
in
(
'.jpg'
,
'.jpeg'
,
'.png'
,
'.webp'
)
:
cover_data
=
archive
.
getPage
(
index
)
cover_data
=
archive
.
getPage
(
index
)
break
break
else
:
else
:
...
@@ -60,7 +88,7 @@ def _extractCover(tmp_file_name, original_file_extension, rarExceutable):
...
@@ -60,7 +88,7 @@ def _extractCover(tmp_file_name, original_file_extension, rarExceutable):
ext
=
os
.
path
.
splitext
(
name
)
ext
=
os
.
path
.
splitext
(
name
)
if
len
(
ext
)
>
1
:
if
len
(
ext
)
>
1
:
extension
=
ext
[
1
]
.
lower
()
extension
=
ext
[
1
]
.
lower
()
if
extension
==
'.jpg'
or
extension
==
'.jpeg'
:
if
extension
in
(
'.jpg'
,
'.jpeg'
,
'.png'
,
'.webp'
)
:
cover_data
=
cf
.
read
(
name
)
cover_data
=
cf
.
read
(
name
)
break
break
elif
original_file_extension
.
upper
()
==
'.CBT'
:
elif
original_file_extension
.
upper
()
==
'.CBT'
:
...
@@ -69,7 +97,7 @@ def _extractCover(tmp_file_name, original_file_extension, rarExceutable):
...
@@ -69,7 +97,7 @@ def _extractCover(tmp_file_name, original_file_extension, rarExceutable):
ext
=
os
.
path
.
splitext
(
name
)
ext
=
os
.
path
.
splitext
(
name
)
if
len
(
ext
)
>
1
:
if
len
(
ext
)
>
1
:
extension
=
ext
[
1
]
.
lower
()
extension
=
ext
[
1
]
.
lower
()
if
extension
==
'.jpg'
or
extension
==
'.jpeg'
:
if
extension
in
(
'.jpg'
,
'.jpeg'
,
'.png'
,
'.webp'
)
:
cover_data
=
cf
.
extractfile
(
name
)
.
read
()
cover_data
=
cf
.
extractfile
(
name
)
.
read
()
break
break
elif
original_file_extension
.
upper
()
==
'.CBR'
and
use_rarfile
:
elif
original_file_extension
.
upper
()
==
'.CBR'
and
use_rarfile
:
...
@@ -80,21 +108,12 @@ def _extractCover(tmp_file_name, original_file_extension, rarExceutable):
...
@@ -80,21 +108,12 @@ def _extractCover(tmp_file_name, original_file_extension, rarExceutable):
ext
=
os
.
path
.
splitext
(
name
)
ext
=
os
.
path
.
splitext
(
name
)
if
len
(
ext
)
>
1
:
if
len
(
ext
)
>
1
:
extension
=
ext
[
1
]
.
lower
()
extension
=
ext
[
1
]
.
lower
()
if
extension
==
'.jpg'
or
extension
==
'.jpeg'
:
if
extension
in
(
'.jpg'
,
'.jpeg'
,
'.png'
,
'.webp'
)
:
cover_data
=
cf
.
read
(
name
)
cover_data
=
cf
.
read
(
name
)
break
break
except
Exception
as
e
:
except
Exception
as
e
:
log
.
debug
(
'Rarfile failed with error:
%
s'
,
e
)
log
.
debug
(
'Rarfile failed with error:
%
s'
,
e
)
return
_cover_processing
(
tmp_file_name
,
cover_data
,
extension
)
prefix
=
os
.
path
.
dirname
(
tmp_file_name
)
if
cover_data
:
tmp_cover_name
=
prefix
+
'/cover'
+
extension
image
=
open
(
tmp_cover_name
,
'wb'
)
image
.
write
(
cover_data
)
image
.
close
()
else
:
tmp_cover_name
=
None
return
tmp_cover_name
def
get_comic_info
(
tmp_file_path
,
original_file_name
,
original_file_extension
,
rarExceutable
):
def
get_comic_info
(
tmp_file_path
,
original_file_name
,
original_file_extension
,
rarExceutable
):
...
...
cps/config_sql.py
View file @
fcefd803
...
@@ -112,7 +112,7 @@ class _Settings(_Base):
...
@@ -112,7 +112,7 @@ class _Settings(_Base):
config_converterpath
=
Column
(
String
)
config_converterpath
=
Column
(
String
)
config_calibre
=
Column
(
String
)
config_calibre
=
Column
(
String
)
config_rarfile_location
=
Column
(
String
)
config_rarfile_location
=
Column
(
String
)
config_upload_formats
=
Column
(
String
,
default
=
constants
.
EXTENSIONS_UPLOAD
)
config_upload_formats
=
Column
(
String
,
default
=
','
.
join
(
constants
.
EXTENSIONS_UPLOAD
)
)
config_updatechannel
=
Column
(
Integer
,
default
=
constants
.
UPDATE_STABLE
)
config_updatechannel
=
Column
(
Integer
,
default
=
constants
.
UPDATE_STABLE
)
...
...
cps/static/js/archive/archive.js
View file @
fcefd803
...
@@ -411,6 +411,19 @@ bitjs.archive = bitjs.archive || {};
...
@@ -411,6 +411,19 @@ bitjs.archive = bitjs.archive || {};
return
"unrar.js"
;
return
"unrar.js"
;
};
};
/**
* Unrarrer5
* @extends {bitjs.archive.Unarchiver}
* @constructor
*/
bitjs
.
archive
.
Unrarrer5
=
function
(
arrayBuffer
,
optPathToBitJS
)
{
bitjs
.
base
(
this
,
arrayBuffer
,
optPathToBitJS
);
};
bitjs
.
inherits
(
bitjs
.
archive
.
Unrarrer5
,
bitjs
.
archive
.
Unarchiver
);
bitjs
.
archive
.
Unrarrer5
.
prototype
.
getScriptFileName
=
function
()
{
return
"unrar5.js"
;
};
/**
/**
* Untarrer
* Untarrer
* @extends {bitjs.archive.Unarchiver}
* @extends {bitjs.archive.Unarchiver}
...
...
cps/uploader.py
View file @
fcefd803
...
@@ -73,8 +73,6 @@ except ImportError as e:
...
@@ -73,8 +73,6 @@ except ImportError as e:
log
.
debug
(
'cannot import Pillow, using png and webp images as cover will not work:
%
s'
,
e
)
log
.
debug
(
'cannot import Pillow, using png and webp images as cover will not work:
%
s'
,
e
)
use_PIL
=
False
use_PIL
=
False
__author__
=
'lemmsh'
def
process
(
tmp_file_path
,
original_file_name
,
original_file_extension
,
rarExcecutable
):
def
process
(
tmp_file_path
,
original_file_name
,
original_file_extension
,
rarExcecutable
):
meta
=
None
meta
=
None
...
...
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