青空文庫データ変換ツール

シフト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年72日現在)と
     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年626日","2012年1226日"];
        プログラム: 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 ターゲットディレクリー: 変換したファイルを再帰的に配置する


to Top

ホームページ へ


Last Modified: 2014.07.03; First Release: 2014.01.29