- 必要なソフトウエア
lua, node.js, nkf, jsonlint
nkf は iconv でUTF8変換出来ない場合に使用する
jsonlint は jsonファイルの読み易くする為に使用する
Linux Fedora)
sudo yum install nodejs nkf
lua モジュール)
Penlight,lfs(lua-filesystem), cjson
Linux Fedora)
sudo yum install lua lua-penlight lua-filesystem
lua-cjson)
lua-cjson-2.1.0.tar.gz
ref) http://www.kyne.com.au/~mark/software/lua-cjson.php
cd lua-cjson-2.1.0
edit Makefile (Lua version, PREFIX)
make
sudo make install ; sudo make install-extra
node.js モジュール)
1:Node.js
node.js モジュール
2:node-iconv (shift_jis ==> UTF-8 変換)
npm install iconv
ref)
https://github.com/bnoordhuis/node-iconv
3:adm-zip (zipの圧縮、伸長に使用)
npm install adm-zip
ref)
https://github.com/cthackers/adm-zip
4:node-imageinfo (get image-info)
npm install imageinfo
ref)
https://github.com/NorgannasAddOns/node-imageinfo
5:xregexp (バージョン 1.1 から必要)
npm install xregexp
ref)
https://github.com/slevithan/xregexp
Proxyのある環境では
sudo npm --proxy http://192.168.x.x:3128/ install module-name -g
(proxy のIPアドレスは環境に合わせて変更する)
jsonlint)
jsonファイルのエラーチェック及び読み易くするツール
node.js ツール
npm install jsonlint
CSVファイルのBOM(Byte Order Mark)を削除するプログラム
bin/bomstrip 又は bin/bomstrip.py を使用する
C言語がコンパイル出来る環境では bomstrip.c をコンパイルする
ref) gcc -o bomstrip -O2 bomstrip.c
- 環境の設定
Linux:同時にオープン出来るファイル数の最大値を変更する
初期値は 1024 を 4096 以上に変更する
確認コマンド
ulimit -n
sudo vi /etc/security/limit.conf
* soft nofile 4096
* hard nofile 4096
このプログラムはLinux上で作成し動作確認している、他のOS上での動作確認は行っていない。
- ダウンロード,ライセンス
aozoraTool-1.11.tar.gz ダウンロード
ライセンス
GPL Version 3
このソフトウエアを使用する事により、万一何らかの障害が発生しても保障は一切行いません。
- リリース
バージョン 1.11 2014.07.03
ao.lua、エラーチェック、集計作成ツールなどを追加する
GITHUBの全てのZIPファイルで動作確認する
バージョン 1.0 2014.04.02
約1600ファイルでテストする
Unicode UCS-xxx の追加
キャプションの機能追加
アクサン処理の追加
バージョン 0.9 2014.03.20
-a image-tag altのコメントを画像の下に挿絵、口絵やキャプションとして表示する
バージョン 0.8
-c ファイルのUTF8変換処理のみ行いテキスト出力する、(面区点表記変換処理等は行わない)
-t オプション 縦書き:ローマ数字等に tcy 設定する
ファーストリリース
aozoraTool-0.3 2014.01.29
- 使い方
tar zxvf aozoraTool-1.xx.tar.gz
cd aozoraTool-1.xx
README
ao.lua
bin/ プログラム
Lists/ nkfLists.txtなど
NDC/ NDCデータ
ao.lua プログラム下のディレクトリー
ao.luaを起動した時、ディレクトリーがない場合には作成される
bin/ プログラム
Lists/ nkfLists.txtなど
NDC/ NDCデータ
Books/ 変換したデータ UTF8,Tmp,Cards,Correct
Github/ Githubデータ
CSV/ CSVデータ
Dat/
Log/
Error/
tmp/
bin)
aozora.js UTF8変換スクリプト
sjis2utf8.js シフトJIS第三及び四水準の面区点表記のUTF-8変換
sjismisc.js ローマ数字等の非漢字,ギリシャ文字等のアクセント記号のある文字のUTF-8変換
rpl_image.js 画像のキャプション等の処理
gettitle.js タイトルの処理
aozora2.js アノテーション変換スクリプト
annolist.js
rpl.js
rpl2.js
rpl3.js
ruby.js
gettitle.js タイトルの処理
bomstrip.c CSVファイルのBOM(Byte Order Mark)を削除するプログラム
bomstrip.py
青空文庫のデータファイルをダウンロードする
青空文庫のGithub
青空文庫のCSV 作品情報データ
同一日付のGithub(ファイルサイズ 約1.4Gバイト:2014年7月2日現在)と
CSV(list_person_all_extended_utf8.csv,list_person_all_utf8.csv) のZIPファイルをそれぞれダウンロードし解凍する。
(CSVは夜中の3時頃、Githubは朝6時頃に毎日更新されている)
解凍先
解凍後ディレクトリー名を日付に変更する
Github/20140702 :: Github 内のディレクトリー名はソートで使用する為この形式にする。
CSV/2014_0702 or CSV/20140702
- 処理しないファイル等の指定
iconv のUTF8変換でエラーになるファイルは Lists/nkfList.txt に記述すると nkf で自動的に変換処理を行う。
nkf ソフトのインストールが必要です。
現在 8ファイル程、エラーになるファイルを確認している。
ref) Lists/nkfLists.txt
エラーのあるファイルを修正して使用する場合には
UTF8のファイルを修正し Books/Correct/00xxxx/xxxx_ruby_xxxx.txt に保存し
Lists/Correct0,1.txt に修正したファイル名を記述する
Lists/Correct0.txt (step1,step3)
Lists/Correct1.txt (step1,step3)
処理しないファイル
Lists/ResrvList0.txt (step1,step3)
Lists/ResrvList1.txt (step1,step3) CSVファイルに作品IDのないZIPファイルのリスト :: ao.lua -m 42
Lists/ErrorList.txt (step3) :: (Lists/ErrorList_xx_xx.txt) ao.lua -m 2
Lists/License.txt (step3) ライセンスフラグのあるファイル (ao.lua -m 42)
Lists/SkipFiles.txt (step4) アノテーション変換が不充分等、公開したくないファイルのリスト
- データのチェック
ao.lua -m 1 -d Github/20140702 :: unzip,UTF-8変換
ao.lua -m 1 -a -s 301 -e 301 -d Github/20140702
:: -a オプションを付けると Lists/ResrvList.txt のファイルを除外せず、全てのファイルを処理する
出力 Books/UTF8/* , Dat/logs.json
Log/00xxxx_utf_20140702.txt ==> Dat/logs.txt
プログラム: bin/aozora.js
ao.lua -m 2 ::[]対応チェックの後、第3水準など漢字変換の為の ※[# チェックを行う
[]対応チェックに失敗した場合には、漢字変換チェックは行わない、修正後に再度チェックする
ao.lua -m 2 -c 1 -s 311 -e 311 :: 著者ID 311 だけ対応チェックを行う
入力 Books/UTF8/*
出力 Error/Error_5_1790.txt, Error_311_311.txt
プログラム: bin/chk_ao.js
エラーリポート (c 1 がデフォルト)
出力 c 1 :: Error/ErrorReport_5_1790.txt :: 1出力のDat/logs.json を使用しZIPファイル、著者名等をマージする
c 2 :: Error/ErrorReport_5_1790_step2.txt
c 3 :: Error/ErrorReport_5_1790_step3.txt
-m 2 終了後
エラーの有るファイルの処理
Lists/ErrorList_xx_xx.txt ==> 修正 Lists/Correct1.txt (step3)
==> 処理しない Lists/ErrorList.txt (step3)
作品データの処理
ao.lua -m 41
ao.lua -m 42 CSV/2014_0702
==> Lists/ResrvList_xxx.txt, Lists/License.txt
- UTF変換
第三、四水準漢字変換等のUTF変換、アノテーション変換
ao.lua -m 3 -d Github/20140702 :: 第三、四水準漢字変換等のUTF変換
Lists/ResrvList.txt, Lists/ErrorList.txt のファイルは処理しない
出力 Books/Tmp/*
Log/00xxxx_conv_20140702.txt ==> Dat/conv_logs.txt
プログラム: bin/aozora.js
ao.lua -m 4 -d Github/20140702 :: アノテーション変換
入力 Books/Tmp/*
出力 Books/Cards/*
Log/00xxxx_anno_20140702.txt ==> Dat/anno_logs.txt
プログラム: bin/aozora2.js
ao.lua -m 5 :: mode 42 で作成のデータを基に検索用json を作成する
入力 Dat/aozora.json, Dat/AuthorIndex.json, Dat/Books.json
出力 Json/bookInfo.json, Json/IndexBooks.json, Json/IndexAuthors.json, Json/authorBooks.json
Json/bookTxt.json, Json/classify.json, Json/authorInfo.json(Dat/AuthorInfo.json)
プログラム:bin/mk_indexj.js
ao.lua -m 6 :: Web index-json用json を作成する
入力 Json/bookInfo.json, Json/IndexBooks.json, Json/IndexAuthors.json, Json/authorBooks.json
Json/bookTxt.json, Json/classify.json
出力 Json/AuthorBooks.json, Json/AuthorList.json, Json/BookInfo.json
プログラム:bin/mk_indexj2.js
新規、更新されたデータの処理
ao.lua -m 11 -o Github/20140602 -n Github/20140702
2つのGithubディレクトリーを比較し、新規、更新、削除されたZIPファイルをそれぞれリストアップする
出力 Lists/new_files_20140702.txt, Lists/mod_files_20140702.txt, Lists/del_files_20140702.txt
Lists/NewMod_files_20140702.txt
プログラム: bin/newzip.lua
ao.lua -m 12 Lists/mod_files_20140702.txt Lists/Correct1.txt
2つのファイルに共通するファイルをリストアップ
更新されたファイルがローカルに修正したファイルにあるかの確認等
プログラム: bin/luaMod.lua
差分処理 (-m 1,2,3,4 に対応)
Lists/NewMod_files_20140702.txt の各ファイルをGithub/20140702ディレクトリー単位で処理する
ao.lua -m 21 -d Github/20140702
ao.lua -m 22 -d Github/20140702 [-c 1,2,3]
ao.lua -m 23 -d Github/20140702
ao.lua -m 24 -d Github/20140702
作品データの変換
ao.lua -m 31 CSV/2014_0626 :: CSVデータファイル BOMの削除、json変換
出力 CSV/2014_0626/list_person_all_utf8.json, CSV/2014_0626/list_person_all_extended_utf8.json
プログラム: bin/bomstrip 又は bin/bomstrip.py を使用する
ao.lua -m 32 CSV/2014_0626 :: list_person_all_extended_utf8.csvファイルから集計ファイルを作成する
入力 list_person_all_extended_utf8.csv
分野別の作品件数 は NDC/NDC.json を使用する
出力 CSV/2014_0626/tmp_csv.json ,class.json,classg.json,top.json,release.json
CSV/2014_0626/class_910_.json
プログラム: bin/statics.js
作品データの処理
ao.lua -m 41 :: Dat/logs.json とUFT8ファイル内の情報から Dat/aozora.jsonファイルを作成する
出力 Dat/aozora.json (Dat/aozora2.json)
プログラム : bin/aozora41.js
ao.lua -m 42 CSV/2014_0626 :: 41出力のDat/aozora.jsonと 32出力のCSVデータをマージし検索用jsonを作成する
入力 Dat/aozora.json, CSV/.../tmp0_csv.json, CSV/.../tmp_csv.json
出力 Dat/AuthorIndex.json, Dat/Books.json, Dat/BookIndex.json
Lists/ResrvList_xxx.txt, Lists/License.txt
修正 ライセンス情報を追加する Dat/aozora.json (Dat/aozora2.json)
プログラム: bin/aozora42.lua
- 集計Webページの作成
ao.lua -m 33
入力 31,32 の出力したjsonファイル
HTML/header.txt,tail.txt を使用する (css/aoz.css)
bin/tohtml.js の作成するデータの日付ディレクトリー名、出力ファイル名を変更する
var Dirs = ["CSV/2014_0626","CSV/2012_1226"];
var Head = ["2014年6月26日","2012年12月26日"];
プログラム: bin/tohtml.js
- bin/aozora.js 単独の使い方
aozora.js [-s -z -u -k -n -g -c -t -i] [Dirname | filename] TargetDir
option
-s テキストファイルのみzip圧縮出力する(画像データは含まない)
-z zip圧縮ファイルを出力する(画像データも含めて)
-s,-z のない場合、テキストファイルを出力する (初期値)
-u 入力ファイルが UTF-8
-i image-tag置換 (-z 指定時は無効)
zipファイルに画像データのある場合、画像ファイルとテキストデータを分離しimgタグで結合する。
ターゲットディレクリーにテキストファイルと同じ名前のディレクリー作成し画像を保存する
本文中の [#挿絵(fig42378_01.png)入る] 等の画像表示指示をimgタグに変換する 。
例) [#挿絵(fig42378_01.png)入る] ==>
<div><img src="/Root/Andersen/yukino_joo/fig42378_01.png" width="568" height="361"
alt="[#挿絵(fig42378_01.png)入る]" /></div>
-n 改行コード置換: \r\n ==> \n
-k 出力ファイル名を日本語タイトルにする:本文の最初の行
-k のない場合、アルファベット名を出力する:zipファイル内部のファイル名(初期値)
-g UTF-8変換のソースと結果を表示する
-c ファイルのUTF8変換処理のみ行いテキスト出力する、(面区点表記変換処理等は行わない)
-t 縦書き:ローマ数字等に tcy 設定する
-a image alt:(default off) off:画像の下に挿絵、口絵等を表示する
image-tag altのコメントを画像の下に挿絵、口絵やキャプションとして表示する
aozora.js ../Aozora ../aozora
../Aozora ソースデータディレクリー zip,txtファイルを再帰的に読み込む
../aozora ターゲットディレクリー: 変換したファイルを再帰的に配置する