##はじめに
今回、研究室内で使用しているPukiwikiのデータをお引越しさせる必要性がありました。
特に、添付ファイルには重要な資料がたくさんあるので、それをお引越しさせないとドエライ事になります。
今回の記事では、Pukiwikiのエンコードされた添付ファイルの名前をデコードする方法のアイデアをひとつ紹介します。
##Pukiwikiの添付ファイルの保存場所
PukiwikiはPHPのコードで動いていて、どこかにPukiwiki自体のコードがおいてあるはずです。
添付ファイルは、Pukiwikiのコードのattachという名前のディレクトリ下に保存されます。
問題
attachディレクトリに全ての添付ファイルが保存されており、そのディレクトリ内にあるデータをどこかで保存すればお引越し完了、のつもりでした。
しかし、全てのファイルが16進数表記でかつ拡張子無しという無残な姿になっていました。
このままデータを吸い出しても、(そのままでは)全く意味がありません。
16進数表記にエンコードされたファイル名をデコードしてあげる必要があります
解決方法
https://pukiwiki.osdn.jp/?Q%EF%BC%86A/%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3/attach%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3#o24658e2
いろいろ調べてみると、既に名前をデコードするツールはあります。
しかし、大量のデータを一つひとつツールにぶち込んでいるようでは日が何度暮れても時間が足りません。
まず、テストとして, Pukiwikiの「添付ファイルの情報」ページから格納ファイル名を調べます。
fileName = a5b9a5aba5a4a5d6a5eba1bc #格納ファイル名のアンダースコアより手前
これを整形します。
b'\xa5\xb9\xa5\xab\xa5\xa4\xa5\xd6\xa5\xeb\xa1\xbc'
「EUC_JP」という文字コードでデコードします。
b'\xa5\xb9\xa5\xab\xa5\xa4\xa5\xd6\xa5\xeb\xa1\xbc'.decode("euc_jp")
すると、出力はこのようになります。
'スカイブルー'
他に試した事
はじめ、これをPythonのライブラリの一つであるurllibのparse.unquote()を使ってデコードしようとしました。
しかし、数字にデコードすることは可能でしたが、日本語にデコードすることはできませんでした。
頭を抱えましたね...
さいごに
今回は、Pukiwikiのエンコードされた添付ファイルの名前をデコードする方法を紹介しました。
エンコードされたファイル名はPukiwiki上で見れますので、お困りならやってみてください。
やりたいことを最後まで実装しきれたら続きを書こうと思います。