Foltia with AppleScript

Foltia animelockerのトラブルシューティング

Web小説を読む:電子書籍

今私がこってるのは、Web小説ですかね? よく読ませてもらってます。 昨日デンスケ先生の四度目は嫌な死属性魔術師を読み終えました。 もう3年前に完結した小説でしたが、長くて2週間ぐらいかかっちゃいましたね。 読書に時間がかかってスクリプトの記事が進まなくて・・。 そこが悩みの種でもありますな。

今自分で動かしてるWeb小説をダウンロードしてくるためのスクリプトは、一応不自由なく動作しているんですが、大分前に組んだスクリプトで、継ぎ足しながら作ったので、皆さんに紹介する前に少しわかりやすいように整形しておく必要がありそうです。 自分でもどこにバグが潜んでるかわかりませんしね。 

ちなみにもう一度設計図を書いてみました。(下図 笑)

私プログラム書くときに最初のデザインはこんな感じの落書きから始まってます。 全体を見回してサブルーティン(アップルスクリプトなのでサブハンドラですかね)を区切り直してからまだご紹介ですかね。 

今使ってるのは、小説家になろう小説家になろうR18、カクヨムアルファポリス、ノベルアップさん用ですかね。 読み込みのための操作が一番厳しいのがアルファポリスさんですね。 あと年齢認証があってクッキーを食う必要のあるR18小説家になろうは、実際にSafariでページを一度閲覧する必要があるのでちょっと面倒ではありますね。

基本的に、一つのページに、章、サブタイトル、本文、次のページって項目があるので、それを抽出してゆくことになります。 章はあったりなかったりしますし、1ページ目から読み込む場合と、ある程度読み込んだファイルに追加で書き込んでいったりする場合のために、いろいろな入力条件検出、出力様式のチョイスが必要となるわけで・・。そのあたりのデザインも結構面倒くさいですし、もう一度デバックテストする必要がありそうですね。 

1−2週間したらオープンしようと思ってたんですが、全部書き直して整形する都合上、もう少し時間かかりそうですね。 ゴールデンウイーク明けぐらいですかね?

 

Android StudioとEpubor Kindle Converterを使ったE-pub化-4:電子書籍

で最後にこのファイルをアップル純正のBook.appに登録して見ましょう

こんな感じで。 後でキンドル本って解りやすいように、マイコレクションを作って分けておいた方がやりやすいです。 この本はiCloud driveを介して自分のMaciPhone iPadなどで共有するので、読み終えたらブックから外しておいた方がドライブスペースの節約になります。 

こうやって登録されて

ダブルクリックすると読めるようになってます

ブック.appの設定

Book.appで管理するメリットはやはり既読部位の自動リンクと書籍データーのリンク機能でしょうね。 Book.appは確か起動する際にリンクするiCloudアカウントを登録する必要があったかと思います。

まだリンクしていなければ、ブックのメニューアプリで、アカウントからサインインを選んでみてください。 もしかしたらデバイスの認証も必要になるかな? 今解除したくないんで申し訳ないけどその設定画面のキャプチャーはなしです。

ブックの設定画面で、同期中にコレクション、ブックマーク、およびハイライトはチェックしときましょう

5GBまではフリーアカウントなのでとっておいて損はないでしょうね。 画像とか動画とかをiCloudで共有しているとすぐにいっぱいになっちゃうので、そういう方はお金払ってスペースを拡張してみてください。

次はiCloudの設定をしてみましょう

設定画面Apple IDで iCloudをクリック

まずはiCloudを使用しているアプリ、 その他のアプリを表示をクリックしてみます

ブックをクリックしてOnにしておきます。次はiCloud Driveの設定です

iCloud Driveをクリックするとこのウインドウが出ます。 iCloud Driveに同期しているアプリケーションをクリックすると詳細が確認できます。 これはもしかしたら1番のその他のアプリの設定と連動しているかもしれませんね。 まあ確認の意味でも開いて見てください。

iCloud Driveに同期しているアプリケーションでブックのONを確認。 このあたりの設定を自分のすべてのアップル製品で設定しておくと、登録したEpub本や、しおりや読書履歴が全デバイスでリンクしてくれて、管理が楽になります。 

読書が楽しくなりますよ。

 

次回までまた1週間ほど間を開けてから、Web小説をE-pubに変換する方法について解説してみましょう。 次回からはまたアップルスクリプト多めになります。

 

Android StudioとEpubor Kindle Converterを使ったE-pub化-3:電子書籍

縦書きにする理由

若い方々は案外横書きの本にも慣れておられるんだと思います。 例えばWeb小説なんかはほとんど横書きですしね。 外国語の本や技術書・理系の教科書なんかも横書きですね。 ただ私ぐらいの年齢になると文学は縦書きだなって脳が思ってるみたいで、横書きだと集中出来ないんです。 まあ気にならない人は今回の章ははスキップして次のVol-4を見てもらいましょう。

縦書きにする方法

kakuyomu.jp

上記のリンクを見て勉強しましたわ。 先ずは○○.opfファイルと◇◇.ccsファイルの内容の変更が必要となります。 まあこちらは後でアップルスクリプトで操作するので置いておきましょう。 詳しくはこのエリファス1810さんのページを読んでみてください。 

雑談となりますが、このE-pubファイルの拡張子をZIPにして解凍後のファイルを見ると、html形式で書かれていることが解ります。 cssも使ってますしね。 本当に良く出来たファイルシステムです。 

上記の2個のファイルに記載を追加した後、このファイルをZIPに再圧縮するわけですが、その際大事な事はファイルを圧縮する順番が大事って事ですね。 普通にフォルダ毎まとめて圧縮してもE-pubリーダーは上手く読み込んでくれなくなります。 

上記のリンクはそのパートの詳しい情報ですね。 やり方としては先ずmimetypeというファイルを先に圧縮し、その圧縮ファイルに他のファイルを追加圧縮すると言う方法をとっています。  ではアップルスクリプトで見てみましょうかね?

アップルスクリプトによるEpub-縦書変換

このスクリプトは元のファイルをユーザホームフォルダ最上位に EpuborKindleと言うフォルダを作成してその中にEpubファイルがある事を前提にしています。 もの凄く完成度を高くしたいのでしたら、ドラッグドロップ型のアプレット型アップルスクリプトを作った方が良いでしょうが、そんなに頻度は多くありませんし、いちいち皆さん自分の環境でアプレットを作製する手間を考えたらこのままアップルスクリプトエディター上で動作させた方が楽だなと思います。 

 

 

--set q to {iEpub:( (path to home folder from user domain) as string) & "EpuborKindle:続・魔法科高校の劣等生 メイジアン・カンパニー(7) (電撃文庫) - 佐島 .epub"}

 

tell application "Finder"

     tell folder ( ( (path to home folder from user domain) as string) & "EpuborKindle:")

          set KindleList to every file

          repeat with aFile in KindleList as list

               main({iEpub:aFile as string}) of me

          end repeat

     end tell

end tell

 

 

on main(q)

     set q to q & {tmp:POSIX path of ( (path to home folder from user domain) as string) & "tmp/", iEpub:"", oFolder:POSIX path of ( (path to home folder from user domain) as string) & "EpuborKindle_v/"}

     try

          do shell script "touch " & q's tmp

     on error

          do shell script "mkdir " & q's tmp

     end try

     try

          do shell script "touch " & q's oFolder

     on error

          do shell script "mkdir " & q's oFolder

     end try

     

     

     set iEpub to (q's iEpub)'s POSIX path

     tell application "Finder" to set iEpubName to name of (q's iEpub as alias)

     

     ##tmpに展開

     do shell script "unzip -o -d " & q's tmp & " " & quoted form of iEpub

     set tategaki to "html {-webkit-writing-mode: vertical-rl; -webkit-text-orientation: mixed; -epub-writing-mode: vertical-rl; -epub-text-orientation: mixed; writing-mode: vertical-rl; text-orientation: mixed;}"

     

     do shell script "echo " & quoted form of tategaki & " >> " & q's tmp & "stylesheet.css"

     

     do shell script "cd ~/tmp/ && zip -m kindle mimetype"

     delay 0.2

     do shell script "cd ~/tmp/ && ls -1|grep -v 'kindle.zip'| zip -r -m -@ kindle.zip"

     

     tell application "Finder"

          set kindle to ( ( (path to home folder from user domain) as string) & "tmp:kindle.zip") as alias

          do shell script "mv -f ~/tmp/kindle.zip ~/EpuborKindle_v/"

          try

               set Old to ( ( (path to home folder from user domain) as string) & "EpuborKindle_v:" & iEpubName) as alias

               delete Old

          end try

          set kindle to ( ( (path to home folder from user domain) as string) & "EpuborKindle_v:kindle.zip") as alias

          set name of kindle to iEpubName

     end tell

end main

 

こんな感じでどうでしょう?

これで実行してみると

こんな感じでepuborKindle_vフォルダ内に縦書きになったEpubデーターが出現します

 

Android StudioとEpubor Kindle Converterを使ったE-pub化-2:電子書籍

前回の続き

前回これに沿って説明してきましたね。 前回Kindle APKをインストールするところで終わっていたのでその後から続けて行きます。

Kindle APKをインストールするとアプリ画面で

こんな風にKindleアプリがインストールできます。 クリックして開いてみましょう。

クリックするとスタート画面が出ます。ご自分のAmazonアカウントを入力してログインする必要があります。 ちなみにこのログインの最初のこのページだけは、キーボード入力じゃなくて、下のバーチャルキーボードを使わないと先に進めないってサイトには書いてありました。 エンドレスループするらしいですね。 この後の入力は普通にキーボード入力で大丈夫そうです
サインインすると、Captchaによる目視入力をさせられ、その後登録しているメッセンジャーへ6桁のパスワードが送られてきて2段階で認証完了です。

開くとこんな風に書籍を閲覧、ダウンロード出来ます。 ダウンロードするとエミュレーター内にデーターが保存出来て、Epubor Kindle converterから認識出来る様になります。 この際最初の記載に戻りますが、エミュレーターがStarting up状態だと次のステップに行けないので、きちんと起動するまでアンドロイドスタジオの再起動などしてみてください。

Device ManagerがStarting up状態でなくて、こうやって完全に起動していないとなぜかEpuborから認識されない様に思いますし。 こうなってないとエミュレーターを停止することが出来なくなってます。 これが解るまで、このエミュレーターの再インストールを私10回ぐらいくりかえしました。

Epubor Kindle Converter

Epubor Kindle Converter User Guide のトップにある、Step 1 Download the latest versionからKindle Converter for freeをダウンロードしてきます。 このアプリは3回まではフリーで変換出来ますが、それ以降はお金払わないと使えません。 起動すると

こんな感じのウインドウが出てきます、左側のテーブルリストにダウンロードしたKindleファイルが見えれば成功です。 右の大きなウインドウにドラッグして。

下のConvert to Epubをクリックすると、自分の指定したフォルダ(トップのフォルダですね)、私の場合は ~/EpuborKindleというフォルダを作ってそちらに入れてます。

で出来たファイルをアップルのブックに入れると読める訳ですが、ここで決定的な問題が発生します。 それはこの電子書籍が横書きになっちゃう事なんですよ。 普通の本に慣れちゃってるとこの横書きってのは気分が出ないし、読みづらいです。 なので次はそれを縦書きに変更する方法を説明しましょう。

 

Android StudioとEpubor Kindle Converterを使ったE-pub化-1:電子書籍

Epubor Kindle ConverterとAndroid Studioを使ったデコード

Epubのファイルって元々HTML構文のテキストファイルと画像を組み合わせた定型フォーマットのZIP圧縮なんです。 基本的にKindleも同じフォーマットでおそらくZIP圧縮時のパスワードのロックがかかっていたのだと思います。 最近のKindle.appだとそれは修正されているみたいですね。 このEpubor Kindle Converterもある特殊な条件でないとデコードできなくなってます。 やり方はこのサイトがよくまとまってました。 でもやっぱりやってみるといくつかトラブルもあるので、そういった不具合についてもコメントしながら説明して見ましょう。 

大まかな流れとして、MacOSで、

  • Android StudioAndroid emulatorを使って、
  • Kindle APK version 4.16を使ってファイルをダウンロード後、
  • そのダウンロードしたファイルをEpubor Kindle Converterを使ってデコードする

という流れです。

内容は英語で書かれているのでちょっと抜粋して書いてみましょう。

Android studioを設定

先ずこのリンクからAndroid Studioをダウンロードしてきます

developer.android.com

下の方にM-1 Mac用のandroid-studio-2023.2.1.23-mac_arm.dmgをダウンロードしてきます。

ダブルクリックしてインストールします。 Install Typeは Standardを選択

Licence Agreementが表示されるのでAcceptして Finishをクリック

インストールが終了するとWelcome画面が表示されます。

起動するとWelcome画面が表示されるので、右したのmore actionのプルダウンメニューで Virtual Device Managerを選択

 

Device Managerが開くので左上の+ デバイス追加ボタンをクリックしましょう

バージョンによって表示されるエミュレーターが違うので、左のSearch Re...をクリック、検索ウインドウにWVGAと入力すると該当するエミュレーターが出てきます。 5.1" WVGAを選択します。選択したらNextボタンです

トップのウィザード Other Imagesを選択して、Marshmallow /23/ armeabi-v7aを選択します。 この例はすでにダウンロードされているのでMarshmallowにダウンロードアイコンがありますが、初回はダウンロードアイコンをクリックしてSystem ImageをダウンロードしてからNextボタンを押しましょう

Device Managerに 5.1 WVGA API 23が出来てますので、右端のスタートボタンを押すと、emulatorが起動します。

トラブル1

じつはこの起動とても時間がかかってるだけかフリーズしているのかいまいち解りにくいです。 

エミュレーターが起動している様にみえても、Device Manager上ではStarting upと表示されているときは、あらゆる操作を受け付けてくれません。  この場合アンドロイドスタジオの再起動が必要そうです。 再起動するとあっさり起動したりします。

この状態でKindle アプリをドラッグしてインストールしようとするとこのようなエラーが出て先に進めません。 私の環境だと、一度Android studioを終了して再起動するとなぜか

こうやって起動してくれます。 この状態になるまで、終了とアプリの再起動が必要だったりしました。

続き

Kindle APK version 4.16をダウンロード

Kindleアプリをダウンロードします。 そのアプリkindle-4.16.apkをエミュレーターにドラッグするとインストールが開始します

インストールが開始します。 このインストールはM1マックで10分ぐらい掛かります。かなり長いと感じますが我慢しましょう。

ちょっと長いので一度この辺で止めときましょう。