Python中YouTube API的Unicode视频搜索
我正在尝试使用YouTube的数据接口来搜索包含中文字符的关键词。不过,搜索的结果并不正确。
我使用的是Python,写了一些测试代码,里面用了unicode。
在测试代码中,我直接写了一个unicode的词,然后把它转换成utf-8格式,再进行网址编码,作为搜索词传给YouTube的接口。代码大致是这样的:
yt_service = gdata.youtube.service.YouTubeService()
query = gdata.youtube.service.YouTubeVideoQuery()
u_topic = u"a-mei"
u_topic = u"阿妹" # a-mei
s_topic = u_topic.encode('utf-8')
query.vq = urllib.quote_plus(s_topic )
query.time = 'this_month'
query.orderby = 'relevance'
query.racy = 'include'
feed = yt_service.YouTubeQuery(query)
当我搜索u"a-mei"时,代码是可以正常工作的,但当我搜索u"阿妹"时,结果就不对了。
我还尝试了以下这个网址:
https://gdata.youtube.com/feeds/api/videos?q=%E9%98%BF%E5%A6%B9
(这是网址链接:https://gdata.youtube.com/feeds/api/videos?q=%E9%98%BF%E5%A6%B9)
这里的q字符串是u"阿妹"的utf-8网址编码。
这个网址返回的结果是正确的。
所以,看起来YouTube的接口是支持utf-8作为搜索词的,但不知道为什么我的接口调用却没有返回正确的结果。
1 个回答
4
我觉得gdata API应该会自动处理查询参数的格式,所以你不需要手动用urllib.quote_plus
来处理你的查询。这样做的话,可能会导致字符串被重复编码,最后你搜索的视频名字就会变成一堆百分号,看起来很奇怪。