Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
流れてきたツイートに含まれる画像とかを全部保存するmikutterプラグイン
# -*- coding: utf-8 -*-
=begin
mikutter_download_all_media
Copyright (c) 2014 Takuma Nakajima
This software is released under the MIT License.
http://opensource.org/licenses/mit-license.php
=end
require 'fileutils'
require 'open-uri'
require 'net/http'
require 'uri'
Plugin.create :download_all_media do
# 画像の保存先ディレクトリを指定
@storedir = File.expand_path("~/twitter_media")
FileUtils.mkdir_p @storedir unless Dir.exists? @storedir
on_appear do |msgs|
msgs.select{ |m|
# 画像とかが入っているツイートを取り出す
m[:entities][:media]
}.map{ |m|
# RTされたものだったら元のツイートを取得
if m.retweet?
m.retweet_source
else
m
end
}.each do |m|
Thread.new {
# 1つのツイートに複数の画像が貼ってある場合は順番に処理
m[:entities][:media].each do |media|
begin
uri = URI.parse(media[:media_url])
filename = File.join(@storedir, File.basename(uri.path))
# 既にファイルが存在していたら何もしない
unless File.exists? filename
storefile = open(filename, "w")
storefile.write(Net::HTTP.get uri)
storefile.close
end
rescue => e
puts e.inspect
end
end
}
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment