Search: list

Trả về một tập hợp kết quả tìm kiếm phù hợp với các tham số truy vấn được chỉ định trong yêu cầu API. Theo mặc định, một tập hợp kết quả tìm kiếm sẽ xác định các tài nguyên video, channel và playlist 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 đến hạn mức: 100 lệnh gọi mỗi ngày. Một lệnh gọi đến phương thức này có hạn mức chi phí là 1 đơn vị trong nhóm hạn mức Cụm từ tìm kiếm.

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

Thông số

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

Thông số
Tham số bắt buộc
part string
Tham số part chỉ định một danh sách gồm một hoặc nhiều thuộc tính tài nguyên search được phân tách bằng dấu phẩy 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 số các tham số sau)
forContentOwner boolean
Tham số này chỉ có thể được dùng trong một yêu cầu được uỷ quyền đúng cách và chỉ dành riêng cho các đối tác nội dung của YouTube.

Tham số forContentOwner giới hạn phạm vi tìm kiếm để chỉ truy xuất những video thuộc sở hữu của chủ sở hữu nội dung được xác định bằng tham số onBehalfOfContentOwner. Nếu forContentOwner được đặt thành true, thì 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 cho yêu cầu phải đang sử dụng một tài khoản được liên kết với chủ sở hữu nội dung được chỉ định.
  • Bạn phải đặt giá trị tham số type thành video.
  • Bạn không thể đặt bất kỳ 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 tham 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ỉ bao gồm những video được tải lên thông 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 được 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 Google Developers Console.

Khi 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 xác thực 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ể hạn chế kết quả chỉ bao gồm những video được tải lên thông qua ứng dụng hoặc trang web của chính nhà phát triển đó, chứ không bao gồm những video được tải lên thông qua các ứng dụng hoặc trang web khác.
forMine boolean
Bạn chỉ có thể sử dụng tham số này trong một yêu cầu được uỷ quyền đúng cách. Tham số forMine hạn chế việc tìm kiếm để chỉ truy xuất những video thuộc quyền sở hữu của người dùng đã xác thực. Nếu bạn đặt tham số này thành true, thì giá trị của tham số type cũng phải được đặt thành video. Ngoài ra, bạn không thể đặt bất kỳ 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ố tuỳ chọn
channelId string
Tham số channelId cho biết rằng phản hồi của 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 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 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ể.

Các giá trị được chấp nhận là:
  • any – Trả về tất cả các kênh.
  • show – Chỉ truy xuất chương trình.
eventType string
Tham số eventType giới hạn kết quả tìm kiếm trong các sự kiện phát só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à:
  • completed – Chỉ bao gồm những chương trình phát sóng đã hoàn tất.
  • live – Chỉ bao gồm các chương trình phát sóng đang hoạt động.
  • upcoming – Chỉ bao gồm các chương trình phát sóng sắp tới.
location string
Tham số location kết hợp 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 kết quả tìm kiếm trong những video có siêu dữ liệu chỉ định một vị trí địa lý nằm trong khu vực đó. Giá trị tham số là một chuỗi chỉ định toạ độ vĩ độ/kinh độ, ví dụ: (37.42307,-122.08427).

  • Giá trị tham số location xác định điểm ở giữa khu vực.
  • Tham số locationRadius chỉ định khoảng cách tối đa mà vị trí liên kết với video có thể cách điểm đó để 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 một giá trị cho tham số location nhưng không chỉ định giá trị cho tham số locationRadius.

Lưu ý: 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.
locationRadius string
Tham số locationRadius, kết hợp 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ố thự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, ft và mi. Ví dụ: các giá trị tham số hợp lệ bao gồm 1500m, 5km, 10000ft và 0.75mi. API này không hỗ trợ các giá trị tham số locationRadius lớn hơn 1.000 km.

