Gyazoのアップロード先をTwitterにした

一部のWeb系エンジニア大好きオレオレGyazoの話題です。今回は画像のアップロード先をTwitterにしました。

ご多分にもれず我が家もオレオレGyazoサーバーを運用しておりまして、 pic.kksg.net にアップロードされる方式をとっていました。しかしTwitterに画像を貼っても公式クライアントで展開されない & Webの画像一覧に出てこない問題があったため、Gyazoのアップロード先をTwitterにした。Twitterをストレージとして使うとサーバー管理が楽だし無料でいい。

現在のTwitterの仕様だと、pic.twitter.com ドメインなら他人のアカウントの画像でも展開されるみたいなのでストレージ用のアカウントを取得した。以下のスクリプトを使うと pic.twitter.com の URL がクリップボードに貼り付く。今までの Gyazo と同じように使える。 以下は Mac 用のやつ

システムの Ruby に Twitter Gem 追加

```sh sudo /usr/bin/gem install twitter ```

/Applications/Gyazo.app/Contents/Resources/script

```ruby #!/usr/bin/env ruby require 'net/http' require 'twitter' client = Twitter::REST::Client.new do |config| config.consumer_key = "YOUR_CONSUMER_KEY" config.consumer_secret = "YOUR_CONSUMER_SECRET" config.access_token = "YOUR_ACCESS_TOKEN" config.access_token_secret = "YOUR_ACCESS_SECRET" end # get id user = IO.popen("whoami", "r+").gets.chomp program = ARGV[0].to_s idfile = "/Users/#{user}/Library/Gyazo/id" old_idfile = File.dirname(program) + "/gyazo.app/Contents/Resources/id" id = '' if File.exist?(idfile) then id = File.read(idfile).chomp elsif File.exist?(old_idfile) then id = File.read(old_idfile).chomp end # capture png file tmpfile = "/tmp/image_upload#{$$}.png" imagefile = ARGV[1] sound_file = File.dirname(program) + "/shutter.aiff" if imagefile && File.exist?(imagefile) then system "sips -s format png \"#{imagefile}\" --out \"#{tmpfile}\"" else system "screencapture -x -i \"#{tmpfile}\"" if File.exist?(tmpfile) then system "afplay #{sound_file}" system "sips -d profile --deleteColorManagementProperties \"#{tmpfile}\"" dpiWidth = `sips -g dpiWidth "#{tmpfile}" | awk '/:/ {print $2}'` dpiHeight = `sips -g dpiHeight "#{tmpfile}" | awk '/:/ {print $2}'` pixelWidth = `sips -g pixelWidth "#{tmpfile}" | awk '/:/ {print $2}'` pixelHeight = `sips -g pixelHeight "#{tmpfile}" | awk '/:/ {print $2}'` if (dpiWidth.to_f > 72.0 and dpiHeight.to_f > 72.0) then width = pixelWidth.to_f * 72.0 / dpiWidth.to_f height = pixelHeight.to_f* 72.0 / dpiHeight.to_f system "sips -s dpiWidth 72 -s dpiHeight 72 -z #{height} #{width} \"#{tmpfile}\"" end end end if !File.exist?(tmpfile) then exit end res = client.update_with_media('', File.open(tmpfile)) display_url = res.attrs[:entities][:media][0][:display_url] url = "http://#{display_url}" File.delete(tmpfile) IO.popen("pbcopy","r+") do |io| io.write url io.close end system "open #{url}" ``` 無課金 & Twitterでの瞬間共有用途ならかなりソリューションだと思う

2014年10月13日

ConoHa オブジェクトストレージ用 Ruby クライアント

そこそこ信頼できるオブジェクトストレージとしてConoHaを使い出しました。ちょくちょくAWS S3は使っていたんですけど、無限にダウンロードし続けるバグを書いてしまったせいで…

2014年10月02日

iPhone 6 Plus の画面が割れた

発売から10日もせずに割れた。事故の内容については Theクラッシュ! の方に記載されています。たくさん iPhone 落としてきたけど画面割ったのは初めて。iPhone…

2014年09月23日

キャンピングカーで新潟燻製パーティー

キャンピングカー借りて新潟に行った。寝れるし電源あるし便利だけど、横幅が中型トラックくらいあってなかなか勇気が必要な乗り物だった。

2014年07月03日

BigQueryにTwitterのタイムラインを入れる [Ruby]

Twitterのタイムラインを保存しておくとなにかと便利なので、色々と保存形式を変えながら4年くらい記録し続けている。ツイートの保存が便利すぎるので、 ツイセーブというサービス化までした 。かつてはテキストで、MongoDBやMySQLとかGroonga…

2014年06月29日

個人開発を支える技術Nightで話してきた

個人開発を支える技術Night で ツイセーブ を支える技術という話をした。あまり公開したくない数字とか雇用関係の話が含まれているため、スライドは非公開とさせていただきます。ツイセーブのサーバー構成(VPSを5台使ってる)や全文検索周り(いろいろあってSolr…