第13回北海道開発オフ成果:Google TrendのHottrendをTumblr投稿する
以前、Google TrendのHottrendを@dabesaにポストさせるScriptを書きました。
・[-*煙猴*-]: 第7回北海道開発オフ成果:Google TrendのHottrendをTwitter投稿する
今回は、Yahoo!デベロッパーネットワークの画像検索APIを使って、そのHottrendの一番最初の検索結果の画像をだべさTumblrにポストさせてみました。
わざわざadult_ok=1にしているので、エロい画像も混ざってしまう可能性はありますが、そのほうが面白いかと思って。べ、べつに下心なんて無いんだからねっ。
以下ソース。
・[-*煙猴*-]: 第7回北海道開発オフ成果:Google TrendのHottrendをTwitter投稿する
今回は、Yahoo!デベロッパーネットワークの画像検索APIを使って、そのHottrendの一番最初の検索結果の画像をだべさTumblrにポストさせてみました。
わざわざadult_ok=1にしているので、エロい画像も混ざってしまう可能性はありますが、そのほうが面白いかと思って。べ、べつに下心なんて無いんだからねっ。
以下ソース。
#! /usr/bin/ruby -Ku
require 'open-uri'
require 'rexml/document'
require 'net/http'
require 'rubygems'
gem 'twitter4r'
require 'twitter'
require 'pit'
# Twitter4Rバグ回避
require 'cgi'
class Hash
def to_http_str
self.map{|key,value| "#{key}=#{CGI.escape(value.to_s)}"}.join("&")
end
end
# TinyURL化メソッド
def tinyurl(link)
url = "http://tinyurl.com/api-create.php?url=" + link
open(url) do |http|
res = http.read
return res
end
end
begin
#################### HOTをとってくるところ
uri="http://www.google.co.jp/trends/hottrends/atom/hourly"
xml = open(uri).read
eventlist=Array.new
REXML::Document.new(xml).root.elements.each("entry") do |elm|
eventlist << elm.elements['content'].text.to_s
end
i = eventlist[0].index("href=")
i = i + 6
j = eventlist[0].index("&sa=X")
j = j + 4
url = eventlist[0][i..j]
turl = tinyurl(url)
i = eventlist[0].index("&sa=X")
i = i + 7
j = eventlist[0].index("")
j = j - 1
keyword = eventlist[0][i..j]
#################### Twitterにポストするところ
mess = "今日のキーワードは\"" + keyword + "\"だべさ。 => " + turl
config = Pit.get("dabesa")
cl = Twitter::Client.new(config)
cl.status(:post,mess)
#################### Tumblrにポストするところ
param = Hash.new
param['appid'] = "アプリケーションID"
param['query'] = keyword
param['results'] = 1
param['adult_ok'] = 1
opt = param.map{|i| i.map{|j| CGI.escape j.to_s}.join('=') }.join('&')
base = "http://search.yahooapis.jp/ImageSearchService/V1/imageSearch?"
uri = base + opt
xml = open(uri).read
doc = REXML::Document.new(xml)
doc.elements.each("/ResultSet/Result") do |elm|
caption = elm.elements['Summary'].text
source = elm.elements['Url'].text
opt = "email=メールアドレス&password=パスワード&type=photo&source=" + source + "&caption" + caption
end
Net::HTTP.version_1_2
Net::HTTP.start("www.tumblr.com", 80) do |http|
responce = http.post("/api/write", opt)
end
rescue
print "RuntimeError: ", $!, "\n";
end