データベース(KoboReader.sqlite)書き換えスクリプトを実行するランチャー

使用は自己責任で。
データベースをいじるので、バックアップをかならずとってから。

--- v0.2 のreadme（インストール方法などは下の初版のreadmeのところ）--
変更点：
・CFWの本棚作成スクリプトを組み込んだ
・データベースのバックアップ機能追加（おまけ程度のもの）

CFWは「Kobo Hack Uploader」から。
http://ux.getuploader.com/KOBO_HACK/

◯「コレクション作成（CFW方式）」(= cfw_createbookshelf.sh)追加
コレクション（本棚）の設定は.kobo/koboCFW.confで行なう。

ランチャーの「コレクション作成（CFW方式）」で使えるのはkoboCFW.conf内
の「Section4 自動本棚作成設定」のみ。ここをよく読んで設定を。コレクショ
ンを著者名で作るか、フォルダで作るかなど、いろいろ設定。

あと、CFWの本棚作成スクリプト(createbookshelf.sh)の前に、
contentupdate.shを実行するようにしたので、cbz/cbrの著者名自動更新機能
も使える。これについては、
*** CFWのreadme.txtから引用 ***
CBZ、CBRファイルのファイル名が [著作者名] 書籍名.cbz(またはcbr)という
フォーマットに準拠している場合、Kobo上の著者名、書籍名を自動で正しく更
新する機能
（・・略・・）
　■ ファイル名の命名規則
　　著者名自動更新機能は、ファイル名から著者名を割り出すという行為の関
　　係上著者名を指し示す「 [] 」の文字がファイル名に何度も出現すると
　　正常に動作しません。
　　　○ [怪しい著者] 怪しい本（上）.cbz
　　　○ [怪しい著者] 怪しい本(上).cbz
　　　× [怪しい著者] 怪しい本[上].cbz
　　[] は著者名以外の部分には使用しないように注意して下さい。
*** 引用おしまい ***

著者名のメタデータがないcbz/cbr（あとたぶんpdf）でも、データベースに著
者名を登録するので、
・ライブラリのリスト表示で「著者不明」にならず、著者名が表示される
・コレクション（本棚）作成のオプション(koboCFW.conf)で「著者」(ATTR)に
しても、きちんと分類される

＊ koboCFW.confを変更したら、面倒だがkoboを再起動させる必要がある。設
定変更が反映されない。

なお、contentupdate.shを実行するため、koboCFW.conf内の
「PDF,CBZ,CBRファイルのページ送り補正機能」（UpdatePDFPageDirection）
も使えるが、この機能はランチャー自体にすでにあるので、"OFF"にしたほうが
混乱はないかも。

△補足
CFWのスクリプトはすべてcfw_scriptsフォルダに入れておいた。動作確認はし
ていない。が、試してみたいならどうぞ。
led-blink.shは使えないだろう。recentlyreading.shあたりはrcS*が絡むので
たぶんダメか？
試してみたいスクリプトがあるなら、applicaitions.in に1行追加するだけで
いい。たとえば、

 zip/rarをcbz/cbrに自動変換   =  cfw_scrcipts/ReplaceFile.sh

みたいな感じ。左辺は適当でいい。右辺にスクリプトのパス。スペースはタブ
か半角スペース。さらにkoboCFW.confでON/OFF設定を。最後に変更を反映さ
せるためにkoboを再起動。


◯データベースのバックアップ
「DB dump（バックアップ）」  = DB_dump.sh
「DB restore（復元）」     = DB_restore.sh
あくまでもおまけ。バックアップはDB_backフォルダに残る。
KoboReader.sqliteをそのままコピーするのではなく、ダンプ／リストアにし
たのは、破損したデータベースがダンプ／リストアで修復される可能性があるか
ら。実際何度かそれで救われた。


--- 以下、初版のreadme --
◯ソース
・ランチャー　KoboLauncher for standalone Qt apps
http://www.mobileread.com/forums/showthread.php?t=201632
http://vlasovsoft.triolan.com.ua/files/kobo/ から
pbchess-2015.07_kobo.zip を利用。

・KSM07用のデータベース書き換えスクリプト
https://dl.dropboxusercontent.com/u/47735857/kobo-shell-scripts.zip
これのスクリプトについては、
http://soranoji.air-nifty.com/blog/2015/02/kobo-fw3131-aab.html#comment-117624218 参照。

この2つを元に、データベース書き換えスクリプト専用のランチャーを作成。
元のKoboLauncher for standalone Qt appsのゲームやCool Readerなど
アプリケーションを削除して、データベース書き換えスクリプトを追加しただけ。

元のKoboLauncher for standalone Qt appsと共存できるはずだが、動作
確認はしていない。

◯インストール
1. Launcher_for_db_scripts.zipを解凍する。ファイルは3つ。
000_db_scripts.png
KoboRoot.tgz
readme.txt

2. 000_db_scripts.pngをPCにつないだKobo端末のルート（ドライブの一番上）
にコピー。場所はそこ以外は不可。
USBケーブルを抜いて、ホーム画面／ライブラリの「本」リストに
000_db_scripts.png のサムネイルが現れるのを確認する。

＊サムネイルが出現して、データベースに登録されたのを確認しないうちに
　次の作業に移ってはいけない。KoboRoot.tgzといっしょにコピーすると、
　おかしな挙動になる危険性がある。

3. ふたたびKobo端末をPCにつないで、KoboRoot.tgzを端末の.koboフォルダに
コピー。その後、USBケーブルを抜くと、自動的に再起動する。
これでインストール終了。

◯FWをアップデートしたり、端末の「アカウント」設定からでログアウトした
場合には、再インストールが必要になる。

◯アンインストール
.kobo内の、
on_start.sh
fmon
db_scripts
vlasovsoft
を削除して、かならず再起動。


◯使い方
ホーム画面・ライブラリに見える000_db_scripts.pngのサムネイルをタップす
ると、ランチャーが起動する。

・初回起動時にLanguageの設定を求められるので、適当に選んで「OK」をタッ
　プ。

・ランチャーのメニュー画面
スクリーン下部右の「電源スイッチ」アイコンをタップすると、ランチャーが
終了して、ホーム画面に戻る。

スクリーン下部の真ん中の「ギア」アイコンが　ランチャー自体の設定。ラン
チャー使用時のフロントライト、スリープなどの設定がある。

・スクリプトの実行
1. 変更したい項目をタップ
2.「更新中」の黒い画面になる
3. 処理が終わると、ランチャー画面に戻る
4.「電源スイッチ」アイコンで、ホーム画面に戻ることができるが
5. 念のため Reboot を
再起動なしにデータベースの書き換えを繰り返していると、データベースがお
かしくなりそうな気がするので、最後は再起動しておいたほうがよさそう。
Koboのデータベースはよく壊れるので。

・データベースの更新が必要ない場合
1. タップ後、「データベース更新の必要はありません」の表示が出る
2. 数秒後、自動的にランチャー画面に戻る
すでにスクリプトを実行して、本の追加もないのに、また同じスクリプトを実
行したときなどはデータベースを書き換えない。

が、同期して新しく本を追加した後でも、「データベースの更新の必要はあり
ません」になる場合がある。このあたり、ダウンロードとUSB接続による手動
追加とでは何かが違うのか？

・「データベース更新の必要がありません」になってもスクリプトを実行
1. ランチャーの「MD5チェックサム リセット」をタップ
2. 目的のスクリプトを実行

◯ランチャーのメニュー項目とスクリプトの対応
.kobo/db_scripts//applications.ini を参照。
使わない項目をメニューから消したいときは、applications.inから該当する
行を削除する。

・ランチャーのメニュー（.kobo/db_scripts/applications.ini）
順に説明。

cbz/cbr/pdf: ページ送り > rtl 左   = PPDrtl_cbz_cbr_pdf.sh
cbz/cbr/pdf: ページ送り > ltr 右   = PPDrtl_cbz_cbr_pdf_revert.sh
　「ページ送り > rtl 左」
　スクリーン左をタップで次ページに進む、もしくは、左から右にスワイプ、
　に変更する。
　縦書き和書は"rtl"が普通。"right to left"(rtl)は、紙の本を開いた時、
　和書は右ページを読んで、次に左ページに進むから。横書きの本や洋書は逆の
　"ltr"。

和書(kepub): ページ送り > rtl 左　 = PPDrtl_ja_kepub.sh
和書(kepub): ページ送り > ltr 右  = PPDrtl_ja_kepub_revert.sh
　kepub(.kepub.epub)の和書が対象。Koboの和書はこれが普通。
　epub(.epub)の本は対象外。

和書: 行間/余白/フォント調節 有効 = ReplaceLanguageCode_ja_Alt.sh
和書: フォント調節のみ 有効      = ReplaceLanguageCode_ja.sh
和書: 行間/余白/フォント すべて無効  = ReplaceLanguageCode_ja_default.sh
　洋書と違って、和書は行間・余白・フォントの太さの調節ができないように
　なっている。楽天はそれをいつまでも放置して、日本語環境を整備する気が
　ないようなので、勝手に対策。本の言語設定を日本語（"ja")以外にすると、
　それらの調節が可能になるという、理不尽ではあるが・・・。（このスクリ
　プトを使うと言語設定は「English」になる。具体的には"enm"、"jpn"に
　変更する）

　注意 1)
　　余白は、フルスクリーン・モード（ヘッダー、フッターの表示オフ）にしな
　　いと、うまく調節できない。フルスクリーン・モード推奨。フルスクリー
　　ン化の方法は、下記の「◯補足 1」参照。
　注意 2)
　　「フォント調節」を有効にすると、フォントの太さを調節できるようにな
　　るが、ただし「フォント詳細設定」有効化パッチが必要。
　　このパッチについては、下記の「◯補足 2」参照。

和書(epub): ページ送り > rtl 左  = PPDrtl_ja_epub.sh
和書(epub): ページ送り > ltr 右  = PPDrtl_ja_epub_revert.sh
　kepub以外のepub和書が対象。

ランチャーのメニューにはないが、以下の2つのスクリプトは
applications.iniに追加すれば使える。

PPD: ltr指定の全書籍 > rtl 左   = PPDltr_revert.sh
PPD: rtl指定の全書籍 > ltr 右   = PPDltr.sh
　PPDはPageProgressDirectionの略。ページ進行方向。
　和書のepubは普通"rtl"の指定がしてある。
　だが、cbz/cbr、pdfはPPDが"default"だったり、洋書は指定が空白だった　
　りする。それらの本にはこの2つのスクリプトは適用されない。
　洋書にも使えないし、和書は上のスクリプトで対応できるので、不要？

以上でおしまい

-- 
◯補足 1
「フルスクリーン・モード」（ヘッダー、フッターの表示オフ）
1) PCにつないだKoboの、.kobo/Kobo/Kobo eReader.conf をエディタで
開いて、
[FeatureSettings]　　　
FullScreenReading=true
の2行を追加。改行コードをLF（Unix方式）にできるエディタが無難。それか
ら再起動を。

2) Koboの上部メニューの「設定」 > 「読書設定」と進むと、
「ヘッダー、フッターを表示：」という項目が追加されているので、
チェックをはずす。

◯補足 2
「フォント詳細設定」有効化パッチ(Metazoa firmware patch)
http://www.mobileread.com/forums/showthread.php?t=260100
から、FWのバージョンに合わせてパッチをダウンロードすること。

この中にはたくさんのパッチが含まれているが、関係のありそうなところだけ
解説。

1) ダウンロードしたpatch_kobo_3xxx.zipを解凍。（3xxxはFWのバージョン）

2) patch_kobo_3xxx/3.xx.x_source/libnickel.so.1.0.0.patch を
エディタで編集する。この中の、

