LoginSignup
0
0

More than 3 years have passed since last update.

Pukiwikiのエンコードされた添付ファイルの名前をデコードする方法

Last updated at Posted at 2020-03-19

はじめに

今回、研究室内で使用している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上で見れますので、お困りならやってみてください。
やりたいことを最後まで実装しきれたら続きを書こうと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0