Search: list

Trả về một tập hợp kết quả tìm kiếm khớp với tham số truy vấn được chỉ định trong yêu cầu API. Theo mặc định, một nhóm kết quả tìm kiếm sẽ xác định các tài nguyên video, channelplaylist trùng khớp. Tuy nhiên, bạn cũng có thể định cấu hình các truy vấn để chỉ truy xuất một loại tài nguyên cụ thể.

Tác động đến hạn mức: Lệnh gọi đến phương thức này có chi phí hạn mức là 100 đơn vị.

Các trường hợp sử dụng phổ biến

Yêu cầu

Yêu cầu HTTP

GET https://www.googleapis.com/youtube/v3/search

Tham số

Bảng sau đây liệt kê các tham số mà truy vấn này hỗ trợ. Tất cả tham số được liệt kê đều là tham số truy vấn.

Tham số
Tham số bắt buộc
part string
Tham số part chỉ định một danh sách được phân tách bằng dấu phẩy gồm một hoặc nhiều thuộc tính tài nguyên search mà phản hồi API sẽ bao gồm. Đặt giá trị tham số thành snippet.
Bộ lọc (chỉ định 0 hoặc 1 trong các tham số sau)
forContentOwner boolean
Bạn chỉ có thể dùng thông số này trong yêu cầu được cho phép phù hợp và chỉ dành cho đối tác nội dung của YouTube.

Thông số forContentOwner giới hạn phạm vi tìm kiếm để chỉ truy xuất những video do chủ sở hữu nội dung xác định bằng thông số onBehalfOfContentOwner. Nếu bạn đặt forContentOwner thành true, yêu cầu cũng phải đáp ứng các yêu cầu sau:
  • Tham số onBehalfOfContentOwner là bắt buộc.
  • Người dùng uỷ quyền yêu cầu phải đang sử dụng một tài khoản liên kết với chủ sở hữu nội dung đã chỉ định.
  • Giá trị thông số type phải được đặt thành video.
  • Không thể đặt tham số nào khác sau đây: videoDefinition, videoDimension, videoDuration, videoEmbeddable, videoLicense, videoPaidProductPlacement, videoSyndicated, videoType.
forDeveloper boolean
Bạn chỉ có thể dùng thông số này trong một yêu cầu được uỷ quyền đúng cách. Tham số forDeveloper giới hạn phạm vi tìm kiếm để chỉ truy xuất những video đã tải lên qua ứng dụng hoặc trang web của nhà phát triển. Máy chủ API sử dụng thông tin uỷ quyền của yêu cầu để xác định nhà phát triển. Bạn có thể sử dụng tham số forDeveloper cùng với các tham số tìm kiếm không bắt buộc như tham số q.

Đối với tính năng này, mỗi video đã tải lên sẽ được tự động gắn thẻ với số dự án liên kết với ứng dụng của nhà phát triển trong Google Developers Console.

Khi một yêu cầu tìm kiếm sau đó đặt tham số forDeveloper thành true, máy chủ API sẽ sử dụng thông tin uỷ quyền của yêu cầu đó để xác định nhà phát triển. Do đó, nhà phát triển có thể giới hạn kết quả để chỉ những video được tải lên qua ứng dụng hoặc trang web của chính nhà phát triển chứ không phải những video được tải lên qua ứng dụng hoặc trang web khác.
forMine boolean
Bạn chỉ có thể dùng thông số này trong một yêu cầu được uỷ quyền đúng cách. Tham số forMine sẽ giới hạn phạm vi tìm kiếm để chỉ truy xuất những video do người dùng đã xác thực sở hữu. Nếu thiết lập tham số này thành true, thì bạn cũng phải đặt giá trị của tham số type thành video. Ngoài ra, bạn không thể đặt tham số nào khác sau đây trong cùng một yêu cầu: videoDefinition, videoDimension, videoDuration, videoEmbeddable, videoLicense, videoPaidProductPlacement, videoSyndicated, videoType.
Thông số không bắt buộc
channelId string
Tham số channelId cho biết rằng phản hồi API chỉ được chứa các tài nguyên do kênh tạo.

Lưu ý: Kết quả tìm kiếm sẽ bị giới hạn ở tối đa 500 video nếu yêu cầu của bạn chỉ định một giá trị cho tham số channelId và đặt giá trị tham số type thành video, nhưng yêu cầu cũng không đặt một trong các bộ lọc forContentOwner, forDeveloper hoặc forMine.
channelType string
Tham số channelType giúp bạn giới hạn nội dung tìm kiếm trong một loại kênh cụ thể.

Các giá trị được chấp nhận là:
  • any – Trả lại tất cả các kênh.
  • show – Chỉ truy xuất các chương trình.
eventType string
Thông số eventType giới hạn phạm vi tìm kiếm trong các sự kiện truyền phát. Nếu chỉ định một giá trị cho tham số này, bạn cũng phải đặt giá trị của tham số type thành video.

Các giá trị được chấp nhận là:
  • completed – Chỉ bao gồm các tin truyền đã hoàn tất.
  • live – Chỉ bao gồm các tin nhắn đang truyền phát.
  • upcoming – Chỉ bao gồm các chương trình phát sóng sắp tới.
location string
Tham số location, cùng với tham số locationRadius, xác định một khu vực địa lý hình tròn và cũng giới hạn khả năng tìm kiếm trong những video nêu rõ vị trí địa lý thuộc khu vực đó trong siêu dữ liệu. Giá trị thông số là một chuỗi chỉ định vĩ độ/kinh độ, ví dụ: (37.42307,-122.08427).

  • Giá trị tham số location xác định điểm ở tâm của vùng.
  • Tham số locationRadius chỉ định khoảng cách tối đa mà vị trí được liên kết với một video có thể tính từ điểm đó đến khi video vẫn được đưa vào kết quả tìm kiếm.
API sẽ trả về lỗi nếu yêu cầu của bạn chỉ định giá trị cho tham số location nhưng không chỉ định giá trị cho tham số locationRadius.

Lưu ý: Nếu chỉ định giá trị cho tham số này thì bạn cũng phải đặt giá trị của tham số type thành video.
locationRadius string
Tham số locationRadius, cùng với tham số location, xác định một khu vực địa lý hình tròn.

Giá trị tham số phải là một số có dấu phẩy động, theo sau là một đơn vị đo lường. Các đơn vị đo lường hợp lệ là m, km, ftmi. Ví dụ: các giá trị tham số hợp lệ bao gồm 1500m, 5km, 10000ft0.75mi. API không hỗ trợ các giá trị tham số locationRadius lớn hơn 1000 km.

Lưu ý: Hãy xem định nghĩa của tham số location để biết thêm thông tin.
maxResults unsigned integer
Tham số maxResults chỉ định số lượng mục tối đa cần được trả về trong tập hợp kết quả. Các giá trị được chấp nhận là từ 0 đến 50 (bao gồm cả hai giá trị này). Giá trị mặc định là 5.
onBehalfOfContentOwner string
Bạn chỉ có thể dùng thông số này trong một yêu cầu được uỷ quyền đúng cách. Lưu ý: Thông số này chỉ dành cho các đối tác nội dung của YouTube.

Thông số onBehalfOfContentOwner cho biết thông tin uỷ quyền của yêu cầu giúp xác định một người dùng YouTube CMS đang hành động thay mặt cho chủ sở hữu nội dung được chỉ định trong giá trị thông số. Thông số này dành cho những đối tác nội dung trên YouTube sở hữu và quản lý nhiều kênh YouTube khác nhau. Tính năng này cho phép chủ sở hữu nội dung xác thực một lần và có quyền truy cập vào tất cả dữ liệu kênh cũng như video của mình mà không cần phải cung cấp thông tin xác thực cho từng kênh. Tài khoản CMS mà người dùng xác thực phải được liên kết với chủ sở hữu nội dung đã chỉ định trên YouTube.
order string
Tham số order chỉ định phương thức sẽ được dùng để sắp xếp các tài nguyên trong phản hồi API. Giá trị mặc định là relevance.

Các giá trị được chấp nhận là:
  • date – Các tài nguyên được sắp xếp theo thứ tự thời gian đảo ngược dựa trên ngày tạo.
  • rating – Các tài nguyên được sắp xếp theo điểm xếp hạng từ cao nhất đến thấp nhất.
  • relevance – Tài nguyên được sắp xếp dựa trên mức độ liên quan đến cụm từ tìm kiếm. Đây là giá trị mặc định cho tham số này.
  • title – Các tài nguyên được sắp xếp theo thứ tự bảng chữ cái.
  • videoCount – Các kênh được sắp xếp theo số lượng video đã tải lên giảm dần.
  • viewCount – Các tài nguyên được sắp xếp theo thứ tự có số lượt xem từ cao nhất đến thấp nhất. Đối với chương trình phát sóng trực tiếp, video được sắp xếp theo số người xem đồng thời trong khi chương trình phát sóng đang diễn ra.
pageToken string
Tham số pageToken xác định một trang cụ thể trong nhóm kết quả sẽ được trả về. Trong một phản hồi API, thuộc tính nextPageTokenprevPageToken xác định những trang khác có thể truy xuất.
publishedAfter datetime
Tham số publishedAfter cho biết phản hồi của API chỉ nên chứa các tài nguyên được tạo vào thời điểm hoặc sau thời điểm cụ thể. Giá trị là giá trị ngày giờ được định dạng RFC 3339 (1970-01-01T00:00:00Z).
publishedBefore datetime
Tham số publishedBefore cho biết rằng phản hồi của API chỉ nên chứa các tài nguyên được tạo trước hoặc tại một thời điểm cụ thể. Giá trị là giá trị ngày giờ được định dạng RFC 3339 (1970-01-01T00:00:00Z).
q string
Tham số q chỉ định cụm từ truy vấn cần tìm kiếm.

Yêu cầu của bạn cũng có thể sử dụng toán tử Boolean NOT (-) và OR (|) để loại trừ video hoặc để tìm video có liên kết với một trong nhiều cụm từ tìm kiếm. Ví dụ: để tìm video khớp với từ khoá "lồng thuyền" hoặc "lướt buồm", hãy đặt giá trị tham số q thành boating|sailing. Tương tự, để tìm những video khớp với "tàu thuyền" hoặc "đi thuyền" nhưng không khớp với "câu cá", hãy đặt giá trị tham số q thành boating|sailing -fishing. Lưu ý rằng ký tự gạch đứng phải là ký tự thoát URL khi được gửi trong yêu cầu API của bạn. Giá trị thoát trong URL cho ký tự gạch đứng là %7C.
regionCode string
Tham số regionCode hướng dẫn API trả về kết quả tìm kiếm cho các video có thể xem được ở quốc gia cụ thể. Giá trị thông số là mã quốc gia theo tiêu chuẩn ISO 3166-1 alpha-2.
relevanceLanguage string
Tham số relevanceLanguage hướng dẫn API trả về kết quả tìm kiếm phù hợp nhất với ngôn ngữ được chỉ định. Giá trị tham số thường là mã ngôn ngữ gồm hai chữ cái theo ISO 639-1. Tuy nhiên, bạn nên sử dụng các giá trị zh-Hans cho tiếng Trung giản thể và zh-Hant cho tiếng Trung phồn thể. Xin lưu ý rằng kết quả bằng những ngôn ngữ khác vẫn sẽ được trả về nếu những kết quả đó thật sự có liên quan đến cụm từ tìm kiếm.
safeSearch string
Tham số safeSearch cho biết kết quả tìm kiếm có bao gồm cả nội dung bị hạn chế và nội dung chuẩn hay không.

Các giá trị được chấp nhận là:
  • moderate – YouTube sẽ lọc một số nội dung khỏi kết quả tìm kiếm và ít nhất cũng sẽ lọc nội dung bị hạn chế ở ngôn ngữ của bạn. Dựa trên nội dung của trang web, kết quả tìm kiếm có thể bị xoá khỏi kết quả tìm kiếm hoặc bị giảm hạng trong kết quả tìm kiếm. Đây là giá trị thông số mặc định.
  • none – YouTube sẽ không lọc tập hợp kết quả tìm kiếm.
  • strict – YouTube sẽ cố gắng loại bỏ tất cả nội dung bị hạn chế khỏi tập hợp kết quả tìm kiếm. Dựa trên nội dung của trang web, kết quả tìm kiếm có thể bị xoá khỏi kết quả tìm kiếm hoặc bị giảm hạng trong kết quả tìm kiếm.
topicId string
Tham số topicId cho biết phản hồi của API chỉ nên chứa các tài nguyên liên kết với chủ đề đã chỉ định. Giá trị này xác định mã chủ đề Freebase.

Lưu ý quan trọng: Do Freebase và API Freebase không còn dùng nữa, nên tham số topicId đã bắt đầu hoạt động theo cách khác kể từ ngày 27 tháng 2 năm 2017. Tại thời điểm đó, YouTube bắt đầu hỗ trợ một nhóm nhỏ các mã chủ đề được tuyển chọn và bạn chỉ có thể sử dụng tập hợp mã nhận dạng nhỏ hơn đó làm giá trị cho thông số này.

type string
Tham số type giới hạn cụm từ tìm kiếm để chỉ truy xuất một loại tài nguyên cụ thể. Giá trị này là danh sách các loại tài nguyên được phân tách bằng dấu phẩy. Giá trị mặc định là video,channel,playlist.

Các giá trị được chấp nhận là:
  • channel
  • playlist
  • video
videoCaption string
Tham số videoCaption cho biết liệu API có nên lọc kết quả tìm kiếm video dựa trên việc các video đó có phụ đề hay không. Nếu chỉ định một giá trị cho tham số này, bạn cũng phải đặt giá trị của tham số type thành video.

Các giá trị được chấp nhận là:
  • any – Không lọc kết quả dựa trên khả năng sử dụng phụ đề.
  • closedCaption – Chỉ bao gồm những video có phụ đề.
  • none – Chỉ bao gồm những video không có phụ đề.
videoCategoryId string
Tham số videoCategoryId lọc kết quả tìm kiếm video dựa trên danh mục. Nếu chỉ định giá trị cho tham số này thì bạn cũng phải đặt giá trị của tham số type thành video.
videoDefinition string
Tham số videoDefinition cho phép bạn giới hạn một lượt tìm kiếm để chỉ bao gồm video có độ phân giải cao (HD) hoặc video có độ phân giải chuẩn (SD). Video HD có thể phát ở độ phân giải tối thiểu là 720p, mặc dù video có độ phân giải cao hơn như 1080p cũng có thể được cung cấp. Nếu chỉ định một giá trị cho tham số này, bạn cũng phải đặt giá trị của tham số type thành video.

Các giá trị được chấp nhận là:
  • any – Trả lại tất cả video, bất kể độ phân giải của video.
  • high – Chỉ truy xuất video HD.
  • standard – Chỉ truy xuất video có độ phân giải chuẩn.
videoDimension string
Tham số videoDimension cho phép bạn giới hạn phạm vi tìm kiếm để chỉ truy xuất video 2D hoặc 3D. Nếu chỉ định một giá trị cho tham số này, bạn cũng phải đặt giá trị của tham số type thành video.

Các giá trị được chấp nhận là:
  • 2d – Hạn chế kết quả tìm kiếm để loại trừ video 3D.
  • 3d – Giới hạn kết quả tìm kiếm để chỉ bao gồm video 3D.
  • any – Đưa cả video 3D và không phải 3D vào kết quả được trả về. Đây là giá trị mặc định.
videoDuration string
Tham số videoDuration lọc kết quả tìm kiếm video dựa trên thời lượng. Nếu chỉ định một giá trị cho tham số này, bạn cũng phải đặt giá trị của tham số type thành video.

Các giá trị được chấp nhận là:
  • any – Không lọc kết quả tìm kiếm video theo thời lượng. Đây là giá trị mặc định.
  • long – Chỉ thêm những video dài hơn 20 phút.
  • medium – Chỉ bao gồm những video dài từ 4 đến 20 phút (bao gồm cả những video này).
  • short – Chỉ thêm những video có thời lượng dưới 4 phút.
videoEmbeddable string
Tham số videoEmbeddable cho phép bạn giới hạn phạm vi tìm kiếm chỉ ở những video có thể nhúng trên trang web. Nếu chỉ định một giá trị cho tham số này, bạn cũng phải đặt giá trị của tham số type thành video.

Các giá trị được chấp nhận là:
  • any – Trả lại tất cả video, có thể nhúng hoặc không.
  • true – Chỉ truy xuất các video có thể nhúng.
videoLicense string
Tham số videoLicense lọc kết quả tìm kiếm để chỉ bao gồm các video có một giấy phép cụ thể. YouTube cho phép những người tải video lên chọn đính kèm giấy phép Creative Commons hoặc giấy phép chuẩn của YouTube vào mỗi video của họ. Nếu chỉ định một giá trị cho tham số này, bạn cũng phải đặt giá trị của tham số type thành video.

Các giá trị được chấp nhận là:
  • any – Trả về tất cả video, bất kể video đó có giấy phép nào phù hợp với tham số truy vấn.
  • creativeCommon – Chỉ trả về các video có giấy phép Creative Commons. Người dùng có thể sử dụng lại video có giấy phép này trong các video khác mà họ tạo. Tìm hiểu thêm.
  • youtube – Chỉ trả về những video có giấy phép tiêu chuẩn của YouTube.
videoPaidProductPlacement string
Tham số videoPaidProductPlacement lọc kết quả tìm kiếm để chỉ bao gồm những video mà nhà sáng tạo đã biểu thị là có nội dung được trả tiền để quảng cáo. Nếu chỉ định một giá trị cho tham số này, bạn cũng phải đặt giá trị của tham số type thành video.

Các giá trị được chấp nhận là:
  • any – Trả lại tất cả video, bất kể video đó có chứa nội dung được trả tiền để quảng cáo hay không.
  • true – Chỉ truy xuất những video có nội dung được trả tiền để quảng cáo.
videoSyndicated string
Tham số videoSyndicated giúp bạn chỉ tìm kiếm được những video có thể phát bên ngoài youtube.com. Nếu chỉ định giá trị cho tham số này, bạn cũng phải đặt giá trị của tham số type thành video.

Các giá trị được chấp nhận là:
  • any – Trả lại tất cả video, có phân phối hay không.
  • true – Chỉ truy xuất các video được phân phối.
videoType string
Tham số videoType cho phép bạn giới hạn phạm vi tìm kiếm trong một loại video cụ thể. Nếu chỉ định một giá trị cho tham số này, bạn cũng phải đặt giá trị của tham số type thành video.

Các giá trị được chấp nhận là:
  • any – Trả lại tất cả video.
  • episode – Chỉ truy xuất các tập của chương trình.
  • movie – Chỉ truy xuất phim.

Nội dung yêu cầu

Đừng cung cấp nội dung yêu cầu khi gọi phương thức này.

Phản hồi

Nếu thành công, phương thức này sẽ trả về nội dung phản hồi có cấu trúc như sau:

{
  "kind": "youtube#searchListResponse",
  "etag": etag,
  "nextPageToken": string,
  "prevPageToken": string,
  "regionCode": string,
  "pageInfo": {
    "totalResults": integer,
    "resultsPerPage": integer
  },
  "items": [
    search Resource
  ]
}

Thuộc tính

Bảng sau đây xác định các thuộc tính xuất hiện trong kết quả tìm kiếm:

