我第一次试过
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 &瑞安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中打开这两个链接(其他浏览器似乎无法打开它们)
瑞安https://gdata.youtube.com/feeds/api/videos?q=Macklemore + % 26 + + Lewis&限制= US&效果= 50,orderby = viewCounthttps://gdata.youtube.com/feeds/api/videos?q=Macklemore,瑞安Lewis&限制= US&效果= 50,orderby viewCount
=告诉我查询中的"&"确实影响很大。
如何才能真正解决这个问题?
不能使用&在q=中不转义。&URL中的%26似乎是正确的。如果&
当我在youtube.com上搜索只有一个词:&然后浏览器显示url: http://www.youtube.com/results?search_query=%26