我在pastebin上找到了这个脚本,这是一个可以为你找到youtube视频的IRC机器人。我根本没有触及它(禁止频道设置),它运行良好,但它不会抓取已搜索视频的URL。这段代码不是我的!我希望能让它发挥作用,因为它非常有用!
#!/usr/bin/env ruby
require 'rubygems'
require 'cinch'
require 'nokogiri'
require 'open-uri'
require 'cgi'
bot = Cinch::Bot.new do
configure do |c|
c.server = "irc.freenode.net"
c.nick = "YouTubeBot"
c.channels = ["#test"]
end
helpers do
#Grabs the first result and returns the TITLE,LINK,DESCRIPTION
def youtube(query)
doc = Nokogiri::HTML(open("http://www.youtube.com/results?q=#{CGI.escape(query)}"))
result = doc.css('div#search-results div.result-item-main-content')[0]
title = result.at('h3').text
link = "www.youtube.com"+"#{result.at('a')[:href]}"
desc = result.at('p.description').text
rescue
"No results found"
else
CGI.unescape_html "#{title} - #{desc} - #{link}"
end
end
on :channel, /^!youtube (.+)/ do |m, query|
m.reply youtube(query)
end
on :channel, "polkabot quit" do |m|
m.channel.part("bye")
end
end
bot.start
目前,如果我使用命令
!youtube asdf
我得到了这个:
19:25< YouTubeBot> asdfmovie - 全球商店www.cafepress.com ... asdfmovie cakebomb tomska epikkufeiru asdf movie ... tomska ... [Baby Giggling]男人:有你的鼻子! [宝贝...... - www.youtube.com#
正如您所看到的,网址只是www.youtube.com#而不是视频的网址。
非常感谢!
答案 0 :(得分:1)
这是一个xpath问题。看起来第三个'a'有你想要的href,所以尝试:
link = "www.youtube.com#{result.css('a')[2][:href]}"