Lưu ý: Hãy xem định nghĩa về tham số location để biết thêm thông tin.
maxResults unsigned integer
Tham số maxResults chỉ định số lượng tối đa các mục sẽ được trả về trong tập kết quả. Giá trị được chấp nhận là từ 0 đến 50. Giá trị mặc định là 5.

onBehalfOfContentOwner string
Bạn chỉ có thể dùng tham số này trong một yêu cầu được uỷ quyền đúng cách. Lưu ý: Tham số này chỉ dành cho các đối tác nội dung của YouTube.

Tham số onBehalfOfContentOwner cho biết thông tin xác thực của yêu cầu 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ị tham số. Tham 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. Công cụ này cho phép chủ sở hữu nội dung xác thực một lần và truy cập vào tất cả dữ liệu về video và kênh của họ mà không cần 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 được 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 của API. Giá trị mặc định là relevance.

Các giá trị được chấp nhận là:
  • date – 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. Lưu ý: Vì tính năng này dựa vào chỉ mục của Tìm kiếm, nên bạn có thể gặp phải tình trạng chậm trễ khi lập chỉ mục cho nội dung mới hoặc nhận được kết quả không đầy đủ. Để truy xuất một cách đáng tin cậy các video được tải lên gần đây nhất của một kênh, đừng sử dụng search.list. Thay vào đó, hãy sử dụng phương thức playlistItems.list để tìm nạp danh sách phát video tải lên của kênh.
  • rating – 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. Lưu ý: Điểm xếp hạng này được tính bằng điểm số theo thuật toán nội bộ và không hoàn toàn tương đương với số lượt thích giảm dần.
  • relevance – Các 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 theo tiêu đề.
  • videoCount – Các 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 các 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 đang diễn ra.
pageToken string
Tham số pageToken xác định một trang cụ thể trong tập kết quả cần được trả về. Trong phản hồi của API, các thuộc tính nextPageToken và prevPageToken xác định các trang khác có thể được truy xuất.
publishedAfter datetime
Tham số publishedAfter cho biết rằng phản hồi của API chỉ được chứa các tài nguyên được tạo vào hoặc sau thời gian đã chỉ định. Giá trị này là giá trị ngày giờ được định dạng theo 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ỉ được 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ị này là giá trị ngày giờ được định dạng theo RFC 3339 (1970-01-01T00:00:00Z).
q string
Tham số q chỉ định cụm từ tìm kiếm.

Yêu cầu của bạn cũng có thể sử dụng các toán tử Boolean NOT (-) và OR (|) để loại trừ video hoặc tìm video liên kết với một trong số các cụm từ tìm kiếm. Ví dụ: để tìm video khớp với "boating" (đi thuyền) hoặc "sailing" (đi thuyền buồm), hãy đặt giá trị tham số q thành boating|sailing. Tương tự, để tìm video khớp với "boating" (đi thuyền) hoặc "sailing" (chèo thuyền) nhưng không khớp với "fishing" (câu cá), hãy đặt giá trị tham số q thành boating|sailing -fishing. Xin lưu ý rằng ký tự gạch đứng phải được thoát URL khi được gửi trong yêu cầu API. Giá trị thoát 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 những video có thể xem được ở quốc gia được chỉ định. Giá trị tham số là mã quốc gia theo 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 tiêu chuẩn ISO 639-1. Tuy nhiên, bạn nên sử dụng 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 vẫn sẽ được trả về nếu chúng có mức độ liên quan cao đến cụm từ tìm kiếm.
safeSearch string
Tham số safeSearch cho biết liệu kết quả tìm kiếm có nên bao gồm cả nội dung bị hạn chế và nội dung tiêu 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 sẽ lọc nội dung bị hạn chế ở địa phương của bạn. Dựa trên nội dung, kết quả tìm kiếm có thể bị xoá hoặc bị giảm hạng trong kết quả tìm kiếm. Đây là giá trị tham số mặc định.
  • none – YouTube sẽ không lọc bỏ các 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 bộ kết quả tìm kiếm. Dựa trên nội dung, các kết quả tìm kiếm có thể bị gỡ bỏ hoặc hạ cấp trong kết quả tìm kiếm.
