Python中YouTube API的Unicode视频搜索

4 投票
1 回答
1799 浏览
提问于 2025-04-17 05:24

我正在尝试使用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来处理你的查询。这样做的话,可能会导致字符串被重复编码,最后你搜索的视频名字就会变成一堆百分号,看起来很奇怪。

撰写回答