Search: list

Trả về tập hợp kết quả tìm kiếm phù hợp với tham số truy vấn được chỉ định trong yêu cầu API. Theo mặc định, nhóm kết quả tìm kiếm xác định các tài nguyên video, channelplaylist phù hợp, nhưng 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 định mức: Lệnh gọi phương thức này có 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

Các tham số

Bảng sau 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.

Các tham số
Tham số bắt buộc
part string
Tham số part chỉ định danh sách được phân tách bằng dấu phẩy của một hoặc nhiều thuộc tính tài nguyên search mà phản hồi API sẽ đưa vào. Đặ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ể sử dụng thông số này trong yêu cầu được uỷ quyền chính xác và thông số này chỉ dành cho các đối tác nội dung trên YouTube.

Thông số forContentOwner hạn chế khả năng tìm kiếm để chỉ truy xuất video do chủ sở hữu nội dung đã xác định.onBehalfOfContentOwner Nếu bạn đặt forContentOwner thành true, thì yêu cầu cũng phải đáp ứng các yêu cầu sau:
  • Thông số onBehalfOfContentOwner là bắt buộc.
  • Người dùng ủy quyền yêu cầu phải đang sử dụng tài khoản được liên kết với chủ sở hữu nội dung đã chỉ định.
  • Giá trị tham số type phải được đặt thành video.
  • Bạn không thể đặt bất kỳ thông số nào sau đây: videoDefinition, videoDimension, videoDuration, videoEmbeddable, videoLicense, videoPaidProductPlacement, videoSyndicated, videoType.
forDeveloper boolean
Thông số này chỉ được dùng trong một yêu cầu được uỷ quyền chính xác. Tham số forDeveloper giới hạn tìm kiếm để chỉ truy xuất các video được 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 xác thực ủy quyền của yêu cầu để xác định nhà phát triển. Bạn có thể 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ẽ tự động được gắn thẻ bằng số dự án liên kết với ứng dụng của nhà phát triển trong Bảng điều khiển dành cho nhà phát triển của Google.

Khi có 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 đăng nhập ủy quyền của yêu cầu để xác định nhà phát triển. Do đó, nhà phát triển chỉ có thể giới hạn kết quả trong các video được tải lên thông qua ứng dụng hoặc trang web của nhà phát triển đó.
forMine boolean
Thông số này chỉ được dùng trong một yêu cầu được uỷ quyền chính xác. Tham số forMine giới hạn tìm kiếm để chỉ truy xuất các video do người dùng đã xác thực sở hữu. Nếu đặt 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 bất kỳ thông số nào khác trong cùng một yêu cầu: videoDefinition, videoDimension, videoDuration, videoEmbeddable, videoLicense, videoPaidProductPlacement, videoSyndicated, videoType.
Tham số không bắt buộc
channelId string
Tham số channelId cho biết rằng phản hồi API chỉ nên chứa các tài nguyên do kênh tạo.

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

Bạn có thể sử dụng các giá trị sau:
  • any – Trả về tất cả các kênh.
  • show – Chỉ truy xuất chương trình.
eventType string
Thông số eventType hạn chế tìm kiếm đối với các sự kiện phát sóng. Nếu chỉ định giá trị cho thông số này, thì bạn cũng phải đặt giá trị của thông số type thành video.

Giá trị được chấp nhận là:
  • completed – Chỉ bao gồm các thông báo truyền phát đã hoàn tất.
  • live – Chỉ bao gồm các thông báo đang hoạt động.
  • upcoming – Chỉ bao gồm các thông báo sắp tới.
location string
Thông số location cùng với thông số locationRadius xác định một khu vực địa lý hình tròn, đồng thời chỉ cho phép tìm kiếm trong những video chỉ định vị trí địa lý thuộc siêu dữ liệu trong siêu dữ liệu. Giá trị tham 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 ở trung tâm của khu vực.
  • Tham số locationRadius chỉ định khoảng cách tối đa có thể áp dụng để video có thể xuất hiện trong kết quả tìm kiếm kể từ vị trí liên kết với video đó.
API trả lại lỗi nếu yêu cầu của bạn chỉ định giá trị cho tham số location nhưng cũ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
Thông số locationRadius, cùng với thông số location, xác định một khu vực địa lý hình tròn.

Giá trị thông số phải là một số thực, theo sau là đơ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ị thông số hợp lệ bao gồm 1500m, 5km, 10000ft0.75mi. API này 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 trả về trong nhóm kết quả. Giá trị có thể chấp nhận là từ 0 đến 50. Giá trị mặc định là 5.
onBehalfOfContentOwner string
Thông số này chỉ được dùng trong một yêu cầu được uỷ quyền chính xác. Lưu ý: Tham số này chỉ dành riêng cho các đối tác nội dung của YouTube.

Tham số onBehalfOfContentOwner cho biết rằng thông tin xác thực ủy quyền của yêu cầu giúp xác định một người dùng YouTube CMS đang thay mặt chủ sở hữu nội dung được chỉ định trong giá trị thông số. Thông số này dành cho các đối tác nội dung của 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 video và kênh của họ mà không 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 YouTube đã chỉ định.
order string
Tham số order chỉ định phương thức sẽ 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.

Giá trị được chấp nhận là:
  • date – Tài nguyên được sắp xếp theo trình tự thời gian ngược dựa trên ngày tạo.
  • rating – Tài nguyên được sắp xếp theo thứ tự từ cao đến thấp.
  • relevance – Tài nguyên được sắp xếp dựa trên mức độ phù hợp với truy vấn tìm kiếm. Đây là giá trị mặc định cho thông số này.
  • title – Tài nguyên được sắp xếp theo thứ tự bảng chữ cái.
  • videoCount – Kênh được sắp xếp theo thứ tự giảm dần về số lượng video đã tải lên.
  • viewCount – Tài nguyên được sắp xếp theo 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 tập hợp kết quả cần được trả về. Trong phản hồi API, thuộc tính nextPageTokenprevPageToken xác định những trang khác có thể truy xuất được.
publishedAfter datetime
Tham số publishedAfter cho biết rằng phản hồi API chỉ nên chứa các tài nguyên được tạo vào hoặc sau thời gian đã chỉ định. 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 API chỉ nên chứa các tài nguyên được tạo trước hoặc tại thời điểm chỉ định. 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ừ tìm kiếm để 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 các cụm từ tìm kiếm. Ví dụ: để tìm kiếm các video trùng khớp với phương tiện "thuyền" hoặc "du thuyền", hãy đặt giá trị thông số q thành boating|sailing. Tương tự, để tìm kiếm video khớp với phương tiện "chèo thuyền" hoặc "chèo thuyền" chứ không phải " câu cá", hãy đặt giá trị thông số q thành boating|sailing -fishing. Xin lưu ý rằng ký tự sổ sách phải là ký tự thoát URL khi được gửi trong yêu cầu API. Giá trị thoát URL của ký tự sổ thẳng là %7C.
regionCode string
Tham số regionCode hướng dẫn API trả về kết quả tìm kiếm cho video có thể xem được ở quốc gia xác định. Giá trị thông số là mã quốc gia 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ữ ISO 639-1 hai chữ cái. 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 các ngôn ngữ khác sẽ vẫn được trả về nếu chúng có liên quan cao đến cụm từ truy vấn tìm kiếm.
safeSearch string
Tham số safeSearch cho biết liệu kết quả tìm kiếm có bao gồm nội dung bị hạn chế hay nội dung chuẩn hay không.

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 sẽ lọc nội dung bị hạn chế trong ngôn ngữ của bạn. Dựa trên nội dung của họ, kết quả tìm kiếm có thể bị xóa 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 nhóm kết quả tìm kiếm.
  • strict – YouTube sẽ cố gắng loại trừ tất cả nội dung bị hạn chế khỏi nhóm kết quả tìm kiếm. Dựa trên nội dung của họ, kết quả tìm kiếm có thể bị xóa 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 rằng phản hồi API chỉ nên chứa các tài nguyên liên kết với chủ đề đã chỉ định. Giá trị xác định mã chủ đề Freebase.

Quan trọng: Do Freebase và API Freebase không được sử dụng nữa, tham số topicId bắt đầu hoạt động khác nhau 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 tập hợp nhỏ ID chủ đề được sắp xếp và bạn chỉ có thể sử dụng tập hợp ID nhỏ hơn đó làm giá trị cho thông số này.

type string
Tham số type hạn chế một cụm từ tìm kiếm để chỉ truy xuất một loại tài nguyên cụ thể. Giá trị 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.

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 hay không dựa trên việc video đó có phụ đề hay không. Nếu chỉ định giá trị cho thông số này, thì bạn cũng phải đặt giá trị của thông số type thành video.

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

Giá trị được chấp nhận là:
  • any – Trả lại tất cả video, bất kể độ phân giải.
  • high – Chỉ truy xuất video HD.
  • standard – Chỉ truy xuất video ở độ 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 giá trị cho thông số này, thì bạn cũng phải đặt giá trị của thông số type thành video.

Giá trị được chấp nhận là:
  • 2d – Giới hạn 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 – Bao gồm cả video 3D và không phải 3D trong kết quả 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 của chúng. Nếu chỉ định giá trị cho thông số này, thì bạn cũng phải đặt giá trị của thông số type thành video.

Giá trị được chấp nhận là:
  • any – Không lọc kết quả tìm kiếm video dựa trên thời lượng của chúng. Đây là giá trị mặc định.
  • long – Chỉ bao gồm các video dài hơn 20 phút.
  • medium – Chỉ bao gồm các video có thời lượng từ 4 đến 20 phút (bao gồm cả video này).
  • short – Chỉ bao gồm các 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 tìm kiếm ở những video chỉ nhúng được vào một trang web. Nếu chỉ định giá trị cho thông số này, thì bạn cũng phải đặt giá trị của thông số type thành video.

Giá trị được chấp nhận là:
  • any – Trả về 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 những video có giấy phép cụ thể. YouTube cho phép người tải lên video chọn đính kèm giấy phép Creative Commons hoặc giấy phép chuẩn của YouTube vào từng video của họ. Nếu chỉ định giá trị cho thông số này, thì bạn cũng phải đặt giá trị của thông số type thành video.

Giá trị được chấp nhận là:
  • any – Trả về tất cả video, bất kể là video có giấy phép nào, khớp với các 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 video khác mà họ tạo. Tìm hiểu thêm.
  • youtube – Chỉ trả lại các video có giấy phép chuẩn của YouTube.
videoPaidProductPlacement string
Thông số videoPaidProductPlacement lọc kết quả tìm kiếm để chỉ bao gồm những video mà nhà sáng tạo đã thể hiện là có quảng cáo trả phí. Nếu chỉ định một giá trị cho thông số này, thì bạn cũng phải đặt giá trị của thông số type thành video.

Các giá trị có thể chấp nhận được là:
  • any – Trả về 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 video có nội dung được trả tiền để quảng cáo.
videoSyndicated string
Tham số videoSyndicated cho phép bạn giới hạn tìm kiếm trong phạm vi những video có thể phát bên ngoài youtube.com. Nếu chỉ định một 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.

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

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

Khô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 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
Etag của tài nguyên này.
nextPageToken string
Mã thông báo này có thể được dùng làm giá trị của thông 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ể dùng làm giá trị của thông 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 ISO gồm hai chữ cái 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 khu vực không được hỗ trợ được chỉ định, YouTube vẫn có thể chọn một khu vực khác thay vì 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 mang tính tương đối và có thể không phải là giá trị chính xác. Ngoài ra, giá trị tối đa là 1.000.000.

Bạn không nên sử dụng giá trị này để tạo các 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 API.
items[] list
Danh sách các 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ả cá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 video có liên quan đến từ khoá 'chó'. ID 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 kết quả ở mức 25. Để trả về nhiều kết quả hơn, hãy chuyển các thông số bổ sung như được nêu 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 phương thức này. Vui lòng xem tài liệu 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 được chỉ định một mã nhận dạng kênh không hợp lệ.
badRequest (400) invalidLocation Giá trị thông 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 có chứa tổ hợp bộ lọc tìm kiếm và/hoặc hạn chế không hợp lệ. Lưu ý rằng bạn phải đặt 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 bạn đặ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ử!

Hãy sử 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 đó.