Youtube gdata和搜索词具有"&"



我有下面的代码让这个程序搜索youtube的gdata。

class Youtube
   def search_url(term)
     url = "https://gdata.youtube.com/feeds/api/videos"
     url += "?q=#{term}&alt=json&restriction=US&max-results=50&orderby=viewCount"
 url += "&fields=entry(id,title,yt:noembed,media:group(media:description),author(name),yt:statistics(@viewCount))"
     url += "&key=#{DEV_KEY}"

然而,当我测试这个程序时,当搜索词包含"&"时,它似乎无法搜索,比如流行的二重奏艺术家"Macklemore &"瑞安刘易斯。"

"&"可能不是失败的原因。但我只是怀疑。如果你认为"& &;"不是原因,你认为失败的原因是什么?如果你认为"&"是原因,我该如何解决它?

在将术语作为URL参数发送之前需要对其进行转义:

require 'cgi'
def search_url(term)
  term = CGI.escape(term)
  url = "https://gdata.youtube.com/feeds/api/videos"
  url += "?q=#{term}&alt=json&restriction=US&max-results=50&orderby=viewCount"
  url += "&fields=entry(id,title,yt:noembed,media:group(media:description),author(name),yt:statistics(@viewCount))"
  url += "&key=#{DEV_KEY}"

使用CGI.escape转义会得到一个uri安全的参数:

CGI.escape('Macklemore & Ryan Lewis')
# => "Macklemore+%26+Ryan+Lewis"

相关内容

  • 没有找到相关文章

最新更新