1.「フォント詳細設定有効化」パッチ
patch_name = `Freedom to advanced fonts control`
patch_enable = `no`
この`no`を`yes`に書き換える。`はバッククォート。

2.「行間調節をデフォルトの10段階から15段階に変更する」パッチ
patch_name = `My 15 line spacing values` 
patch_enable = `yes`
yesとなっているが、パッチのデフォルトでは
# 15 values for replacement:
replace_float = 5E81D0, 1.0, 0.7
replace_float = 5E8298, 1.05, 0.75
replace_float = 5E82A0, 1.07, 0.8
replace_float = 5E82A8, 1.1, 0.82
replace_float = 5E81D8, 1.2, 0.84
replace_float = 5E82B0, 1.35, 0.86
replace_float = 5E81E0, 1.5, 0.88
replace_float = 5E82B8, 1.7, 0.9
replace_float = 5E82C0, 1.8, 0.92
replace_float = 5E81E8, 2.0, 0.94
replace_float = 5E82C8, 2.2, 0.96
replace_float = 5E82D0, 2.4, 0.98
replace_float = 5E82D8, 2.6, 1.0
replace_float = 5E82E0, 2.8, 1.05
replace_float = 5E81F0, 3.0, 1.1
これは
「元の行間"1"を"0.7"に変更
　・・・中略・・・
　元の行間"3"を"1.1"に変更」
という意味。行間の変更幅を"0.7"から"1.1"までと小さくしている（欧文向
き）。なので、各行末の数値を好みに変更したほうがいい。和書の場合ルビが
あったりするので。面倒なら、
patch_enable = `no` にして、パッチを適用しない。

3.「左右の余白の変更幅カスタマイズ」パッチ
patch_name = `Custom left & right margins`
patch_enable = `yes`
これもyesになっているので、自分の好みに変更するか、`no`にしてパッチ
を適用しないか、のどちらかで。
# 9 values for replacement:
replace_int = 0000, 00, 00
replace_int = 0004, 02, 01
replace_int = 0008, 04, 02
replace_int = 000C, 06, 03
replace_int = 0010, 08, 04
replace_int = 0014, 10, 05
replace_int = 0018, 12, 06
replace_int = 001C, 14, 07
replace_int = 0020, 16, 08
上の行間のパッチと同じなのでわかると思うが、デフォルトの半分になってい
る。変更するのは行末の数字だけ。他は変えてはいけない。

4.「kepubでフォントがサイドで切れるバグ」の修正パッチ
patch_name = `Fix kepub side bearing font cut-off bug`
patch_enable = `yes` 
`yes`にしたら、その下のType1 か Type2 を選ぶが、Type1なら、

# **1** Choose to fix bug for Type1 kepubs only, or both Type1 and Type2 kepubs.
# Default fixes the bug for Type 1 kepubs and has no effect on type 2 kepubs.
#
# Uncomment the following replace_string line to fix the bug for both types,
# but beware there can be undesirable side effects for some Type 2 kepubs:
#replace_string = 05CC, `b\0o\0d\0y\0>\0d\0i\0v\0`, `b\0o\0d\0y\0>\0*\0 \0 \0`
　この最後の行、先頭の#を削除して
replace_string = 05CC, `b\0o\0d\0y\0>\0d\0i\0v\0`, `b\0o\0d\0y\0>\0*\0 \0 \0`
とする。

5. あとは好みで「kepubのデフォルトの余白をカスタム化」パッチ
patch_name = `Custom kepub default margins`
patch_enable = `yes` 
にした上で、
その下の3つエントリーを適宜変更。たとえば
# Device = Glo/Aura, Type = Japanese kepub
replace_int = 58F080, 45, 5
和書のデフォルトの余白"45"を"5"に変える、という意味なので、
最後の"5"を好みの数値に変更。"5"だとほとんど余白がない。
ただし、通常モード（フルスクリーン・モードでない時）は左右の余白しか
変わらない。

6. それ以外のパッチについては、不要なものは patch_enable = `no` に。
デフォルトで`yes`になっているものがたくさんあるので、そのままだと
自分の想定外の動作、見た目になる可能性がある。

7. libnickel.so.1.0.0.patchの他に
・libadobe.so.patch: pdf関連のパッチ。pdfの余白カット的なもの
・librmsdk.so.1.0.0.patch: Adobe Digital Editionsのepub本関連
必要なら、同じように`yes`か`no`で。

2) パッチの編集がおわったら、そのパッチをあてるファームウェア入手。
FWのダウンロードは
http://www.mobileread.com/forums/showthread.php?t=185660

FWは patch_kobo_3xxx/3.xx.x_source に置く。
（libnickel.so.1.0.0.patchと同じフォルダにkobo-update-3.xx.x.zip
を配置する）

3) 3.xx.x.sh（Linux、Mac)、3.xx.x.bat（Windows）を実行。
エラーがなければ、3.xx.x_targetフォルダにKoboRoot.tgzができている。

4) KoboRoot.tgzをKoboの.koboにコピーして、USBケーブルを抜くと
再起動される。これで終了。

