#author("2025-10-04T20:34:51+09:00","default:kanateko","kanateko")
&tag(プラグイン,自作,追加);

#ref(imgur.webp,center,wrap,500x)

#contentsx

*Imgurのメディアを表示するプラグイン [#summary]

#infobox(plugin){{
name = imgur
ver = 1.0.0
pukiwiki = 1.5.4
update = 2025-10-03
}}

imgurにアップロードされた画像や動画を表示するプラグイン。Wikiにアップロードできるファイルサイズは小さめに設定しているため、それ以上の容量のメディアを利用したい場合に、imgurを経由して表示することができる。

#box(label,label-style=full,box-color=blue,title=このプラグインでできること){{
-imgurのメディアを表示する
--jpg, png, gif, webp, avif, mp4、webmに対応
---フォーマットの自動判別が可能
---自動判別時は非同期で読み込みを行う
--ブロック型とインライン型で使用可能
--サイズや表示位置を変更可能
--画像はクリックするとモーダルで拡大表示ができる
--画像にキャプションを追加できる
}}

#clear

*ダウンロード [#download]
最新: [[GitHub>https://github.com/kanateko/pukiwiki-plugin]]

|~日付|~バージョン|~備考|h
|CENTER:120|CENTER:60|590|c
|2024-10-04|1.0.0|#ul(初版作成)|

*セットアップ [#setup]
+ダウンロードした「imgur.inc.php」をpluginフォルダ内に配置する。

//*プラグイン設定 [#setting]


*使用方法 [#usage]
 ブロック型
 #imgur([ハッシュ or URL][, オプション])
 
 インライン型
 &imgur([ハッシュ or URL][, オプション]);

第1引数でメディアのハッシュかURLを指定する。URLは`&nop(https://i.imgur.com/XXXXX);`の形式に対応。

ハッシュ値の後に拡張子がない場合、遅延読み込みでメディアの形式を自動判別する。

**オプション [#option]
#box(label,title=共通){{
:width=|表示するメディアの幅を指定する。`px`か`%`で指定可能で、単位がない場合は`px`扱いになる。
:height=|表示するメディアの高さを指定する。`px`か`%`で指定可能で、単位がない場合は`px`扱いになる。
:(幅)x(高さ)|表示するメディアの幅と高さを同時に指定する。片方を省略することもできる。
:left, center, right|メディアの表示位置を指定する。
:cap=|画像にキャプションを追加する。
:nolink|画像をモーダル表示させない。
:class=|クラスを追加する。
}}


*使用例 [#example]
#tab{{{{
#:表示
↓第1引数に拡張子が含まれるので即座に表示される。
&imgur(C6HqM9R.jpg,360x,cap=子キツネ);

CENTER:↓拡張子の指定がないので自動判別と非同期読み込み
#imgur(Q9gCSC4,center,360x)

#:ソース
 ↓第1引数に拡張子が含まれるので即座に表示される。
 &imgur(C6HqM9R.jpg,360x,cap=子キツネ);
 
 CENTER:↓拡張子の指定がないので自動判別と非同期読み込み
 #imgur(Q9gCSC4,center,360x)
}}}}

*備考 [#notes]
8月あたりに作り始めたのだが、ちょうどその頃にimgurのAPIが停止したらしく、思ったような機能が盛り込めず一旦開発を中止。

で、今回試しに興味があったCodexに開発を丸投げしてみた。結構細かく指示を出さないと中々思った通りの実装ができなかったが、自然言語でのやりとりだけで次々に仕様を追加できるのは結構面白かった。特にプラグインの仕様に則った非同期通信の実装とか、一発でちゃんとしたもの出してくるとは思っていなかったので、いい意味で期待を裏切られた。

*コメント [#comment]
#pcomment(reply)