Unicode в Youtube API для поиска видео в python - PullRequest
4 голосов
/ 01 ноября 2011

Я пытаюсь использовать API данных YouTube для поиска, где поисковый запрос включает китайские символы.Но поисковый запрос не возвращает правильных результатов.

Я использую python, и я только что написал некоторый тестовый код, который использует Unicode.
В тестовом коде я жестко кодирую термин Unicode, преобразуя его вutf-8, затем URL закодируйте его как поисковый запрос и передайте его в API 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)

Код работает, когда я ищу для вас "a-mei", но я не получаю правильные результаты, когда я ищу для вас "阿妹"

Я также попробовал следующий URL:

   https://gdata.youtube.com/feeds/api/videos?q=%E9%98%BF%E5%A6%B9

(вот URL в виде ссылки: https://gdata.youtube.com/feeds/api/videos?q=%E9%98%BF%E5%A6%B9)
где строка q - это URL-кодировка utf-8 для вас "阿妹 "
Этот URL возвращает правильные результаты.

Таким образом, похоже, что API-интерфейс youtube разрешает использование utf-8 для поисковых запросов, но по какой-то причине мой вызов API не возвращает правильные результаты.

1 Ответ

4 голосов
/ 02 ноября 2011

Я считаю, что API gdata должен позаботиться о форматировании параметров запроса. Поэтому вам не нужно вручную urllib.quote_plus запрашивать ваш запрос, и в результате вы получите строку с двойным экранированием, в результате чего вы в буквальном смысле будете искать видео, имя которого загружено в процентах.

...