星影の魔術師の魔法の呪文

PR

プロフィール

星影の魔術師

星影の魔術師

キーワードサーチ

▼キーワード検索

コメント新着

星影の魔術師 @ Re[1]:昨日はラーメンでした(06/27) New! 和活喜さんへ いつもありがとうございます…
星影の魔術師 @ Re[1]:昨日は誕生日でした(06/26) New! カーサン4452さんへ いつもありがとうござ…
星影の魔術師 @ Re[1]:昨日は誕生日でした(06/26) New! chiichan60さんへ いつもありがとうござい…
和活喜 @ Re:昨日はラーメンでした(06/27) New!  お早うございます、木曜日。福岡宗像は…
カーサン4452 @ Re:昨日は誕生日でした(06/26) New! 20年+αのお誕生日おめでとうございました…
2020.02.29
XML
カテゴリ: プログラミング
魔術師です。

先日電子書籍管理ソフトの calibre で ZIP 書き出ししたデータから JPEG ファイルを抜き出せることに気付きました。

電子書籍データの JPEG 変換 | 星影の魔術師の魔法の呪文 - 楽天ブログ
https://plaza.rakuten.co.jp/wizardofstarlite/diary/202002220000/


リンクの先で書いていますが、いったん PDF に書き出して、PDF を Adobe PostScript 互換インタプリタの GhostScript を使ってレンダリングしていましたが直接 ePUB 形式を ZIP ファイルに書き出すことが出来ることに気付きました。
その ZIP ファイルの中にイメージファイルも含まれていました。
多分 ePUB 自体が ZIP 圧縮されて固められたファイルですからもしかしたらそのまま書き出しているのかも。

この ZIP ファイルからいちいち手作業でイメージファイルを取り出すのも面倒くさいので自動的にイメージファイルを抜き出して再度 ZIP にまとめる BAT ファイルを作りました。

Calibre から書き出した ZIP ファイルそのままでも iPhone/iPad で読めるのですが使っているビューワーアプリが ZIP 中のフォルダは別の本として扱うので
表紙と本文が別の巻として扱われ表紙だけの 1ページの巻になるのでめくる手間が少々面倒くさいので抜き出してまとめることにしました。

魔術師の環境では、アーカイバとして 7-Zip Portable
一時領域として RAM ディスクである Z: ドライブに作業領域にしました。



==========
@echo off
set ZIPBIN=D:\PortableApps\7-ZipPortable\App\7-Zip64\7z.exe
set MKDIR=mkdir
set RMDIR=rmdir

set FILE=%~fn1
set FILENAME=%~n1
set FILEEXT=%~x1
REM set YEAR=%DATE:~0,4%
set KOBO_DATA_PATH=E:\eBook\Kobo

set TMP_DRV=Z:
set TMP_DIR=%TMP_DRV%\TMP\EB_%RANDOM%
REM set WORK_DIR=jpg_work
set WORK_DIR=%FILENAME%


%MKDIR% %TMP_DIR%
%MKDIR% "%TMP_DIR%\%WORK_DIR%"
copy "%FILENAME%%FILEEXT%" %TMP_DIR%
cd /d %TMP_DIR%

REM
REM Extract ZIP
REM
%ZIPBIN% x "%FILENAME%%FILEEXT%"

FOR /D %%i IN (*_files) do (
echo copy %%i\cover.jpeg "%TMP_DIR%\%WORK_DIR%"
copy %%i\cover.jpeg "%TMP_DIR%\%WORK_DIR%\0000.jpg"
if exist %%i\OEBPS (
if exist %%i\OEBPS\image (
echo copy %%i\OEBPS\image\* "%TMP_DIR%\%WORK_DIR%"
copy %%i\OEBPS\image\* "%TMP_DIR%\%WORK_DIR%"
)
if exist %%i\OEBPS\images (
echo copy %%i\OEBPS\images\* "%TMP_DIR%\%WORK_DIR%"
copy %%i\OEBPS\images\* "%TMP_DIR%\%WORK_DIR%"
)
)
if exist %%i\item (
if exist %%i\item\image (
echo copy %%i\item\image\* "%TMP_DIR%\%WORK_DIR%"
copy %%i\item\image\* "%TMP_DIR%\%WORK_DIR%"
)
if exist %%i\item\images (
echo copy %%i\item\images\* "%TMP_DIR%\%WORK_DIR%"
copy %%i\item\images\* "%TMP_DIR%\%WORK_DIR%"
)
)
)


ren %WORK_DIR% "%FILENAME%"
del /q "%FILENAME%%FILEEXT%"

REM
REM Archive Image Files
REM
%ZIPBIN% a -tzip "%FILENAME%%FILEEXT%" "%FILENAME%\*"

REM
REM copy to ARCHIVE Path
REM
if "%FILENAME:~0,8%"=="週刊少年マガジン" (
echo if "%FILENAME:~0,8%"=="週刊少年マガジン" (
set YEAR=%FILENAME:~9,4%
set MAGAZINE_ARCHIVE_PATH=%KOBO_DATA_PATH%\_週刊少年マガジン\%YEAR%
set ARCHIVE_PATH=%MAGAZINE_ARCHIVE_PATH%
)
else (
if "%FILENAME:~0,5%"=="Mr.PC" (
echo if "%FILENAME:~0,5%"=="Mr.PC" (
set MRPC_ARCHIVE_PATH=%KOBO_DATA_PATH%\_Mr.PC ミスターピーシー
set ARCHIVE_PATH=%MRPC_ARCHIVE_PATH%
)
)

if "%ARCHIVE_PATH%"=="" (
set ARCHIVE_PATH=%KOBO_DATA_PATH%
)
echo ARCHIVE_PATH="%ARCHIVE_PATH%"
if not exist %ARCHIVE_PATH% %MKDIR% "%ARCHIVE_PATH%"

REM
copy "%FILENAME%%FILEEXT%" "%ARCHIVE_PATH%"

REM
REM clean up
REM
cd ..\
%RMDIR% /S/Q %TMP_DIR%

:END
==========


今回、実行ファイル名も環境変数にすることで
テスト時には
set MKDIR=mkdir -> set MKDIR=echo mkdir
と echo を噛ませることで実際に実行されずに表示だけさせて確認することが出来ることに気付きました。

何かの参考になればと公開します。


人気記事の一覧のある トップ

楽天のサービス紹介 ページへ飛ぶ

星影の魔術師に
応援のクリックをポチッとお願いします。

にほんブログ村 スマホ・携帯ブログ iPhoneへ にほんブログ村 IT技術ブログ IT技術メモへ

PVアクセスランキング にほんブログ村

皆さんの、協力に感謝しています。

AX





お気に入りの記事を「いいね!」で応援しよう

最終更新日  2020.03.01 21:40:30
コメント(0) | コメントを書く


【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! -- / --
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x

© Rakuten Group, Inc.
Create a Mobile Website
スマートフォン版を閲覧 | PC版を閲覧
Share by: