안녕하세요 Jeff Fisher입니다. YouTube API 를 사용한 동영상 검색법에 대해 말씀드리겠습니다.
YouTube에하는 일반적인 작업은 동영상을 검색하는 것입니다.
동영상 피드를 사용하여 API로 비디오를 검색합니다.
"q" 파라미터를 사용하여 검색어를 명시합니다.
좀 더 복잡한 검색어는 URL escape 처리로 명시할 수 있습니다.
API에는 다양한 버전에 있는데,
"v" 파라미터나 특수 헤더로 버전을 명시할 수 있습니다.
YouTube에는 "cute puppy" 동영상이 많기 때문에 모든 검색 결과를 한꺼번에 처리하고 싶지 않으시죠.
"max-results" 파라미터로 갯수를 명시할 수 있습니다.
한번에 10개를 원하면서 10 페이지까지 원할수도 있죠.
rel="next"로 세팅된 link 엘리먼트에 API로 리턴된 피드를 볼 수 있습니다.
이는 다음 결과 페이지에 대해서 알려주며 피드를 통해서 페이징 하는 올바른 방법입니다.
"next"링크를 보면, "start-index" 파라미터가 있는데, 이것은 다음 페이지의 시작을 알려줍니다.
하지만 이 파라미터를 매뉴얼하게 세팅해서는 안되며 대신 피드로부터 "next"값을 extract하도록 합니다.
YouTube API를 사용할 수 있는 다른 쿼리 파라미터들에 대해서 알아보겠습니다.
첫째, "orderby"에 대해서 알아보겠습니다. 디폴트로 결과는 관련 순서로 리턴이 됩니다.
하지만 주회수, 평가점수, 게시일 등의 순서로 리턴되게 할 수도 있습니다.
"author" 파라미터로 특정 YouTube 사용자가 게시한 모든 동영상을 검색할 수도 있습니다.
업로드 피드를 받는 것과 동일한 작업입니다.
API 버전 2 에서는 위치기반 검색을 추가했습니다.
위도와 경도 정보를 입력하여 해당 위치 근방에서 발생한 동영상을 찾을 수 있죠.
다수의 동영상이 '런던'과 같은 위치 설명만을 가지고 있기 때문에
분명한 위도, 경도 정보를 가진 동영상이 리턴되기를 원한다면
감탄부호(!)를 쿼리에 추가하세요.
임베디드 가능한 동영상만을 보려면 "format" 파라미터를 사용합니다.
특정 언어로 된 결과만을 원한다면 language restrict를 사용할 수 있습니다.
참고로 이는 단지 동영상 메타데이타이며 오디오 트랙 언어는 아닙니다.
safeSearch 값도 명시할 수 있는데, 디폴트는 보통값 "moderate"입니다.
하지만 제한된 컨텐츠를 필터링하기 위해 "strict" 또는 "none"을 설정할 수도 있습니다.
어떤 동영상은 특정 지역에서 재생되지 않습니다.
국가 코드나 IP 주소를 넘겨줘서 사용자의 지역을 명시할 수 있습니다.
IP 주소를 넘기는 경우 국가 코드를 확인할 수 있습니다.
이는 재생할 수 없는 동영상을 걸러내어 사용자 경험을 개선하기 위한 것일 뿐임을 참고하세요.
이 파라미터를 사용한다고 해서 재생할 수 있는 동영상에 영향을 주지 않습니다.
YouTube에는 Comedy, News, Politics 등 다양한 동영상 카테고리가 있습니다.
Comedy 카테고리 안에 있는 동영상만을 원한다면 "category" 파라미터를 사용하시면 됩니다.
다른 Google Data API에 익숙하다면 아래와 같은 구문을 사용할 수 있습니다.
"puppy"라는 태그를 가지고 있는 모든 동영상 검색과 같이 태그 검색을 하고 싶으시면 동일한 메카니즘을 이용하세요.
동영상 카테고리는 대문자로 시작합니다. 반면 태그는 소문자로 시작하구요.
다시 말하면 위의 검색은 Comedy 카테고리에 있는 모든 동영상 검색이고
아래는 "comedy"라는 태그를 가지고 있는 동영상 검색입니다.
우리가 다루었던 다른 쿼리 파라미터들을 조합해서 사용할 수도 있습니다.
예를 들어, 외부 웹페이지에 임베디드 가능한 Comedy 카테고리에 있는
고양이(kitten) 동영상을 검색하고자 한다면 이 쿼리를 사용할 수 있습니다.
YouTube는 또한 인기있는 동영상 리스트를 제공합니다.
스탠다드 피드(standard feeds)로 알려져 있는데,
최상위 평가 점수, 최다 조회수, 최다 댓글수 등이 있습니다.
최상위 평가 점수 동영상 중에서 "time" 파라미터를 사용하여 금주에 게시된 동영상을 검색할 수도 있습니다.
최상위 평가 점수 동영상 중에서 이번 달이나 오늘 게시된 동영상도 볼 수 있습니다.
최상위 평가 점수를 받은 동영상 중에서 Comedy와 같이 특정 카테고리 안에 있는 동영상을 볼 수도 있습니다.
앞서 다뤘던 "category" 파라미터 사용과는 차이가 있음을 주의하세요,
상단의 피드는 Comedy 카테고리 내에 있는 평가 상위 100개 동영상입니다.
반면 하단은 YouTube에 있는 평가 상위 100개 동영상 중에서 Comedy 카테고리에 속한 것들 입니다.
일본에서 평가 상위에 있는 Comedy 동영상과 같이 지역에 따라 다른 스탠다드 피드를 볼 수도 있습니다.
YouTube API 사용에 많은 흥미를 가지시길 기대합니다.
하지만 시작에 앞서, 몇 가지 주의 사항을 말씀드리겠습니다.
비디오 검색 피드에서 1000개 이상을 검색할 수 없습니다. YouTube.com에서와 마찬가지죠.
openSearch totalResults 값은 근사치입니다.
그래서 페이지 번호를 매뉴얼하게 매겨선 안됩니다. 대신 "next" 링크를 사용하시면 됩니다.
앞서 cute puppy 동영상을 검색했던 예제로 돌아가봅시다.
YouTube는 거대한 동영상 웹사이트이기 때문에 검색 정보는 캐시에 저장된 정보일 수 있습니다.
이는 가장 최근 업로드된 cute puppy 동영상은 검색 결과에 표시되지 않을 수도 있다는 뜻이죠.
이는 또한 동영상 제목과 설명과 같은 정보가
검색 목록에 업데이트되기까지 한두 시간 소요될 수도 있다는 뜻입니다.
또한 조회수나 선호도 등의 해당 동영상의 통계가 최신 정보가 아닐 수도 있습니다.
또한 private 에서 public으로 공개 여부가 바뀐 경우 검색 목록에 들어가는데 더 오랜 시간이 걸릴 수도 있습니다.
정보를 받고자 하는 동영상의 ID를 알고 있는 경우라면
YouTube에서 동영상을 검색하는것과 유사하게 이것도 캐시에 저장된 정보일 것입니다.
또한 사용자로서 승인되지 않았을 때 업로드 피드를 통해서 정보를 받으려고 하는 경우에도 마찬가지입니다.
하지만 승인된 경우라면 캐시로 저장되지 않은 정보를 받을 것이고 이 정보는 최신입니다.
또한 사용자로서 승인을 받은 상태로 업로드 피드를 받는 다면
캐시로 저장되지 않은 정보를 받게 될 것입니다.
이는 YouTube가 가지고 있는 최신 정보를 받는 다는 뜻이죠. 그 정보는 게시 시간 순서에 따라 정렬될 것입니다.
하지만 해당 피드에 "orderby"와 같은 쿼리 파라미터를 추가하면
인증이 되었다 하더라도, 결과는 캐시로 저장이 됩니다.
캐싱 프로세스에 영향을 주지 않는 쿼리 파라미터는 start-index와 max-results 입니다.
따라서 피드를 통해서 페이지 처리를 할 수 있는 것이죠.
저희가 제공하는 클라이언트 라이브러리를 사용하고 계시다면
YouTube의 검색 쿼리를 만드는 데 도움이 되는 오브젝트와 메소드가 있습니다.
자세한 내용은 클라이언트 라이브러리용 문서를 확인하세요.
이 동영상에서 다룬 모든 정보는 code.google.com에 있는 문서에서 확인하실 수 있습니다.
감사합니다.