はてなブックマークのTOP5をスマホがしゃべりはじめるPictRuby botを書いた
チェレンコフさんの書いたエビ中とLINEしてる気分になれるChatBotが面白かったので真似してはてなブックマーク版を作りました。はてなブックマークじゃなくてもRSSさえあればなんでもしゃべります。
使い方
総合
とか世の中
とか言うと各カテゴリ最新の5件を表示してくれます。
最新の5件を表示したあと、1
から5
までの数字を入力すると記事の概要をしゃべり始めます。
相槌を打つと続きをどんどんしゃべります。
最後にそのURLが表示されるのでクリックするとそのページが表示されます。
bm
と入力することでそのページをはてなブックマークアプリで開いてくれます。(概要の紹介途中でもOK)
カテゴリ
と入力するとことで入力可能なカテゴリ一覧が表示されます。
文字だけでサクサク見れるのが快適です。
インストール
以下のソースコードをPictRubyに貼り付けてください。get_sampleからja/hatena_bookmark_bot
でもインストールできます。
# Define "main" function or "Chat" class class Chat def initialize end def welcome "カテゴリを入力 (例: 総合, 世の中)" end def call(input) url = RSS[input] if input == "カテゴリ" return RSS.keys.join("\n") end # argv = input.split(/\s+/) argv = input.split(" ") if argv[0] == "bm" url = argv[1] || @manuscript.last bookmark url return "#{url} をブックマーク" end if url feed = FeedReader.new url @items = feed.data['query']['results']['item'] return sitemap end if (1..5).include? input.to_i @item = @items[input.to_i - 1] @manuscript = [] @manuscript.push @item['title'] description = @item['description'] if description @manuscript.concat description.split("。").map { |e| e + "。" } end @manuscript.push @item['link'] @i = 0 txt = @manuscript[@i] @i += 1 return txt end if @manuscript && @manuscript[@i] txt = @manuscript[@i] @i += 1 return txt end "?" end private def sitemap i = 0 @items.map do |e| i += 1 "#{i} #{e['title']}" end.join("\n") end def bookmark(url) Browser.open "hatenabookmark:/entry?url=#{url}" end end class FeedReader attr_reader :data def initialize(url) feed = url count = 5 url = "https://query.yahooapis.com/v1/public/yql?" + URI.encode_www_form( q: "SELECT title,link,description,encoded FROM rss WHERE url=\"#{feed}\" | truncate(count=#{count})", format: "json" ) @data = Browser.json url end end RSS = { "総合" => "http://b.hatena.ne.jp/hotentry.rss", "世の中" => "http://b.hatena.ne.jp/hotentry/social.rss", "政治と経済" => "http://b.hatena.ne.jp/hotentry/economics.rss", "暮らし" => "http://b.hatena.ne.jp/hotentry/life.rss", "学び" => "http://b.hatena.ne.jp/hotentry/knowledge.rss", "テクノロジー" => "http://b.hatena.ne.jp/hotentry/it.rss", "アニメとゲーム" => "http://b.hatena.ne.jp/hotentry/game.rss", "エンタメ" => "http://b.hatena.ne.jp/hotentry/entertainment.rss", "おもしろ" => "http://b.hatena.ne.jp/hotentry/fun.rss", "動画" => "http://b.hatena.ne.jp/video.rss", }
おまけ
RSSだったらなんでも渡せるのでよく見るブログも追加できます。
RSS = { . . "前園" => "http://lineblog.me/maezonomasakiyo/index.rdf", "エビ中" => "http://lineblog.me/ebichu/index.rdf", }
余談
PictRubyの名前を変えるためのアンケート募集です https://t.co/3NAP2B21pi
— おんがえし (@ongaeshi) 2016年4月17日