SSブログ

iTunesからMusicBeeへの乗り換え その3くらい(まとめ) [IT]

  iTunesからMusicBeeに乗り換えたので、Android端末と同期するためのiSyncrと、Google Play Music(長いので以下GPM)のMusicManager(長いので以下GPMMM)のiTunesプレイリスト同期機能が使えなくなってしまったので、これを解決すべくWSL(Windows Subsystem for Linux)を利用して以下のスクリプトを作った。のでまとめ。


 MusicBeeの独自プレイリスト形式であるmbpというバイナリファイルがある。これはバイナリファイルだがテキストが埋め込まれているので、強引にテキストファイルとして読み込んでm3uプレイリスト形式に変換する。


  1.で作成したm3uプレイリストを、Android(Linux)用にパスの区切り文字を「\」から「/」にして、プレイリストが格納されているフォルダから相対パスで指定したUTF-8 改行コードLFのm3uファイルを作成する。 


  ffprobe(ffmpeg付属)で音楽ファイルのタグ(メタデータ)を抽出してGPM用のプレイリストcsv形式1行で出力する。


  mp3ファイルの場合、ffprobeで日本語文字化けが起こる(標準出力に出力されたときにはすでに壊れて修復不可能)ので、PythonのeyeD3というライブラリを使用して、mp3のメタデータの文字コードを変換してからメタデータをGPM用のプレイリストcsv形式1行で出力する。(ここで公開されている"id3conv.py"を改造)


  3.と4.を使用して、m3uプレイリストに書かれている音楽ファイルのタグ(メタデータ)を抽出してGPM用のプレイリストcsvファイルに変換する。

6.gmusic-playlist/common.py, gmusic-playlist/preference.py

  gmusicapi(Google Play Music非公式api )を使用してGPM用プレイリストcsvファイルをアップロード・ダウンロードできるgmusic-playlistというツールがあるのだが、これが1つのcsvファイルをアップするたびにパスワードを聞いてくるのでoauthで認証するように改造。 

  5.で生成するGPM用csvプレイリストのメタデータのフィールド(カラム)を多くしているのでその部分も変更している。GPMに渡すメタデータが多いほど正確にGPM上でプレイリストが生成されるため。


  rsyncを使用し、2.で作成したプレイリストに書いてある音楽ファイルだけをSRCフォルダからDSTフォルダにコピーする。書いていないファイルは削除する。sshとファイル名にあるように、sshで暗号化してrsyncサーバーとの通信が可能。

  1.2.7.がNASとAndroid端末と同期するためのスクリプトで、3.-6.がGoogle Play Musicのプレイリストを同期するためのスクリプトである。

  Android端末では/Playlistフォルダにプレイリストが、/Musicフォルダ以下に音楽ファイルが格納されているとすると、m3uファイルは

 ../Music/アーティスト名/…1.flac

 ../Music/アーティスト名/…2.flac

  という書式にする必要がある。そういう書式にするために2.を使う。2.で作成したプレイリストファイルを使って7.でAndroid端末に転送するのだが、単純にファイルのリストを渡しただけではコピーはできない。いや、コピーはできるのだが、指定していないファイルを削除することができず、ゴミファイルが溜まっていく。それを回避するためには、rsyncの--include-fromオプションで残すファイルを指定する必要がある。

  その書式が

  /foo/bar/hoge.piyoというファイルを残すのであれば、

  /foo/

  /foo/bar/

  /foo/bar/hoge.piyo

  とファイルの途中のパスを全部書き出さないとならないので7.のスクリプトでそういった処理をしている。

  GPM用のプレイリストの処理だが、困ったことに4.はPython3でしか動かないし、6.はPython2でしか動かない。それで最初はpyenvという環境切り替えツールを使用して6.のフォルダで使用するPythonのバージョンを"$ pyenv local 2.x.x"でPython2に指定して、5.内でもpyenvを使用してPython3に切り替えて4.を呼び出していた。

  WSLのLinux内で動かす分にはそれでよかったのだが、WindowsのGUIで指定したファイルをバッチファイルにドラッグアンドドロップして変換したいので、バッチファイル(コマンドプロンプト)のwslコマンドでWindowsから呼び出そうとすると、python(及びpyenv)なんてコマンドはねえよと返される。

  Pythonをaptでインストールしたときは問題ないので、pyenvが問題(多分環境変数の問題。WSLのターミナルを起動してログインした時とwslコマンドで呼び出した時ではおそらく読み込まれる設定ファイルが違う)ということでpyenvの使用は諦めて、4.と6.を実行する際にchmodで実行権限を与えて"$ ./bar.py"の様に実行するのではなく、"$ python3 bar.py"などとpyスクリプトで使用したいバージョンでPython自体のコマンドを変えて実行することで解決した。

  こちらのほうがよほどシンプルだが、pythonの共存と切り替えはpyenvが便利だよというネットの情報にはまり込んでしまった。Linux内だけで使用するならそうなんだろうけど、WLSを通して使うということの情報が見当たらなかったからだな。

  こうして作成した1.2.5.6.をWinsdowsのバッチファイル中のwslコマンドで呼び出すことで、MusicBeeのプレイリストをいじったときに、バッチファイルをダブルクリックだったりプレイリストファイルをドラッグアンドドロップするだけで、Android端末用のプレイリストの作製とGPM用プレイリストcsvの作製およびGPMへのアップができるようになった。

  5.で作ったGPM用プレイリストcsvは6.を使うよりこの野良Chromeアドオンでアップロードするのが楽じゃないかな。

余談

  WSL用ユーティリティのwsluにWindows形式とLinux形式のパスの文字列を変換するwslpathというコマンドがある(ここや ここらへん参照)のだが、なるべくWSL依存にはしたくなかったのでWindows形式のパスはsedを用いてLinux形式のパスに変換するようにしている。なので、素のLinux(wsluが無いLinux)で音楽ファイルとプレイリストm3uファイルを管理している場合でも1.-7.は動くはずである(試してないので「はず」止まりだが)。

全角チルダ・波ダッシュ問題(参考1 参考2

  Windowsでは全角チルダは波ダッシュに置換されてしまうが、Linuxでは区別されるので問題が生じることがあった。

  gmusic-playlist/ImportList.py に改造の余地があるな。csvファイル1つごとにGPMにログインログアウトするので時間がかかる。ログインしてから一気に複数のプレイリストをアップしたほうが高速になる。

まあ動くから、モチベが低い。

  google-music-scripsはどういうわけかアップロードできないバグが有る。そこでgmusicapiを使用してアップロードするpy(音楽アップロード用プレイリストcsvアップロード用)を書いた。(これを改造)


nice!(1)  コメント(0) 
共通テーマ:日記・雑感

BOOX NOTEの分解 [IT]

E InkのAndroid読書端末「BOOX NOTE」はストレージが32GBあるが、そのうちユーザーが使えるのが27GB弱で、執筆時点で電子書籍ストアから書籍を買ったところ書籍がダウンロードできず、使い切ってしまったのがわかった。
 
一応USB Type-C端子が付いているが、それにストレージを接続することができない(ここはよく調べてないのでもしかしたらできるかもしれない)。SDカードスロットも無いのでストレージの拡張ができないのだ。
 
もしかしたら、内部的にSDカードのスロットがあって、そこにストレージが挿さっているのかもしれない、と思って、以前スマホを修理する際に購入した、手持ちのスマホリペアキットの特殊ドライバーとヘラを使って分解してみた。(読者の方はご自身の責任の下、行ってください)
DSC03704.JPG
 
底面のUSB Type-C端子の左右にネジがある。
DSC03703.JPG
これが五芒星の形をした特殊なもので、前述のリペアキットのドライバーで外す。本体の裏面のカバーは接着剤などで接着はされておらず嵌っているだけなので、ヘラで慎重に隙間に力をかけていくと外れる。
 
外した写真がこれである。
DSC03699.JPG
 
メイン基板を拡大した写真がこれで、
DSC03700.JPG
どうやらメインのSoCらしきものの周りにチップがいくつかある。2つある「K4E8E324EB-EGCF」というチップがLPDDR3のメインメモリで、「KLMBG2JENB-B041」というチップが32GBのeMMCのフラッシュロムのようだ。これはもちろんはんだ付けされており取り外すことはできない。
 
microSDカードスロットらしきものも見当たらない。
 
目論見が外れてしまったが、こうなると27GBのストレージ内で運用面でやりくりするしかない。この端末に入れているのは字の本のみで、マンガは入れてないんだけどな。
 
BOOX NOTE

BOOX NOTE

  • 出版社/メーカー: SKTSELECT
  • メディア: エレクトロニクス
Kindle Paperwhite、電子書籍リーダー、Wi-Fi 、ブラック

Kindle Paperwhite、電子書籍リーダー、Wi-Fi 、ブラック

  • 出版社/メーカー: Amazon
  • メディア: エレクトロニクス


nice!(2)  コメント(0) 
共通テーマ:パソコン・インターネット

Reader Storeの複数ダウンロードの方法 [IT]

少し前にソニーの電子書籍ストアの「Reader Store」がリニューアルした。見やすく改善はされているものの、購入した書籍の一括ダウンロードができなくなっており、この点が非常に不便なのである。大量購入してもらいたくないのだろうか?
 
それはさておき、スマホやタブレットで見るならばPCのダウンロードは必要ないが、筆者が持っている電子書籍閲覧端末「Reader」はWiFi機能が無いモデルであるため、転送するにはPCでダウンロードする必要があり、いつ「Reader Store」が店じまいしてもいいようにバックアップもしたいので、PCでダウンロードはしたい。
 
[8/21追記:Webの「Reader Store」のサイトで購入完了の画面または自アカウントの本棚ページで読みたい本を選択して読みたい端末として「Reader」を選ぶと.mbbsファイルがダウンロードされる。]
 
この.mbbsファイルというのが、PCにインストールしたダウンローダーに関連付けられていて、ダブルクリックすると実データが「Reader」端末が接続されたPCおよび「Reader」端末本体にダウンロードされる仕組みになっている。1個1個.mbbsファイルをダブルクリックしてると、1冊ダウンロードして終わってからまたもう1回って繰り返すので面倒なのだ。
 
この.mbbsファイルの中身を見ると、XMLファイルになっている。とりあえず複数.mbbsファイルをダウンロードして、「<Product :xsi:type=…>…</Product>」で囲まれた範囲を「<Product_List xsi:type=…>…</Product_List>」の中にダウンロードしたい冊数分入れればいいようだ。
 
結局.mbbsファイルを1個1個ダウンロードして.mbbsファイルを編集する必要はあるけれども、とりあえずダブルクリック1回でPC及び「Reader」端末にダウンロードできるようにはなった。
 
自動化するバッチか、シェルスクリプトでも書いてみるかな。気が向いたら書きます。
 
追記:
できました。
bashのシェルスクリプトとWindowsのバッチファイル。バッチファイルの方はアイコンにまとめて放り込むとマージしてくれるようにしている。テキスト処理に使うのでsedをインストールといておくこと。
 
bash用シェルスクリプト
#!/bin/bash
#merge_mbbs.sh
#指定ディレクトリの.mbbsファイルをマージする
#書式 ./merge_mbbs.sh 引数1 引数2
#引数1 ディレクトリを指定
#引数2 出力する.mbbsファイルのファイル名
count=1
#指定ディレクトリの.mbbsファイルを読み込む
ls ${1}/*.mbbs | while read line
do
  #最初のファイルでヘッダとフッタを生成
  if [ ${count} = 1 ]; then
    #「<Product xsi」より後を削除したものがヘッダ
    sed -e 's/<Product xsi.*//g' ${line} > "${1}/${2%.*}_header.tmp"
    #「</Product>」より前を削除したものがヘッダ
    sed -e 's#.*</Product>##g' ${line} > "${1}/${2%.*}_footer.tmp"
    #ヘッダを出力してマージ用.mbbsファイルを生成
    cat "${1}/${2%.*}_header.tmp" > "${1}/${2%.*}.mbbs"
  fi
  #ヘッダ部とフッタ部を削除した(<Product>タグで囲まれた)文字列を追加
  sed -e 's/.*\<Product xsi/\<Product xsi/g' "${line}" | sed -e 's#</Product>.*#</Product>#g' >> "${1}/${2%.*}.mbbs"
  count=`expr ${count} + 1`
done
#最後にフッタを出力
cat "${1}/${2%.*}_footer.tmp" >> "${1}/${2%.*}.mbbs"
#ヘッダとフッタを削除
rm "${1}/${2%.*}_header.tmp"
rm "${1}/${2%.*}_footer.tmp"
Windows用バッチファイル

@echo off
setlocal enabledelayedexpansion
REM merge_mbbs.bat
REM ドラッグアンドドロップで放り込んだ.mbbsファイルを結合する
REM SED.exeをパスの通った場所にインストールすること
set /a count=1
for %%a in (%*) do (
  if !count!==1 (
    REM 「<Product xsi」より後を削除したものがヘッダ
    sed -e "s/<Product xsi.*//g" %%a > merge_header.tmp
    REM 「</Product>」より前を削除したものがヘッダ
    sed -e "s#.*</Product>##g" %%a > merge_footer.tmp
    REM ヘッダを出力してマージ用.mbbsファイルを生成
    type "merge_header.tmp" > merge.mbbs
  )
  REM ヘッダ部とフッタ部を削除した(<Product>タグで囲まれた)文字列を追加
  sed -e "s/.*\<Product xsi/\<Product xsi/g" "%%a" | sed -e "s#</Product>.*#</Product>#g" >> "merge.mbbs"
  set /a count=!count!+1
)
REM 最後にフッタを出力
type "merge_footer.tmp" >> "merge.mbbs"
REM ヘッダとフッタを削除
del "merge_header.tmp"
del "merge_footer.tmp"
)
REM pause
exit


青空文庫をSony Reader PRS-650用のePubに変換する その2 [IT]

 
以前青空文庫のファイルを分割するバッチファイルを載せたが、
・1行が長い文章だとうまく3分割できない
・ファイルの大きさでファイルを分割したい
など問題が生じたので、ファイルの大きさで分割するようバッチファイルを修正した。バッチファイル内の定数部分を変えれば好きな大きさでファイルを分割することができるようにした。

新たにperlとhead.batを使っているので、必要に応じてインストールされたし。

----------↓バッチファイルの中身-------------
@echo off
setlocal enabledelayedexpansion

REM ドラッグアンドドロップした青空文庫のZIPを展開して、短く分割する
REM SED.exeをパスの通った場所にインストールすること
REM head.batとtail.batをパスの通った場所にインストールすること
REM busybox.exeをパスの通った場所にインストールすること
REM ActivePerlをインストールすること

REM 2016/07/10 初版作成
REM 2016/11/18 動的にファイルを分割するようにした


REM ファイルをsplitする時のサイズ(kbyte)
SET split_size=150

for %%a in (%*) do (

  REM 展開済みのフォルダを削除
  rmdir /q /s "%%~na"

  REM ZIPファイルを展開
  "C:\Program Files\7-Zip\7z.exe" x -o"%%~na\" "%%~npxa" -y

  REM 展開先フォルダに移動
  cd "%%~na\"

  REM 展開したファイルを元フォルダにコピー
  copy *.txt ..\

  for %%b in (*.txt) do (

    REM 表題のファイルを作成(temp100)
    sed -n -e 1,/---/p "%%~nb.txt" > "%%~nb_temp100.txt"

    REM 【テキスト中に現れる記号について】ファイル(temp200)を作成
    sed -n -e /---/,/---/p "%%~nb.txt" > "%%~nb_temp200.txt"

    REM 表題を削ったファイル(temp210)を作成
    sed -n -e /---/,$p "%%~nb.txt" > "%%~nb_temp210.txt"

    REM 表題を削ったファイルからファイル1行目の----を削る(temp220)を作成
    sed -n -e 2,$p "%%~nb_temp210.txt" > "%%~nb_temp220.txt"

    REM 【テキスト中に現れる記号について】までを削ったファイル(temp230)を作成
    sed -n -e /----/,$p "%%~nb_temp220.txt" > "%%~nb_temp230.txt"

    REM 1行目の----を削る(temp240)
    sed -n -e 2,$p "%%~nb_temp230.txt" > "%%~nb_temp240.txt"

    REM 表題を削ったファイルからファイル1行目の----を削る(temp220)を作成
    sed -n -e 2,$p "%%~nb_temp210.txt" > "%%~nb_temp220.txt"

    REM 【テキスト中に現れる記号について】ファイル1行目の----を削る(temp300)
    sed -n -e 2,$p "%%~nb_temp200.txt" > "%%~nb_temp300.txt"

    REM 表題と【テキスト中に現れる記号について】ファイルを結合(ヘッダ部完成)(header)
    type "%%~nb_temp100.txt" "%%~nb_temp300.txt" > "%%~nb_header.txt"

    REM ヘッダ部分を削る(元の文から2回----が出るまで)削る(temp430)
    sed -n -e /----/,$p "%%~nb.txt" > "%%~nb_temp405.txt"
    sed -n -e 2,$p "%%~nb_temp405.txt" > "%%~nb_temp410.txt"
    sed -n -e /----/,$p "%%~nb_temp410.txt" > "%%~nb_temp420.txt"
    sed -n -e 2,$p "%%~nb_temp420.txt" > "%%~nb_temp430.txt"

    REM フッタ部分を削る(本文完成)(main)
    perl -0pe "s/\n\n\n\n/\njgokrpyht9iguyt\n\n\n/m" "%%~nb_temp430.txt" > "%%~nb_temp440.txt"
    sed -n -e 1,/jgokrpyht9iguyt/p "%%~nb_temp440.txt" > "%%~nb_temp450.txt"
    perl -0pe "s/jgokrpyht9iguyt\n//m" "%%~nb_temp450.txt" > "%%~nb_main.txt"

    REM フッタ部を作成(footer)
    sed -n -e /jgokrpyht9iguyt/,$p "%%~nb_temp440.txt" > "%%~nb_temp460.txt"
    perl -0pe "s/jgokrpyht9iguyt//m" "%%~nb_temp460.txt" > "%%~nb_footer.txt"


    REM 本文を指定したサイズ[kbyte]で分割
    busybox split -b !split_size!k "%%~nb_main.txt" "%%~nb_splited_main.txt"

    REM 各ファイルの先頭の行だけ抜き出す
    set /a num=1
    for %%c in (%%~nb_splited_main.txt*) do (

      REM 先頭の行を抜き出す
   call head "%%c" 1 > "%%~nc_sentou_!num!.txt"

      set /a num=num+1

    )

    REM 次のファイルの先頭の行を足して、改行でファイルが切れるようにする
    set /a num=1
    set /a num2=2
    for %%c in (%%~nb_splited_main.txt*) do (

      if exist "%%~nc_sentou_!num2!.txt" (
        type "%%c" "%%~nc_sentou_!num2!.txt" > "%%~nc_seiri_tail_!num!.txt"
      ) else (
        type "%%c" > "%%~nc_seiri_tail_!num!.txt"
      )

      set /a num=num+1
      set /a num2=num2+1

    )

    REM 次のファイルの先頭の行を削る(最初のファイル以外)(分割した本文完成)
    set /a num=1
    for %%c in (%%~nb_splited_main.txt*) do (

      if !num!==1 (
        type "%%~nc_seiri_tail_!num!.txt" > "%%~nc_seiri_head_tail_!num!.txt"
      ) else (
        sed -n -e 2,$p "%%~nc_seiri_tail_!num!.txt" > "%%~nc_seiri_head_tail_!num!.txt"
      )

      set /a num=num+1
    )

    REM 分割した本文にヘッダとフッタを足して完成
    set /a num=1
    for %%c in (%%~nb_splited_main_seiri_head_tail_*.txt) do (

      REM ヘッダに番号を付与
      sed -e "2s/$/ !num!/" "%%~nb_header.txt" > "%%~nb_header_!num!.txt"

      type "%%~nb_header_!num!.txt" "%%~nxc" "%%~nb_footer.txt" > "%%~nb_!num!.txt"

      REM 生成ファイルをコピー
      copy "%%~nb_!num!.txt" ..\

      set /a num=num+1
    )

  )

  REM 元フォルダに移動
  cd ..\

  REM 展開フォルダを削除
  rmdir /q /s "%%~na\"

)

