EpisoQスクリプト
code:episoq (ruby)
#!/usr/bin/env ruby
#
# なぞなぞ問題プールからランダムに問題を選択して問題編集画面を開く
#
# データ例: https://Scrapbox.io/masui-episoq-kenmei
#
# % episoq -n 10 masui-episoq-kenmei
#
require 'net/http'
require 'json'
require 'uri'
project = 'masui-episoq-kenmei'
n = 10
while ARGV.length > 0
arg = ARGV.shift
if arg == '-n'
n = ARGV.shift.to_i
elsif arg == '-h'
STDERR.puts "% episoq -n 問題数 プロジェクト"
exit
else
project = arg
end
end
#
# ピンどめされてないページのリストを取得
#
url = URI("https://scrapbox.io/api/pages/#{project}")
response = Net::HTTP.get(url)
data = JSON.parse(response)
titles = data'pages'.select { |page| page'pin'==0 }.collect { |page| page'title' }
questions = []
answers = []
titles.each { |title|
if title =~ /^_/
next
elsif title =~ /(\?|?)$/
questions << title
else
answers << title
end
}
# 問題リストからランダムにn個選択
questions = questions.sample(n)
# 答リストを生成
answers = answers.sort.map { |answer|
answer.sub(/^\w+\s+/,'') #ソート用文字を削除
}
qlist = questions.join(';') # 問題リスト
alist = answers.join(';') # 答の候補のリスト
# EpisoPass問題作成ページを開く
system "open 'http://episopass.com/?questions=#{qlist}&answers=#{alist}&n=#{n}'"
#EpisoQ