tumblr大好きなんだけど、平日は仕事やなんやかんやでみるひまほとんどないので、いい感じにreblogされてるquoteとphotoを取ってきてそれをhtmlにしてみるやつ作った。
ここを参考にやったんだけど、すごいわかりやすくて勉強になった。
RubyからTumblrへの投稿/データ取得ができるGem tumblr_client - 酒と泪とRubyとRailsと
API | Tumblr
require "bundler/setup" require "tumblr_client" require "erb" Tumblr.configure do |config| config.consumer_key = "your consumer key" config.consumer_secret = "your consumer secret" config.oauth_token = "your oauth token" config.oauth_token_secret = "your oauto token secret" end client = Tumblr::Client.new posts = [] client.dashboard({limit: 20})["posts"].each do |post| posts << post if (post["type"] == "quote" || post["type"] == "photo") && post["note_count"] > 100 end def makefeed(posts) feeds = [] posts.each do |post| feed = {} feed[:title] = "#{post["blog_name"]} -> type : #{post["type"]} -> note_count : #{post["note_count"]}" feed[:link] = post["post_url"] if post["type"] == "photo" img = "" post["photos"].each do |photo| f = photo["alt_sizes"][photo["alt_sizes"].size - 3]["url"] # f = photo["original_size"]["url"] img << "<img src='#{f}' /><br/>" end feed[:description] = img else feed[:description] = post["text"] end feed[:date] = post["date"] feeds << feed end feeds end @posts = makefeed posts @title = "my tumblr" template = File.open("mytumblr.html.erb", 'r').read erb = ERB.new(template) File.open("mytumblr.htm", 'w+') { |file| file.write(erb.result(binding)) } puts "#{@posts.size}posts output done."
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title><%= @title %></title> <meta name="keywords" content=""> <meta name="description" content=""> </head> <body> <h1><%= @title %></h1> <% @posts.each do |post| %> <div> <h2> <%= post[:title] %> </h2> <p> <% url = post[:link]; %> <a href="<%= url %>"><%= url %></a> </p> <p> <%= post[:description]; %> </p> <p> <%= post[:date]; %> </p> </div> <% end %> </body> </html>
こんな感じでみれる。
ほんとはrssで吐いてたんだけど、ローカルのrssをgoogle readerで読む方法がわからなかったのであきらめた...
limitが20までしか指定できないのでcronとかタスクとかで回してdbとかにつっこんで、任意のタイミングでrssなりhtmlなりに吐き出せばいい感じになる気がする。
erbとか初めて使ったけど便利さを感じた。
勉強になる。