REM pause
exit

----------↑バッチファイルの中身-------------


青空文庫をSony Reader PRS-650用のePubに変換する [IT]

 
ふと思いたって、青空文庫を手持ちのSony Readerで読もうと思い、色々試行錯誤してみた。

以前ChainLPというソフトを使ってPDFに変換していたのだが、これは中身は画像なので、文字の大きさなどが変換できなくて美しくない。ここはやはり、XMDFかePubに変換したいところ。

探したところ、AozoraEpub3(参照:http://www18.atwiki.jp/hmdev/pages/21.html)というソフトでePubに変換できるみたいだ。試しに「吉川英治 三国志」で試してみたところ、特にエラーも無く変換は可能だった。しかし、Readerに転送してみると、表示できるファイルと表示できないファイルがあった。

持ってるSony Rederは初号機で、ePubの対応が完全じゃないらしい。XMDFに変換したいので探したが、AozoraXMDFというソフトはあるが、シャープが提供していたXMDFビルダーに食わせるXMLを生成するソフトで、そのXMDFビルダーは個人向けの配布は終了していてどうにもならない。何とかしてePubで読むしかない。

エラーが出る原因は最初は第三水準の文字かな?と思ったが違うみたいだ。現象としては「序」は読めるけど、本編が読めない。「序」は短いから長さが原因かな?と思ってテキストを切り分けてからAozoraEpub3で変換してみると、ビンゴだった。大体2000行以上だと読み込めなくなるようだ。

手動で切り分けてもいいけど、どうせなら自動化したいなと思ってバッチファイルを作ってみた。色々洗練されてないけど、とりあえず「吉川英治 三国志」なら問題なく変換できている。

青空文庫からダウンロードしたZIPファイルを、作ったバッチファイルのアイコンにドラッグアンドドロップすると、ZIPファイルと同じフォルダにテキストが生成される。生成されたテキストファイルをAozoraEpub3に食わせると、ePubファイルができる。

余裕をもって1500行で切り分けている。「吉川英治 三国志」だと大体3分割できるので、上中下を作ることにした。「序」とか「余録」とか短いものでも上中下が出来てしまうので、決め打ちしないで元のファイルの行数に合わせて生成するファイル数を決めたいところだけれども今のところ妥協。

バッチファイルの中身を以下に書く。

予め"tail.bat"をPATHが通ったフォルダに入れておくこと。(参照:http://shinta0806be.ldblog.jp/archives/7991457.html
sed for Windows(参照:http://gnuwin32.sourceforge.net/packages/sed.htm)をインストールしておくこと。
7-Zip(参照:https://sevenzip.osdn.jp/)をインストールしておくこと。
 
--------------------以下バッチファイルの中身-------------------- 

@echo off

REM 青空文庫のZIPを展開して、短く分割する
REM 3分割する
REM ※「吉川英治 三国志」しか試してないので注意

for %%a in (%*) do (
  REM 展開済みのフォルダを削除
  rmdir /q /s "%%~na"

  REM ZIPファイルを展開
  "C:\Program Files\7-Zip\7z.exe" x -o"%%~na\" "%%~npxa" -y

  REM 展開先フォルダに移動
  cd "%%~na\"

  for %%b in (*.txt) do (

    REM 表題のファイルを作成(temp1)
    sed -n -e 1,/---/p "%%~nb.txt" > "%%~nb_temp1.txt"

    REM 【テキスト中に現れる記号について】ファイル(temp2)を作成
    sed -n -e /---/,/---/p "%%~nb.txt" > "%%~nb_temp2.txt"

    REM 【テキスト中に現れる記号について】ファイル1行目の----を削る(temp3)
    sed -n -e 2,$p "%%~nb_temp2.txt" > "%%~nb_temp3.txt"

    REM 表題と【テキスト中に現れる記号について】ファイルを結合(ヘッダ部完成)
    type "%%~nb_temp1.txt" "%%~nb_temp3.txt" > "%%~nb_temp4.txt"

    REM ヘッダ部込みで1行目から1500行までのファイル(上巻)を作成(temp5)
    sed -n -e 1,1500p "%%~nb.txt" > "%%~nb_temp5.txt"

    REM 1501行から3000行までのファイル(中巻)を作成(temp6)
    sed -n -e 1501,3000p "%%~nb.txt" > "%%~nb_temp6.txt"

    REM フッタ部込みで3001行から最後までのファイル(下巻)を作成(temp7)
    sed -n -e 3001,$p "%%~nb.txt" > "%%~nb_temp7.txt"

    REM キリ良くするため上巻に付け足すファイルを作成(次の見出しまで)(temp8)
    sed -n -e 1,/大見出し/p "%%~nb_temp6.txt" > "%%~nb_temp8.txt"

    REM キリ良くするため中巻に付け足すファイルを作成(次の見出しまで)(temp9)
    sed -n -e 1,/大見出し/p "%%~nb_temp7.txt" > "%%~nb_temp9.txt"

    REM 中巻の最初の「大見出し」から3000行まで切り出す(temp10)
    sed -n -e /大見出し/,$p "%%~nb_temp6.txt" > "%%~nb_temp10.txt"

    REM 下巻の最初の「大見出し」から最後まで切り出す(temp11)
    sed -n -e /大見出し/,$p "%%~nb_temp7.txt" > "%%~nb_temp11.txt"

    REM 上巻に付け足すファイルの末尾2行を削る(temp12)
    type "%%~nb_temp8.txt" | sed -e $d | sed -e $d > "%%~nb_temp12.txt"

    REM 中巻に付け足すファイルの末尾2行を削る(temp13)
    type "%%~nb_temp9.txt" | sed -e $d | sed -e $d > "%%~nb_temp13.txt"

    REM 中巻の先頭に1行追加する(temp14)
    REM 先頭に文字列を追加して、削除している
    sed -e "1i #############" "%%~nb_temp10.txt" | sed -e s/#############// > "%%~nb_temp14.txt"

    REM 下巻の先頭に1行追加する(temp15)
    REM 先頭に文字列を追加して、削除している
    sed -e "1i #############" "%%~nb_temp11.txt" | sed -e s/#############// > "%%~nb_temp15.txt"

    REM フッタを作るために適当に下から20行くらい切り出す(temp16)
    call tail "%%~nb.txt" 20 > "%%~nb_temp16.txt"

    REM フッタを作成(temp170)
    sed -n -e "/^$/,$p" "%%~nb_temp16.txt" > "%%~nb_temp17.txt"
    
    REM ファイルを結合
    
    REM ヘッダ+本文(上)
    type "%%~nb_temp5.txt" "%%~nb_temp12.txt" > "%%~nb_temp18.txt"

    REM (上)のヘッダ部を削除
    sed -n -e "/----------/,$p" "%%~nb_temp18.txt" > "%%~nb_temp19.txt"
    sed -n -e 2,$p "%%~nb_temp19.txt" > "%%~nb_temp20.txt"
    sed -n -e "/----------/,$p" "%%~nb_temp20.txt" > "%%~nb_temp21.txt"
    sed -e "/----/d" "%%~nb_temp21.txt" > "%%~nb_temp22.txt"
rem  | sed -e "1i #############" | sed -e s/#############// > "%%~nb_temp22.txt"

    REM 上巻本文にフッタ部分が含まれてたら削除
    sed -e "/底本:/,$d" "%%~nb_temp22.txt" > "%%~nb_temp24.txt"
    REM sed -e "/^$/d" "%%~nb_temp23.txt" > "%%~nb_temp24.txt"

    REM ヘッダ+本文(上)+フッタ
    type "%%~nb_temp4.txt" "%%~nb_temp24.txt" "%%~nb_temp17.txt" > "%%~nb_temp25.txt"

    REM 本文(中)
    type "%%~nb_temp14.txt" "%%~nb_temp13.txt" > "%%~nb_temp26.txt"

    REM 中巻本文にフッタ部分が含まれてたら削除
    sed -e "/底本:/,$d" "%%~nb_temp26.txt" > "%%~nb_temp27.txt"
    sed -e "/^$/d" "%%~nb_temp27.txt" > "%%~nb_temp28.txt"

    REM ヘッダ+本文(中)+フッタ
    type "%%~nb_temp4.txt" "%%~nb_temp27.txt" "%%~nb_temp17.txt" > "%%~nb_temp28.txt"

    REM ヘッダ+(本文(下)+フッタ)
    type "%%~nb_temp4.txt" "%%~nb_temp17.txt" > "%%~nb_temp29.txt"

    REM 「上」の文字を挿入(完成)
    sed -e "2s/$/ 上/" "%%~nb_temp25.txt" > "%%~nb_1_third.txt"
    REM 「中」の文字を挿入(完成)
    sed -e "2s/$/ 中/"  "%%~nb_temp28.txt" > "%%~nb_2_third.txt"
    REM 「下」の文字を挿入(完成)
    sed -e "2s/$/ 下/"  "%%~nb_temp29.txt" > "%%~nb_3_third.txt"

  )
  REM 生成ファイルをコピー
  copy *third.txt ..\

  REM 元フォルダに移動
  cd ..\

  REM 展開フォルダを削除
  rmdir /q /s "%%~na\"

)

pause

--------------------以上-------------------- 
 

ソニー 電子書籍リーダー Reader 6型 Wi-Fiモデル ブラック PRS-T3S/B

ソニー 電子書籍リーダー Reader 6型 Wi-Fiモデル ブラック PRS-T3S/B

  • 出版社/メーカー: ソニー
  • メディア: Personal Computers

 

so-netブログとtwitterの連携 [IT]

so-netブログとtwitterが連携できるようだ。記事を投稿するとtwitterにも投稿されるらしい。twitterに投稿すればmixiにも反映されるので、手間がかからない。

ちょっとテストしてみる。

続きを読む


nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:日記・雑感

mixi日記との連動 [IT]

mixi日記の設定を変更してこのブログと連動させることにすると、mixi日記が書けなくなってしまう。公開設定を細かく設定したい場合にmixi日記を使うので混載させてもらいたいところ。

あと、自分の日記の検索もできなくなってしまう。仕方がないので、こちらのブログを更新した際に、URLをmixi日記にコピペする運用にしよう。


nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:日記・雑感

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。