カクヨムをタテにしてEPUB3電子書籍でヨム
時事ネタ。
カクヨムの作品URLを入力したらEPUB3の電子書籍としてダウンロードできるようにしてみた。
カクヨムに上がっているWEB小説をEPUB3ファイルにすることで、KindleやiBooks、Kobo、Knoppy(紀伊国屋)、hontoなどの電子書籍リーダーやアプリで読むことができる。
サイトをクロールしてEPUB3にパッケージするスクリプト程度なら手元の部品の継ぎ接ぎでそれっぽいのができるので作った。
(カクヨムのHTMLの構造が変わったらそれまでだし、たぶんカドカワのことなのでそのうちEPUB3変換のクチも別メニューで出てきそうで、メンテするのも不毛なのでこれっきりの一発ネタだろう)
https://t2aki.doncha.net/tmp/kakuyomu2epub.pl
↑カクヨムを電子書籍にしてダウンロード
※直リンクできないフォルダなので、ご利用の場合はこのリンクからよろしく。
※権利侵害にあたるような利用は厳禁です。
※検索などでこのページにたどり着いたらURLが「https」で始まっているか確認ください。「http」だとたぶんいろいろ表示できていません。
アンドロイドのスマホでダウンロードできないことがあるけど、アンドロイドアプリのFirefox(https://play.google.com/store/apps/details?id=org.mozilla.firefox&hl=ja)ならダウンロードできます。それ以外、PCやMac、iphoneなどは問題なくダウンロードできます。
[2020/01/27 22:11:50]
カクヨムのページを見ると書籍化作品が着々と増えていた。WEB掲載が商業デビューのパスとして確立してきてるんだな
カクヨムは横書きのサイトなので半角の英数字などは縦書きにしても寝転がったまま…うーん、こりゃしょうがあるまい。
(かなりテキトーなでっちあげ)
[2016/03/15 16:15:01] 追記。
連続する半角数字以外に、半角の「!?」「?!」「!!」に縦中横のスタイルを当てるようにした。
[2016/03/19 10:59:01] 追記。
それっぽい奥付生成。
完結したストーリーの本文を取りこぼすバグ修正。
[2018/05/22 21:44:12]
カクヨムのHTMLが変わっていて目次を取得できなくなっていたのを修正。
また、一部の文字(実体参照)は面倒なんで削除することにした。
[2024/02/03 09:21:08]
全然使いものになってなかったのを修正。
なろうを電子書籍に変換してダウンロードするページはこちら
https://t2aki.doncha.net/?id=1460978141
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
紙印刷本から電子書籍から紙印刷本というエコシステム
InDesignからSigil経由のEPUBファイルをInDesignへ。
何を言ってるかわからないと思う。わたしも最初聞いた時は驚いた。
紙で出版されたものが電子書籍として配信されて、今度はその配信されたものを組み直して再び紙印刷本へというお話。
売れっ子グラビアアイドルが、AVに出演した後、温泉街のストリップに流れる、みたいな変遷。逞しい話で、名作(テキスト)は姿形を変えてもしっかり生き残るという良い例だろう(ほんまか)
おそらく元になってるInDesignデータは出せなくて(権利的な話じゃなく、たぶん探すのが面倒、もしくはもうなくなっているので)電子書籍のEPUB3ファイルを元にするしかない。
ということで、そのEPUB3ファイルをバラしてInDesignに流し込みという雇用創出となった。
まだEUPBファイル制作のソフトが出揃ってなかったんだと思う。
ファイルは、一時使われていた縦書きにもできる改造版Sigilで作られているっぽい(EPUBファイルのフォルダ構成やファイルの命名規則がどっかで見たことあるなあと)
でもまあ、青空記法に独自規則のアレンジとかdotBookからのHTMLっぽいデータよりはEPUBファイルの方が扱いやすい。
・組み直しになるので、元のレイアウトにこだわる必要ない。
・小説なので、EPUBファイルから拾い上げるのはルビと圏点、外字程度。
ルビはグループルビのタグがついているし、圏点はsesame(ゴマ)というクラスが指定されている。外字は画像になってるのでそこは「〓」にしておいて校正で対応。
↓InDesignにはタグ付きテキストというのがあって
https://help.adobe.com/ja_JP/indesign/cs/taggedtext/indesign_cs5_taggedtext.pdf
テキストデータにルビや圏点のタグを付けてInDesignに「配置」すればそのままルビも圏点も生かしてくれる。
以下のスクリプトでEPUB3のルビと圏点のタグをInDesignのタグに変換してやれば大丈夫だった。
文字コードでちょっとハマった。
InDesignで「配置」する時、文字コードはShift_JISかUTF16じゃないと文字化けしてしまう。
元にするEPUB3ファイルの文字コードはutf8(BOM無し)。
EPUB3のUTF8をShift_JISにすると文字化けを起こす可能性があるような気がするので、とりあえずutf8のまま上記スクリプトでタグ変換して、エディタで開いて文字コードをUTF16に変換した後、配置した。
Adobeのタグ付きテキストのPDFを見ると、かなり細かく制御できるので、ちゃんと探せばこの手のコンバート系でいろんな強力なツールが出てるはず。
でも、たぶん、そんな継続する案件でもなさそうなので、テキトーな使い捨てスクリプトでやっつけ仕事。
しかし、ほんとニッチな需要もあったもんだ。
ガッテンしていただけたでしょうか。
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
WINDOWSの音声合成Harukaさんは有能だ
音声合成ネタ。
WINDOWSも8から音声合成エンジンがデフォルトで利用可能になったとか(わたしはいまだにwindows7なので伝聞情報)
その日本語音声のHarukaは、ユーザー補助のテキスト読み上げに使われているもので、かなり自然に聞きとれる。macもそうだけど、こういうところは、アメリカさんは、きちんとしっかり対応するんだなあ、と素直に感心してしまった。
マイクロソフトの取り組みとしては
【Microsoft】日本語音声合成エンジンのご提供について
https://www.microsoft.com/ja-jp/enable/products/7narrator/default.aspx
マイクロソフトでは、障碍 (しょうがい) のある方のパソコン活用に役立てていただくため、日本語音声合成エンジンを無償 (数量限定) でご提供します
という記事が2010年ごろ(?)に上がっていたようだ。
てことで、試したくなったので、検索してみたらば、もう5年以上も前からいろんなブログや掲示板などでノウハウが公開、蓄積されていた…おのれの不勉強に今さらながら呆れてしまう。
無料の音声合成エンジン 「Microsoft Speech Platform 11」
https://mahoro-ba.net/e1541.html
SAPI有効にする方法
https://yarimasu.ankochan.net/d/SAPI%CD%AD%B8%FA%A4%CB%A4%B9%A4%EB%CA%FD%CB%A1
Windows7で音声合成(Text to speech)
https://blog.mogya.com/2012/01/windows7text-to-speech.html
↑こちらのページを参考にWINDOWS7のネットブックにHarukaをインストールした(有用な情報ありがとうございます)
やることは3つ
・Microsoft Speech Platformのインストール
https://www.microsoft.com/download/en/details.aspx?id=27225
x64_SpeechPlatformRuntime.msi(64bit)
x86_SpeechPlatformRuntime.msi(32bit)
↑どっちか。
・TTS音声Harukaのインストール
https://www.microsoft.com/download/en/details.aspx?id=27224
MSSpeech_TTS_ja-JP_Haruka.msi
・レジストリの設定
上記のページを参考に。コマンドプロンプトを管理者モードで立ち上げて
↑をコピペして実行
このユーザー補助に使われる音声、macはコマンドラインでsayコマンドを使えば簡単に利用できたんだけど、WINDOWSがちょっとわからず、結局またperl(Active PerlでWin32)から使うことになってしまった。
読ませたのは『地下生活者の手記』ドストエーフスキイ・米川正夫訳の一節。
「悪人にも、善人にも、卑劣漢にも、正直者にも、英雄にも、虫けらにもなれなかった」
WINDOWSとMacの音声聞き比べ。
「WINDOWS7 SAPI5 Haruka」
「Mac sayコマンド」
WINDOWSもmacも。
OSのデフォルトレベルでここまで聞きとりやすくなってんだなあ。
電子書籍でいうと、これに人名や当て字、ルビを読めれば十分だし、さらに読み上げている箇所のハイライト表示とか、それらの仕込みも実は進んでるんじゃないか。となると、マルチメディアDAISY図書やmedia overlaysによる音声付きEPUB3電子書籍は過渡期の徒花かも。
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
青空文庫のルビや傍点をHTMLタグに変換
小ネタ。
青空文庫形式で書かれたテキストをちょっといじる機会があったんで、例によってperlでごそごそと。
『青空文庫 組版案内』(https://kumihan.aozora.gr.jp)に詳細な資料や、青空記法で書かれたテキストをXHTMLに変換するrubyのスクリプトも提供されている。
青空文庫からXHTMLへはrubyのスクリプトを使わせてもらえばそれで解決なんだけど、用途・前提が青空文庫。当然ながら青空文庫用のcssが埋めこまれる。
電子書籍にするのにそのままでは使えない。
本文で青空記法が使われてるのはルビと傍点、太字程度だったので、その3つをHTMLのタグに変換するスクリプトをでっち上げ。
perlのスクリプト的には、漢字かななどの判定にUnicodeブロックが便利でおすすめ。
無名サブルーチンも便利。
意外なところで青空記法が使われててちょっとびっくりだった。
テキストデータ利用ということで、ボランティアさんが入力するのに青空記法はわかりやすくていいんだろうなあ。
青空EPUBの現バージョン3-1.1.0b45はepubcheckでエラーになる。
原因はnav.xhtmlのlandmark部、「Undefined property:title-page」で、ここを「titlepage」にすれば大丈夫。
自転車置き場の新顔…のわりに態度がデカイ。
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
ImageMagickを使わずperlだけで画像サイズを取得
ハイブリッド型EPUB3を生成するスクリプトのフィックスページ部分で画像サイズを取得する必要があった。
「かんたんEPUB3作成ハイブリッド型EPUB3対応版」https://t2aki.doncha.net/easy_epub-hybrid
定番のImageMagickを使えば簡単なんだけど、ImageMagickが簡単じゃなかった。
WINDOWSではImageMagickのインストールが必要で、さらにActivePerlをインストールしたら一緒にインストールされるppmを使ってImageMagickを使うためのperlのモジュールのインストールが必要。ユーザーさんに別途インストールしてもらうにはちょっとハードルが高い。
macはさらに致命的で、macport でインストールしても、パッケージがあったのでそれをインストールしても、ソースからコンパイルしても、肝腎のJPEG、PNGに対応したものを作れなかった(JPEGはどうにかこうにか、まずJPEGのライブラリをインストールしてmakeしなおしたらjpeg対応版ができたけど、PNGがお手上げ)
JPEGにもPNGにも対応したImageMagickを使ってるひとがいるようなので、わたしのスキル、知識不足。だけど、自分でうまく行ってないものをユーザーさんにインストールしてね、というのは無理すぎる。致命的。
「かんたん」を謳う以上、面倒くさいことはひとつでも増えちゃいけない。
てことで、扱うのはJPEGとPNGだけだし、perlだけで画像サイズを取得する方法を探してgoogleさま。
ありがたいことに、そのまま利用できるサブルーチンなどがいくつかアップされていた。
ただ、そのまま=ブラックボックスのまま使わせてもらうと、あとあとメンテの時などに困るのは火を見るより明らか。猿程度の理解は必要だろうと、画像について、その扱いについて調べたので、備忘録。
・PNGは簡単らしい。
16byte | 4byte | 4byte |
width | height |
16byte目からの4byteに幅、続く4byteに高さのピクセル数が入っているので決め打ち。
幅高さをネットワークバイトオーダーのビッグエンディアン(32bit)で取得するだけでOK。
・JPEGがちょっと面倒。
JPEGというのは複数のセグメントの塊
マーカー | 2Bytes |
セグメントサイズ | 2Bytes |
セグメント本体 | 可変 |
画像情報を格納しているのはSOFという種類のセグメント。
マーカーというのは16進数の「FF」がセグメントの開始を表していて、これはどういうセグメントですよという内容を意味するのが「FF」に続く1Byteのバイナリ。
SOFセグメントのマーカーで、JPEGのベースラインは「FF」「C0」プログレッシブは「FF」「C2」ということらしい。
ファイルの先頭から見て「FF」が見つかったらそこからセグメントの開始となる(ファイル先頭と最後にはマーカーだけのセグメントがあるので、先頭の2Bytesは読み飛ばす)
必要なのはJPEGの情報が入ったSOFセグメント。
1)
4Bytes読み込む。
2)
unpackでマーカーとセグメントサイズを取得する。
3)
→マーカーの1byteがFFじゃなかったら終了。
→マーカーの1byteがFFでセグメント内容がC0かC2なら続くセグメント本体を読み込む。
→マーカーの1byteがFFでセグメント内容がC0でもC2でもなかったら、セグメントの本体サイズ分読み飛ばして次のマーカーからの4byteを読む
4)
画像サイズはセグメント本体先頭に入っている。
サンプルの精度 | 画像縦サイズ | 画像横サイズ |
1Byte | 2Byte | 2Byte |
unpackで取得できる。
てことで、easy_epub-hybridに組みこんだサブルーチンが以下。
スクリプトの中からImageMagickを使うシチュエーションのほとんどが画像サイズの取得なので、これは重宝しそうだ。
jpeg画像について、おそらく間違ってるところがあると思うので、きちんとした知識は以下のサイトへどうぞ。
参考にさせていただいたサイト
https://tohoho-web.com/lng/200003/00030402.htm
https://www2c.biglobe.ne.jp/~osakana/vc/pc/jpegsize.html
https://hp.vector.co.jp/authors/VA032610/JPEGFormat/marker/SOF.htm
https://www.setsuki.com/hsp/ext/segment/sof0.htm
情報、丁寧な解説ありがとうございます。
そういえば。Ingress Lv.15になった。なんかAP稼ぎだけで今イチ面白みがなくなってきたなぁ。
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
CotEditorからapplescript経由でperlへ
applescriptというのを初めて触ってみた。
平文でわかりやすいシェルスクリプトて感じ、かな。
WINDWOSのxyzzyでやってるのと同じこと、ほぼ近いことをmacのCotEditorでもやりたい、ということでスクリプトメニューにperlのスクリプトを登録。これは気軽手軽に思ったことができるのでありがたい。外部のスクリプト、perlじゃなくてもrubyやphp、シェルスクリプトが使えるなら万能だ。
ということでやってたんだけど。
外部スクリプトはひとつにして、スクリプト内で処理を振り分けたい。処理単位でスクリプトを作ってスクリプトメニューに登録するとキリがない。それには対話的にユーザー入力をスクリプトで受け取りたい。ユーザーが入力したテキストでも処理を振り分けたい。
→ユーザーの入力を受け取る仕組みが必要。
CotEditorが外部スクリプトの処理した内容を受けとるのは編集中のテキスト上か、あるいは使わないかの2択だけど、外部スクリプトは必ずしもフィルタ的な用途だけじゃない。処理した結果(出力内容じゃなくて、戻り値みたいなもの)を受け取って確認するだけ、とか、選択範囲を処理してその部分をWEBの管理ページにペーストするだけ、とか、できれば元テキストはそのままの状態にしておいて欲しいということもある。
→作業用の新規ドキュメントがあれば助かる。
どちらも、perlやシェルスクリプトなどの外部スクリプトではちょっと難しそう。ていうか、スクリプト側からではアクセスできないこと、かな。
なので、ちょっと調べてみた。
applescriptを使えば、ユーザー入力を取得するdialogを出せる、CotEditorに新規ドキュメントを開くように言うこともできる。
1)テキストに選択範囲があったらば。
dialogを出して、選択範囲のテキストに対してどんな処理をするのか指示を受けとる。
スクリプトに入力されたテキストを引数として渡す。選択範囲のテキストはechoで出力してパイプでスクリプトに流しこむ。
2)選択範囲がなかったら。
ファイル名、パスを見てどんな処理をするのか判断する。
スクリプトにはフルパスのファイル名を引数として渡す。
どちらの場合も出力先は新規ドキュメント「名称未設定」とする。
ごそごそ調べて書いたapplescirpt
↑これを「util-perl.@p.applescript」という名前にして、「~/Library/Application Support/CotEditor/ScriptMenu」フォルダに入れておけばCotEditorで作業していていつでも呼び出せる。
自分環境・自分作業内容に特化したスクリプトで、誰にとっても有用・便利に使えるものではないけど、applescriptにはまったく馴染みがないので、備忘録としてメモしておこう。
明日にはもう忘れているであろう自分のためにもメモが必要なのだ。
[09/07 20:56:44]ちなみに。
applescriptの「do shell script」はスクリプトの標準出力を取得している。
たとえば、perlのスクリプトチェックの「perl -wc」は標準エラー出力。applescriptに出力させるには標準エラー出力(STDERR)を標準出力(STDOUT)に向けてやる必要がある。
perlのスクリプトの中で
open STDERR, ">&", *STDOUT
この1行を該当するサブルーチンに入れておく必要がある。
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」