37 lines
858 B
Ruby
37 lines
858 B
Ruby
require 'mechanize'
|
|
|
|
class Youtube < Botpop::Plugin
|
|
include Cinch::Plugin
|
|
|
|
match(/!yt (.+)/, use_prefix: false, method: :find_youtube_video)
|
|
|
|
HELP = ["!yt title"]
|
|
ENABLED = config['enable'].nil? ? false : config['enable']
|
|
CONFIG = config
|
|
|
|
private
|
|
def search_url(title)
|
|
CONFIG['search_url'].gsub('___MSG___', title)
|
|
end
|
|
def reduce_url(url)
|
|
CONFIG['reduce_url'].gsub('___ID___', url.gsub(/^(.+)(v=)(\w+)$/, '\3'))
|
|
end
|
|
def display(result)
|
|
CONFIG['display']
|
|
.gsub('___TITLE___', result[:title])
|
|
.gsub('___URL___', reduce_url(result[:url]))
|
|
end
|
|
public
|
|
|
|
def find_youtube_video m, title
|
|
e = Mechanize.new
|
|
e.get(search_url(title))
|
|
result = {
|
|
title: e.page.at(".item-section li").at('h3').text,
|
|
url: e.page.at(".item-section li").at('a')[:href],
|
|
}
|
|
m.reply display(result)
|
|
end
|
|
|
|
end
|