シフトJIS第三及び四水準の面区点表記のUTF-8変換、エラーチェック、NDC分類等の集計作成のツール プログラムは lua 及び Node.js上のjavascriptを使用している。 青空文庫のUTF8変換1:シフトJIS第三及び四水準の面区点表記のUTF-8変換2:ローマ数字等の非漢字のUTF-8変換3:ギリシャ文字等のアクセント記号のある文字のUTF-8変換 NDC分類等の集計作成ツールは青空文庫の分析(作品のNDC分類及び作品数の多い著者)を作成するスクリプト(一)必要なソフトウエア (二)環境の設定 (三)ダウンロード,ライセンス (四)リリース (五)使い方 (六)処理しないファイル等の指定 (七)データのチェック (八)UTF変換 (九)集計Webページの作成 (十)bin/aozora.js 単独の使い方
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 ターゲットディレクリー: 変換したファイルを再帰的に配置する