2011-11-01 1 views
3

youtube의 데이터 API를 사용하여 검색 용어 에 중국어 문자가 포함되어있는 곳을 검색하려고합니다. 그러나 검색 쿼리가 올바른 결과를 반환하지 않습니다.유니 코드 in Youtube 파이썬에서 비디오 검색을위한 API

저는 파이썬을 사용하고 있으며 유니 코드를 사용하는 테스트 코드를 작성했습니다.
테스트 코드에서 유니 코드 용어를 하드 코딩하고 utf-8로 변환 한 다음 URL을 인코딩하여 YouTube API에 전달합니다. 내가 U "는 메이"를 검색하면

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) 

코드는 작동하지만 내가 유를 검색 할 때 올바른 결과를 얻을 수 없습니다 "阿妹"또한

내가 : 같은 코드가 보인다

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) 질문 문자열이 U의 UTF-8의 URL 인코딩입니다
"阿妹"
다음 URL을 시도이 url은 올바른 결과를 반환합니다.

따라서 YouTube API가 검색어에 대해 utf-8을 허용하지만 어떤 이유로 내 API 호출이 올바른 결과를 반환하지 않는 것 같습니다.

+1

스크립트 상단에'# - * - coding : utf-8 - * -'이 있습니까? – wberry

+0

좋은 지적. 네, 스크립트와 html 페이지 모두에 있습니다. – TaiwanGrapefruitTea

답변

4

gdata API는 쿼리 매개 변수의 서식 지정을 처리해야한다고 생각합니다. 따라서 쿼리를 수동으로 urllib.quote_plus 번 수행 할 필요가 없으며 이렇게하면 이중 이스케이프 문자열이 생기므로 문자 그대로 퍼센트가로드 된 이름의 비디오를 검색 할 수 있습니다.

+0

예! 그게 그 버그 야! 훌륭한 통찰력을 가져 주셔서 감사합니다! – TaiwanGrapefruitTea