topicId string
Tham số topicId cho biết rằng phản hồi của API chỉ được chứa các tài nguyên liên kết với chủ đề được chỉ định. Giá trị này xác định một mã nhận dạng chủ đề trên Freebase.

Lưu ý quan trọng: Do Freebase và Freebase API không còn được dùng nữa, 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. Vào thời điểm đó, YouTube bắt đầu hỗ trợ một nhóm nhỏ mã nhận dạng chủ đề được tuyển chọn và bạn chỉ có thể sử dụng nhóm nhỏ mã nhận dạng đó làm giá trị cho tham số này.

type string
Tham số type hạn chế 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.

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 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 tình trạng có 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 của video. 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.
videoDefinition string
Tham số videoDefinition cho phép bạn giới hạn kết quả tìm kiếm chỉ bao gồm video có độ nét cao (HD) hoặc độ nét chuẩn (SD). Video HD có thể phát ở độ phân giải tối thiểu là 720p, mặc dù có thể có độ phân giải cao hơn, chẳng hạn như 1080p. 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ể độ 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 một lượt 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 – Chỉ hiện kết quả tìm kiếm là video 3D.
  • any – Đưa cả video 3D và video không phải 3D vào 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 video. 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 dựa trên thời lượng. Đây là giá trị mặc định.
  • long – Chỉ bao gồm những video dài hơn 20 phút.
  • medium – Chỉ thêm những video có thời lượng từ 4 đến 20 phút (tính cả 4 và 20 phút).
  • 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 hạn chế phạm vi tìm kiếm chỉ bao gồm những video có thể được nhúng vào một 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ả về tất cả video, có thể nhúng hoặc không.
  • true – Chỉ truy xuất những 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ó một giấy phép cụ thể. YouTube cho phép người tải video lên chọn gắn giấy phép Creative Commons hoặc giấy phép chuẩn của YouTube cho từng 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 khớp với các tham số truy vấn, bất kể video đó có giấy phép nào.
  • creativeCommon – Chỉ trả về những 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 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 đã đánh dấu 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ả 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 những 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 kết quả tìm kiếm chỉ bao gồm 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, 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, dù có được cung cấp hay 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 kết quả tìm kiếm ở 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ả về 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
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 kết quả.
prevPageToken string
Mã thông báo có thể dùng làm giá trị của tham số pageToken để truy xuất trang trước trong tập kết quả.
regionCode string
Mã khu vực được dùng cho cụm từ tìm kiếm. Giá trị của thuộc tính là mã quốc gia gồm hai chữ cái theo tiêu chuẩn ISO, dùng để 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 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 kết quả.
pageInfo.totalResults integer
Tổng số kết quả trong tập kết quả.Xin lưu ý rằng giá trị này là giá trị ước chừng 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 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 nextPageToken và prevPageToken để xác định xem có hiển thị đườ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ả phù hợp với tiêu chí tìm kiếm.

Ví dụ

Lưu ý: Các đoạn mã mẫu sau đây có thể không phải là ví dụ cho mọi 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 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 kết quả ở mức 25. Để trả về nhiều kết quả hơn, hãy truyền thêm các tham số như được ghi lại tại đây: https://developers.google.com/youtube/data/reference/rest/v3/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 quan đến 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 được 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 được 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 Thông tin chi tiết về lỗi 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 không hợp lệ gồm các bộ lọc tìm kiếm và/hoặc hạn chế. Xin 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 đặt một giá trị cho tham số eventType, videoCaption, videoCategoryId, videoDefinition, videoDimension, videoDuration, videoEmbeddable, videoLicense, videoSyndicated hoặc videoType.

Hãy dùng thử!

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