jpn_eagle's Blog

プログラミングの覚え書きとかカメラとか趣味の話

コスプレイヤーズアーカイブの画像を右クリック保存する

こんにちは。

カメラが趣味の関係で、たまにコスプレの撮影を依頼されることがあります。その際、参考資料用にコスプレイヤーアーカイブというコスプレSNSを覗くことがあるのですが、ここで一点不満があります。 

写真を右クリック保存ができない

転載防止のためなのでしょうが、掲載されている写真を右クリック保存することができません。「Webページごと保存」など回避策はいくらでもありますし、これじゃあただ使い勝手が悪いだけです。

f:id:eaglejptattiieagle:20161003005654p:plain「名前を付けて画像を保存」がない...

なら自分で作ればいい

仕事でオフコン(死語)向けのプログラムを組むことがあるのですが、Windows向けのアプリケーションを組むということをあまりしたことがありません。勉強がてら・・・ということで、右クリック保存できるIE用のアドインを作ってみました。
ダウンロード先:https://t.co/JOVKYlLDVO
※上記URLをクリックするとMicrosoft OneDriveのページに飛びます

f:id:eaglejptattiieagle:20161003011356j:plain

基本的にダウンロードしたものをインストールするだけですが、粗削りなため、環境によっては動かない可能性があります。特に32bit版Windowsの環境での確認を取っていません。(後述)

以下覚え書き

ここからはこのソフトを作った上での覚え書きです。興味のない方はすっ飛ばして

まず何をするか・・・

まずは何をするかです。「Webページごと保存」で保存できてしまうくらいなので、右クリック保存を禁止するのにそんなに高度な技は使ってないはずです。

HTMLソースを見ます。

http://image7.cosp.jp/ほにゃらら.jpg」という記述が二か所あります。直接アクセスしてみると、片方が縮小版、もう片方(idがimgViewとなっているほう)が高解像度版であることがわかります。

今回はそれを踏まえて、下記の動きをするプログラムを組むこととします。

1.参照元ページからhtmlソースをテキストで取得

2.htmlソースからidがimgViewの取得先URLを取得

3.取得先URLから画像データをダウンロード

とりあえず作る

VisutalStudioを起動してサクサクっと作ります。完成しました。ここまで10分くらいです。
URLを貼り付けてダウンロードボタンを押せばダウンロードできます。
また、コマンドライン引数でURLを投げつけてもダウンロードできます。
何も難しいことはしていません。問題はIEとの連携です。
でも具体的にどうすれば・・・

f:id:eaglejptattiieagle:20161003014451j:plain

レジストリを編集してIEの右クリックメニューに項目を追加する

右クリックメニューの追加の項目を管理しているレジストリの場所は
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt
になります。

ここに新しいキーを追加。ここでは「コスプレイヤーアーカイブ画像をダウンロード」とします。

contextsというREG_DWORD形式で追加し、値のデータを1(オン)とします。
(既定)にはこのボタンが押された時に実行したいファイルのパスを入力します。
ただ、ここにはhtmlファイルのパスしか記述できません。直接exeファイルを実行することができないのです。
なのでhtmlファイルを実行させて、内部のjavascriptからexeファイルを起動する方法を取ります。

javascriptは分からない。立ちはだかるOSのビット違いの問題。

javascriptは全く触ったことがなく、いろんなサイトを参考にしました。
ここで一つ問題が・・・このプログラム、Windows標準のProgram Filesにインストールします。(インストール場所の変更はできません)
ところがProgram Filesの名前はOSの対応ビット数によって変わってきます。

64bit版Windows ・・・ Program Files (x86)
32bit版Windows・・・Program Files

これではexeのパスが環境によって変わってしまいます。どうしたものか・・・

そんな中、javascriptAPIの中でユーザーエージェントの取得ができるということを知り、これで判別できるじゃないかということで、OSのビット数によってファイルパスを変えるようにしました。

f:id:eaglejptattiieagle:20161003022703j:plain


ただ、手元に32bit環境のパソコンがないので試せていません。
おそらく、こんな面倒なことをしなくても他によい方法があるはずなんですが・・・

右クリックでダウンロードできるようになった!

ダウンロードはできるようになりました。
ところがどっこい。レジストリやら何やらをパソコンに入れる度に設定するのは面倒です。なのでインストーラを作る必要があります。

今回は簡単インストーラというソフトを使わせていただきました。

・簡単インストーラ

http://www5a.biglobe.ne.jp/~nobukich/einstall/2/index.htm

f:id:eaglejptattiieagle:20161003023556j:plain

これでレジストリの設定も簡単ラクチン

とりあえず完成・・・か?

とりあえずこれで完成ということで。しょうもないバグとかありそうなので見つかったら手直ししていく感じで。