一部のWeb系エンジニア大好きオレオレGyazoの話題です。今回は画像のアップロード先をTwitterにしました。
ご多分にもれず我が家もオレオレGyazoサーバーを運用しておりまして、 pic.kksg.net にアップロードされる方式をとっていました。しかしTwitterに画像を貼っても公式クライアントで展開されない & Webの画像一覧に出てこない問題があったため、Gyazoのアップロード先をTwitterにした。Twitterをストレージとして使うとサーバー管理が楽だし無料でいい。
— 夏.tk (@9m) 2014, 6月 17
現在の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 rubyrequire ‘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での瞬間共有用途ならかなりソリューションだと思う