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

シフトJIS第三及び四水準の面区点表記のUTF-8変換、エラーチェック、NDC分類等の集計作成のツール
プログラムは lua 及び Node.js上のjavascriptを使用している。

青空文庫のUTF8変換
    1:シフトJIS第三及び四水準の面区点表記のUTF-8変換
    2:ローマ数字等の非漢字のUTF-8変換
    3:ギリシャ文字等のアクセント記号のある文字のUTF-8変換

NDC分類等の集計作成ツールは青空文庫の分析(作品のNDC分類及び作品数の多い著者)を作成するスクリプト
  1. 必要なソフトウエア
  2. 環境の設定
  3. ダウンロード,ライセンス
  4. リリース
  5. 使い方
  6. 処理しないファイル等の指定
  7. データのチェック
  8. UTF変換
  9. 集計Webページの作成
  10. bin/aozora.js 単独の使い方

  1. 必要なソフトウエア
      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
    
  2. 環境の設定
      Linux:同時にオープン出来るファイル数の最大値を変更する
        初期値は 1024 を 4096 以上に変更する
        確認コマンド
        ulimit -n
    
      sudo vi /etc/security/limit.conf
            *	soft nofile   4096
            *	hard nofile   4096
      このプログラムはLinux上で作成し動作確認している、他のOS上での動作確認は行っていない。
    
    
  3. ダウンロード,ライセンス
    aozoraTool-1.11.tar.gz ダウンロード 
    
    ライセンス
      GPL Version 3
    このソフトウエアを使用する事により、万一何らかの障害が発生しても保障は一切行いません。
    
  4. リリース
      バージョン 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
    
  5. 使い方
        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
    
    
  6. 処理しないファイル等の指定
    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)        アノテーション変換が不充分等、公開したくないファイルのリスト
    
    
  7. データのチェック
        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 
    
  8. 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
    
  9. 集計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 
    
  10. 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