uzullaがブログ

uzullaがブログです。

PerlでGifzo用サーバーをつくりました

正しくは、以前作成したGyazo用サーバー互換サーバー(ややこしい)のPyazo(https://github.com/uzulla/pyazo )を拡張し、Gifzoにも対応させました。
今日のHachioji.pm(http://hachiojipm.org) #29のハッカソンでとりあえずつくったモノなので、普段使いにオススメしたいものではありません。
ちなみに作業時間の4割くらいはImageMagickffmpegのDLやbuildに費やされたことをお伝えしておきます。


そもそも本家が素晴らしいサーバーを提供しているので、普段使いにはそちらをご利用ください。
理由があって自前で建てたいという奇特な人(俺だ)以外は別に用はありません。


むしろ、ないらしいから作ったのであって、もっと良い実装が他にあるのなら教えて頂きたいです!
(無い、とmoznion君にいわれましたが、もしあったら彼をシメる必要がある)

一応、Gifzoとはなにか。

http://gifzo.net/
こちらを御覧ください、とてもすばらしいものです。
手軽にGifを作れるのでマジ最高だと思います。

なぜ作ったのか

moznion「Gifzoいいですよね」
私「いいね、あれはクールだ、Yanchaにもつけたい(手軽にインライン表示させたい)」
moznion「でもあれはサーバーが公開されてないんすよね」
私「そもそもクライアントがバイナリじゃないか、Gyazoみたいにかきかえられないのでは」
moznion「OSSになりましたよ」
私「エッマジか、ホントだ。っていうかちょちょいと投稿先サーバー変えられるじゃん、これはいいね。じゃあ互換サーバつくるかー」
moznion「本当につくってくれたらLinux用のGifzoクライアントつくりますわー」
私「できた」
moznion「えっ」
私「じゃああと宜しく」
moznion「が、がんばります」

というと、なんかすごい感じだが

実際のところ名前の通りGifzoはGyazoと似た感じになっていて、違いといえば変数名が違う所と、サーバーには実はGifでなくMP4ファイルを送信しているので、サーバ側ではそれを受け取って変換しなきゃいけない、という位の話でした。とてもシンプルで良いと思います。


あと、返されるURLがGifzoではGif or MP4のDLページになってますが、別にMP4でDLさせることもないので、普通にgifのURLを返すようにしました*1
もともとPyazoはYancha( http://github.com/uzulla/yancha/ )に画像を貼る為につくった簡単なGyazo互換なので、それで良いのです。

配布元

https://github.com/uzulla/pyazo/
こちらです。後日暇な時にコードを再整理します。
なにかご意見あればISSUEにでもかいておいてください、日本語でOKです。

でもまあ、そもそも他に使う人が出る気がしませんので、なおすかわかりません。

言い訳したいところは山ほどありますが、そもそも言い訳にしかならない感ありますので、特にしません。
テストがないとか小学生以下だな糞がとか、ログを雑に扱うと椅子投げるぞとか、シェル呼んでるところをImage::Magickにしないのかとか最たる所だとおもいます。


前2つは手抜きですが、最後のはPerlMagickのbuildがぱっとできませんでしたのであきらめました。ImageMagickffmpegのbuildはロクな思い出がありません、手抜きよりちょっとマシな戦略的撤退です。


結局言い訳していますね、さいてい だ!!!!

構築方法

1,gitでDLします
2,cpanm --installdeps . 的なことをしてCPANモジュールいれます
3,start.sh起動してみます。
(ここまでで、Gyazo互換サーバーとしては使えます)
4,ffmpegをいれます、MP4とPNG対応が必須です
5,ImageMagick、またはその互換であるYoyaMagickなどをいれます、PNGとアニメーションGIf対応が必須です。
6,start.shに直書きされているffmpegImageMagickへのパスを適当に書き換えます
7,Gifzoクライアントの投稿先URLを変更します。
Macだと defaults write net.gifzo.Gifzo url -string "http://hostname:5000/" などとコマンドラインで実行することで可能です。Winはしりません)

サンプルサイト的なものはYancha*2にあります

http://yancha.hachiojipm.org/
チャットにいる人や私(uzulla)にでも聞いてみてください。


ただ、最初に書きましたが、普段使いには本家がそもそも素晴らしいサーバーを提供しているので、理由があって自前で建てたいという奇特な人(俺だ)以外は別に用はありませんし、安いサーバーなので勘弁して下さい。

id:moznion君へ

あとは頼んだ。

感想

…エッなにこれ、Gifzoのサーバーってどんだけ計算パワーあんの…!?

*1:URLの拡張子をmp4に変えたら、MP4がDLできます

*2:PerlでできたWebsocket動作のチャット http://github.com/uzulla/yancha/