PerlでGifzo用サーバーをつくりました
正しくは、以前作成したGyazo用サーバー互換サーバー(ややこしい)のPyazo(https://github.com/uzulla/pyazo )を拡張し、Gifzoにも対応させました。
今日のHachioji.pm(http://hachiojipm.org) #29のハッカソンでとりあえずつくったモノなので、普段使いにオススメしたいものではありません。
ちなみに作業時間の4割くらいはImageMagickやffmpegの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がぱっとできませんでしたのであきらめました。ImageMagickやffmpegのbuildはロクな思い出がありません、手抜きよりちょっとマシな戦略的撤退です。
結局言い訳していますね、さいてい だ!!!!
構築方法
1,gitでDLします
2,cpanm --installdeps . 的なことをしてCPANモジュールいれます
3,start.sh起動してみます。
(ここまでで、Gyazo互換サーバーとしては使えます)
4,ffmpegをいれます、MP4とPNG対応が必須です
5,ImageMagick、またはその互換であるYoyaMagickなどをいれます、PNGとアニメーションGIf対応が必須です。
6,start.shに直書きされているffmpegとImageMagickへのパスを適当に書き換えます
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/