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 linedo#最初のファイルでヘッダとフッタを生成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 offsetlocal enabledelayedexpansionREM merge_mbbs.batREM ドラッグアンドドロップで放り込んだ.mbbsファイルを結合するREM SED.exeをパスの通った場所にインストールすることset /a count=1for %%a in (%*) do (if !count!==1 (REM 「<Product xsi」より後を削除したものがヘッダsed -e "s/<Product xsi.*//g" %%a > merge_header.tmpREM 「</Product>」より前を削除したものがヘッダsed -e "s#.*</Product>##g" %%a > merge_footer.tmpREM ヘッダを出力してマージ用.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 pauseexit
2017-07-23 21:10
nice!(0)
コメント(0)
トラックバック(0)
コメント 0