Thuộc tính
kind string
Xác định loại tài nguyên API. Giá trị sẽ là youtube#searchListResponse.
etag etag
Thẻ Etag của tài nguyên này.
nextPageToken string
Mã thông báo có thể được dùng làm giá trị của tham số pageToken để truy xuất trang tiếp theo trong tập hợp kết quả.
prevPageToken string
Mã thông báo có thể được dùng làm giá trị của tham số pageToken để truy xuất trang trước đó trong tập hợp kết quả.
regionCode string
Mã vùng được dùng cho cụm từ tìm kiếm. Giá trị thuộc tính là mã quốc gia gồm hai chữ cái theo tiêu chuẩn ISO xác định khu vực. Phương thức i18nRegions.list trả về danh sách các khu vực được hỗ trợ. Giá trị mặc định là US. Nếu bạn chỉ định một khu vực không được hỗ trợ, YouTube có thể vẫn chọn một khu vực khác thay vì chọn giá trị mặc định để xử lý truy vấn.
pageInfo object
Đối tượng pageInfo đóng gói thông tin phân trang cho tập hợp kết quả.
pageInfo.totalResults integer
Tổng số kết quả trong nhóm kết quả.Xin lưu ý rằng giá trị này là giá trị gần đúng và có thể không thể hiện một giá trị chính xác. Ngoài ra, giá trị tối đa là 1.000.000.

Bạn không nên dùng giá trị này để tạo đường liên kết phân trang. Thay vào đó, hãy sử dụng các giá trị thuộc tính nextPageTokenprevPageToken để xác định xem có hiển thị các đường liên kết phân trang hay không.
pageInfo.resultsPerPage integer
Số lượng kết quả có trong phản hồi của API.
items[] list
Danh sách kết quả khớp với tiêu chí tìm kiếm.

Ví dụ

Lưu ý: Các mã mẫu sau đây có thể không đại diện cho tất cả ngôn ngữ lập trình được hỗ trợ. Xem tài liệu về thư viện ứng dụng để biết danh sách các ngôn ngữ được hỗ trợ.

Apps Script

Hàm này tìm kiếm các video có liên quan đến từ khoá 'chó'. Mã video và tiêu đề của kết quả tìm kiếm được ghi vào nhật ký của Apps Script.

Xin lưu ý rằng mẫu này giới hạn tối đa 25 kết quả. Để trả về nhiều kết quả hơn, hãy chuyển các thông số bổ sung như hướng dẫn tại đây: https://developers.google.com/youtube/v3/docs/search/list
function searchByKeyword() {
  var results = YouTube.Search.list('id,snippet', {q: 'dogs', maxResults: 25});

  for(var i in results.items) {
    var item = results.items[i];
    Logger.log('[%s] Title: %s', item.id.videoId, item.snippet.title);
  }
}

Go

Mã mẫu này gọi phương thức search.list của API để truy xuất kết quả tìm kiếm liên kết với một từ khoá cụ thể.

Ví dụ này sử dụng thư viện ứng dụng Go.

package main

import (
	"flag"
	"fmt"
	"log"
	"net/http"

	"google.golang.org/api/googleapi/transport"
	"google.golang.org/api/youtube/v3"
)

var (
	query      = flag.String("query", "Google", "Search term")
	maxResults = flag.Int64("max-results", 25, "Max YouTube results")
)

const developerKey = "YOUR DEVELOPER KEY"

