处理及;在Youtube API查询中

处理及;在Youtube API查询中,youtube,youtube-api,gdata,youtube-data-api,Youtube,Youtube Api,Gdata,Youtube Data Api,我第一次试过 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,medi

我第一次试过

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&Ryan Lewis”这样的查询

然后有人建议

require 'cgi'
class Youtube
  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}"
但这并没有解决问题。但它只是使以前有效的查询不再有效

在Firefox中打开这两个链接(其他浏览器似乎无法打开)

&Ryan Lewis&restriction=US&max结果=50&orderby=viewCount

告诉我查询中的“&”确实影响严重


如何才能真正解决这个问题呢?

你不能在q=中使用&in而不逃避它。URL中带有%26的转义似乎是正确的。如果&被遗漏了呢

当我在youtube.com上仅搜索一个术语时:& 然后我的浏览器显示url: