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
df5d15d1
Commit
df5d15d1
authored
May 30, 2019
by
Ozzieisaacs
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'comicapi/master'
parents
ecedf927
029d2990
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
76 additions
and
25 deletions
+76
-25
comic.py
cps/comic.py
+75
-25
requirements.txt
requirements.txt
+1
-0
No files found.
cps/comic.py
100644 → 100755
View file @
df5d15d1
...
...
@@ -17,33 +17,52 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import
zipfile
import
tarfile
import
os
import
uploader
import
logging
from
iso639
import
languages
as
isoLanguages
def
extractCover
(
tmp_file_name
,
original_file_extension
):
cover_data
=
None
if
original_file_extension
.
upper
()
==
'.CBZ'
:
cf
=
zipfile
.
ZipFile
(
tmp_file_name
)
for
name
in
cf
.
namelist
():
ext
=
os
.
path
.
splitext
(
name
)
if
len
(
ext
)
>
1
:
extension
=
ext
[
1
]
.
lower
()
if
extension
==
'.jpg'
:
cover_data
=
cf
.
read
(
name
)
break
elif
original_file_extension
.
upper
()
==
'.CBT'
:
cf
=
tarfile
.
TarFile
(
tmp_file_name
)
for
name
in
cf
.
getnames
():
ext
=
os
.
path
.
splitext
(
name
)
if
len
(
ext
)
>
1
:
extension
=
ext
[
1
]
.
lower
()
if
extension
==
'.jpg'
:
cover_data
=
cf
.
extractfile
(
name
)
.
read
()
break
logger
=
logging
.
getLogger
(
"book_formats"
)
try
:
from
comicapi.comicarchive
import
ComicArchive
,
MetaDataStyle
use_comic_meta
=
True
except
ImportError
as
e
:
logger
.
warning
(
'cannot import comicapi, extracting comic metadata will not work:
%
s'
,
e
)
import
zipfile
import
tarfile
use_comic_meta
=
False
def
extractCover
(
tmp_file_name
,
original_file_extension
):
if
use_comic_meta
:
archive
=
ComicArchive
(
tmp_file_name
)
cover_data
=
None
ext
=
os
.
path
.
splitext
(
archive
.
getPageName
(
0
))
if
len
(
ext
)
>
1
:
extension
=
ext
[
1
]
.
lower
()
if
extension
==
'.jpg'
or
extension
==
'.jpeg'
:
cover_data
=
archive
.
getPage
(
0
)
else
:
if
original_file_extension
.
upper
()
==
'.CBZ'
:
cf
=
zipfile
.
ZipFile
(
tmp_file_name
)
for
name
in
cf
.
namelist
():
ext
=
os
.
path
.
splitext
(
name
)
if
len
(
ext
)
>
1
:
extension
=
ext
[
1
]
.
lower
()
if
extension
==
'.jpg'
:
cover_data
=
cf
.
read
(
name
)
break
elif
original_file_extension
.
upper
()
==
'.CBT'
:
cf
=
tarfile
.
TarFile
(
tmp_file_name
)
for
name
in
cf
.
getnames
():
ext
=
os
.
path
.
splitext
(
name
)
if
len
(
ext
)
>
1
:
extension
=
ext
[
1
]
.
lower
()
if
extension
==
'.jpg'
:
cover_data
=
cf
.
extractfile
(
name
)
.
read
()
break
prefix
=
os
.
path
.
dirname
(
tmp_file_name
)
if
cover_data
:
tmp_cover_name
=
prefix
+
'/cover'
+
extension
...
...
@@ -56,15 +75,46 @@ def extractCover(tmp_file_name, original_file_extension):
def
get_comic_info
(
tmp_file_path
,
original_file_name
,
original_file_extension
):
if
use_comic_meta
:
archive
=
ComicArchive
(
tmp_file_path
)
if
archive
.
seemsToBeAComicArchive
():
if
archive
.
hasMetadata
(
MetaDataStyle
.
CIX
):
style
=
MetaDataStyle
.
CIX
elif
archive
.
hasMetadata
(
MetaDataStyle
.
CBI
):
style
=
MetaDataStyle
.
CBI
else
:
style
=
None
if
style
is
not
None
:
loadedMetadata
=
archive
.
readMetadata
(
style
)
coverfile
=
extractCover
(
tmp_file_path
,
original_file_extension
)
lang
=
loadedMetadata
.
language
if
len
(
lang
)
==
2
:
loadedMetadata
.
language
=
isoLanguages
.
get
(
part1
=
lang
)
.
name
elif
len
(
lang
)
==
3
:
loadedMetadata
.
language
=
isoLanguages
.
get
(
part3
=
lang
)
.
name
else
:
loadedMetadata
.
language
=
""
return
uploader
.
BookMeta
(
file_path
=
tmp_file_path
,
extension
=
original_file_extension
,
title
=
loadedMetadata
.
title
or
original_file_name
,
author
=
" & "
.
join
([
credit
[
"person"
]
for
credit
in
loadedMetadata
.
credits
if
credit
[
"role"
]
==
"Writer"
])
or
u"Unknown"
,
cover
=
extractCover
(
tmp_file_path
,
original_file_extension
),
description
=
loadedMetadata
.
comments
or
""
,
tags
=
""
,
series
=
loadedMetadata
.
series
or
""
,
series_id
=
loadedMetadata
.
issue
or
""
,
languages
=
loadedMetadata
.
language
)
else
:
return
uploader
.
BookMeta
(
return
uploader
.
BookMeta
(
file_path
=
tmp_file_path
,
extension
=
original_file_extension
,
title
=
original_file_name
,
author
=
u"Unknown"
,
cover
=
coverfile
,
cover
=
extractCover
(
tmp_file_path
,
original_file_extension
)
,
description
=
""
,
tags
=
""
,
series
=
""
,
...
...
requirements.txt
View file @
df5d15d1
...
...
@@ -13,3 +13,4 @@ SQLAlchemy>=1.1.0
tornado
>=4.1
Wand
>=0.4.4
unidecode
>=0.04.19
git+https://github.com/wildthyme/comicapi.git@cb279168f9c5cec742b5a05ac8326b9c168a8a91#egg=comicapi
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