func main() {
	flag.Parse()

	client := &http.Client{
		Transport: &transport.APIKey{Key: developerKey},
	}

	service, err := youtube.New(client)
	if err != nil {
		log.Fatalf("Error creating new YouTube client: %v", err)
	}

	// Make the API call to YouTube.
	call := service.Search.List("id,snippet").
		Q(*query).
		MaxResults(*maxResults)
	response, err := call.Do()
	handleError(err, "")

	// Group video, channel, and playlist results in separate lists.
	videos := make(map[string]string)
	channels := make(map[string]string)
	playlists := make(map[string]string)

	// Iterate through each item and add it to the correct list.
	for _, item := range response.Items {
		switch item.Id.Kind {
		case "youtube#video":
			videos[item.Id.VideoId] = item.Snippet.Title
		case "youtube#channel":
			channels[item.Id.ChannelId] = item.Snippet.Title
		case "youtube#playlist":
			playlists[item.Id.PlaylistId] = item.Snippet.Title
		}
	}

	printIDs("Videos", videos)
	printIDs("Channels", channels)
	printIDs("Playlists", playlists)
}

// Print the ID and title of each result in a list as well as a name that
// identifies the list. For example, print the word section name "Videos"
// above a list of video search results, followed by the video ID and title
// of each matching video.
func printIDs(sectionName string, matches map[string]string) {
	fmt.Printf("%v:\n", sectionName)
	for id, title := range matches {
		fmt.Printf("[%v] %v\n", id, title)
	}
	fmt.Printf("\n\n")
}

.NET

Mã mẫu sau đây gọi phương thức search.list của API để truy xuất kết quả tìm kiếm liên kết với một từ khoá cụ thể.

Ví dụ này sử dụng thư viện ứng dụng.NET.

using System;
using System.Collections.Generic;
using System.IO;
using System.Reflection;
using System.Threading;
using System.Threading.Tasks;

using Google.Apis.Auth.OAuth2;
using Google.Apis.Services;
using Google.Apis.Upload;
using Google.Apis.Util.Store;
using Google.Apis.YouTube.v3;
using Google.Apis.YouTube.v3.Data;

namespace Google.Apis.YouTube.Samples
{
  /// <summary>
  /// YouTube Data API v3 sample: search by keyword.
  /// Relies on the Google APIs Client Library for .NET, v1.7.0 or higher.
  /// See https://developers.google.com/api-client-library/dotnet/get_started
  ///
  /// Set ApiKey to the API key value from the APIs & auth > Registered apps tab of
  ///   https://cloud.google.com/console
  /// Please ensure that you have enabled the YouTube Data API for your project.
  /// </summary>
  internal class Search
  {
    [STAThread]
    static void Main(string[] args)
    {
      Console.WriteLine("YouTube Data API: Search");
      Console.WriteLine("========================");

      try
      {
        new Search().Run().Wait();
      }
      catch (AggregateException ex)
      {
        foreach (var e in ex.InnerExceptions)
        {
          Console.WriteLine("Error: " + e.Message);
        }
      }

      Console.WriteLine("Press any key to continue...");
      Console.ReadKey();
    }

    private async Task Run()
    {
      var youtubeService = new YouTubeService(new BaseClientService.Initializer()
      {
        ApiKey = "REPLACE_ME",
        ApplicationName = this.GetType().ToString()
      });

      var searchListRequest = youtubeService.Search.List("snippet");
      searchListRequest.Q = "Google"; // Replace with your search term.
      searchListRequest.MaxResults = 50;

      // Call the search.list method to retrieve results matching the specified query term.
      var searchListResponse = await searchListRequest.ExecuteAsync();

      List<string> videos = new List<string>();
      List<string> channels = new List<string>();
      List<string> playlists = new List<string>();

      // Add each result to the appropriate list, and then display the lists of
      // matching videos, channels, and playlists.
      foreach (var searchResult in searchListResponse.Items)
      {
        switch (searchResult.Id.Kind)
        {
          case "youtube#video":
            videos.Add(String.Format("{0} ({1})", searchResult.Snippet.Title, searchResult.Id.VideoId));
            break;

          case "youtube#channel":
            channels.Add(String.Format("{0} ({1})", searchResult.Snippet.Title, searchResult.Id.ChannelId));
            break;

          case "youtube#playlist":
            playlists.Add(String.Format("{0} ({1})", searchResult.Snippet.Title, searchResult.Id.PlaylistId));
            break;
        }
      }

      Console.WriteLine(String.Format("Videos:\n{0}\n", string.Join("\n", videos)));
      Console.WriteLine(String.Format("Channels:\n{0}\n", string.Join("\n", channels)));
      Console.WriteLine(String.Format("Playlists:\n{0}\n", string.Join("\n", playlists)));
    }
  }
}

Ruby

Mẫu này gọi phương thức search.list của API để truy xuất kết quả tìm kiếm liên kết với một từ khoá cụ thể.

Ví dụ này sử dụng thư viện ứng dụng Ruby.

#!/usr/bin/ruby

require 'rubygems'
gem 'google-api-client', '>0.7'
require 'google/api_client'
require 'trollop'

# Set DEVELOPER_KEY to the API key value from the APIs & auth > Credentials
# tab of
# {{ Google Cloud Console }} <{{ https://cloud.google.com/console }}>
# Please ensure that you have enabled the YouTube Data API for your project.
DEVELOPER_KEY = 'REPLACE_ME'
YOUTUBE_API_SERVICE_NAME = 'youtube'
YOUTUBE_API_VERSION = 'v3'

def get_service
  client = Google::APIClient.new(
    :key => DEVELOPER_KEY,
    :authorization => nil,
    :application_name => $PROGRAM_NAME,
    :application_version => '1.0.0'
  )
  youtube = client.discovered_api(YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION)

  return client, youtube
end

def main
  opts = Trollop::options do
    opt :q, 'Search term', :type => String, :default => 'Google'
    opt :max_results, 'Max results', :type => :int, :default => 25
  end

  client, youtube = get_service

  begin
    # Call the search.list method to retrieve results matching the specified
    # query term.
    search_response = client.execute!(
      :api_method => youtube.search.list,
      :parameters => {
        :part => 'snippet',
        :q => opts[:q],
        :maxResults => opts[:max_results]
      }
    )

    videos = []
    channels = []
    playlists = []

    # Add each result to the appropriate list, and then display the lists of
    # matching videos, channels, and playlists.
    search_response.data.items.each do |search_result|
      case search_result.id.kind
        when 'youtube#video'
          videos << "#{search_result.snippet.title} (#{search_result.id.videoId})"
        when 'youtube#channel'
          channels << "#{search_result.snippet.title} (#{search_result.id.channelId})"
        when 'youtube#playlist'
          playlists << "#{search_result.snippet.title} (#{search_result.id.playlistId})"
      end
    end

    puts "Videos:\n", videos, "\n"
    puts "Channels:\n", channels, "\n"
    puts "Playlists:\n", playlists, "\n"
  rescue Google::APIClient::TransmissionError => e
    puts e.result.body
  end
end

main

Lỗi

Bảng sau đây xác định các thông báo lỗi mà API có thể trả về để phản hồi lệnh gọi đến phương thức này. Vui lòng xem tài liệu về thông báo lỗi để biết thêm chi tiết.

Loại lỗi Chi tiết lỗi Nội dung mô tả
badRequest (400) invalidChannelId Tham số channelId đã chỉ định một mã nhận dạng kênh không hợp lệ.
badRequest (400) invalidLocation Giá trị tham số location và/hoặc locationRadius được định dạng không chính xác.
badRequest (400) invalidRelevanceLanguage Giá trị tham số relevanceLanguage được định dạng không chính xác.
badRequest (400) invalidSearchFilter Yêu cầu chứa một tổ hợp bộ lọc và/hoặc hạn chế không hợp lệ. Lưu ý rằng bạn phải thiết lập tham số type thành video nếu bạn đặt tham số forContentOwner hoặc forMine thành true. Bạn cũng phải đặt tham số type thành video nếu đặt giá trị cho các tham số eventType, videoCaption, videoCategoryId, videoDefinition, videoDimension, videoDuration, videoEmbeddable, videoLicense, videoSyndicated hoặc videoType.

Hãy dùng thử!

Dùng APIs Explorer để gọi API này cũng như xem yêu cầu và phản hồi của API.