Edited at

エビ中とLINEしてる気分になれるChatBotをPictRubyで作ってみた

More than 3 years have passed since last update.

おはようございます。中20のチェレンコフです。

qiita初投稿です。よろしくお願いします。

最近ChatBotがアツいらしく、

先日LINEのBOT APIが公開されて、早速 @masuidriveさんが遊んでおられる。

とりあえずLINE BOT APIでオウムを作ってみた - Qiita

総裁のブログなんてお昼から繋がらない。

はてなブックマーク - 2016年後半はbotが来るわ。LINE-bot作ったけどマジでやばい。 | ふくゆきブログ

乗るしかない このビッグウェーブに


エビ中とLINEがしたくて

PictRuby v0.5でLINE BLOGの記事を使ったChatBotを作りました。

※記事はRSSで取得します。


遊び方

iosアプリのPictRubyをインストールして下記のコードをコピペして実行。

最新10件のタイトルが表示されるので対応する数字をつぶやくと会話が始まります。

LINE固有?の絵文字は文字化けするようです😢

RSSのURLを変えればほかのアイドルさんのLINE BLOGもいけるはずです。


line_like_chatbot.rb

#line_like_chatbot v0.1

class Chat
def initialize
feed = "http://lineblog.me/ebichu/index.rdf"
count = 10
url = "https://query.yahooapis.com/v1/public/yql?q=SELECT%20title%2Clink%2Cencoded%20FROM%20rss%20WHERE%20url%3D%22" + URI.encode_www_form_component(feed) + "%22%20%7C%20truncate(count%3D" + count.to_s + ")&format=json"
data = Browser.json url
@menu = []
@text = []
data['query']['results']['item'].each_with_index {|item,i|
@menu.push "#{i+1}:#{item['title']}"
@text.push item['encoded']
}
@menu = @menu.join("\n")
@select_index = nil
@stdout = nil
@i = -1
end

def welcome
@menu
end

def call(input)
if @select_index == nil
@select_index = input.to_i
src = @text[@select_index-1]
url = "http://api.dan.co.jp/lleval.cgi?l=rb&s=" + URI.encode_www_form_component("p '#{src}'")+".gsub(%2F%5Cn%5Cs%2B%7C(%3Cbr%5Cs%5C%2F%3E)%2B%2F%2C%22%5Cn%22).gsub(%2F%3C(%22%5B%5E%22%5D*%22%7C'%5B%5E'%5D*'%7C%5B%5E'%22%3E%5D)*%3E%2F%2C'').gsub(%2F(%5CA%5Cn%2B%7C%5Cn%2B%5Cz)%2F%2C%22%22).split(%2F%5Cs*%5Cn%2B%5Cs*%2F)"
json = Browser.json url
@stdout = eval(json['stdout'])
@i += 1
@stdout[@i].strip
else
@i += 1
@i < @stdout.size ? @stdout[@i].strip : "おわり🍤"
end
end
end



感想

Rubyほとんど書いたことがなくていろいろハマって大変だった。夜なべすること5日。pとputsでマルチバイト文字列の見え方が変わって8進数表記の文字列どうしたらええねん!とか。

PictRubyはJSONを取ってこれるのでYQLで記事をJSONに加工して取得した。

あとPictRuby0.5では正規表現に対応していないので @dankogai さんのllevalでHTMLタグ除去に成功した。マジ感謝。

gsubの正規表現のダブルクォーテーションとかエスケープしてもllevalでエラーで返ってきたので、事前にエンコードしてくっつけたらうまくいった。

PictRuby 0.5 リリース - チャットボット、eval、irb - ブログのおんがえし

※次期バージョンで正規表現対応するとのこと。期待!!

PictRubyはサンプルがよく出来ていて、学研 科学のふろくのようなワクワク感が味わえます!

こちらからのおんがえしは以上です!!!!! @ongaeshi