Triển khai: Video

Các ví dụ sau đây cho biết cách sử dụng YouTube Data API (v3) để thực hiện các chức năng liên quan đến video.

Lấy video đã tải lên của một kênh

Ví dụ này truy xuất các video được tải lên một kênh cụ thể. Ví dụ này có 2 bước:

Ví dụ này cho thấy cách truy xuất danh sách những video phổ biến nhất trên YouTube. Danh sách này được chọn bằng một thuật toán kết hợp nhiều tín hiệu khác nhau để xác định mức độ phổ biến tổng thể.

Để truy xuất danh sách video phổ biến nhất, hãy gọi phương thức videos.list và đặt giá trị của tham số chart thành mostPopular. Bảng xếp hạng mostPopular bao gồm những video nhạc, phim và trò chơi thịnh hành.

Sau đó, bạn có thể đặt các tham số sau (không bắt buộc):

  • regionCode: Hướng dẫn API trả về danh sách video cho khu vực được chỉ định. Giá trị tham số là mã quốc gia gồm 2 chữ cái theo ISO 3166-1. Bạn có thể sử dụng phương thức i18nRegions.list để truy xuất danh sách mã khu vực mà YouTube hỗ trợ.
  • videoCategoryId: Xác định danh mục video mà bạn muốn truy xuất những video phổ biến nhất. Bạn có thể sử dụng phương thức videoCategories.list để truy xuất danh sách mã danh mục mà YouTube hỗ trợ.

Ví dụ: yêu cầu sau đây truy xuất các video thể thao phổ biến nhất ở Tây Ban Nha:

https://developers.google.com/apis-explorer/#p/youtube/v3/youtube.videos.list?
        part=snippet
        &chart=mostPopular
        &regionCode=es
        &videoCategoryId=17
  

Tải video lên

Vì APIs Explorer không hỗ trợ khả năng tải tệp lên, nên nội dung mô tả này không liên kết đến một ví dụ có thể thực thi. Các tài nguyên sau đây sẽ giúp bạn sửa đổi ứng dụng để có thể tải video lên bằng API phiên bản 3:

  • Tài liệu về phương thức videos.insert của API này có chứa một số mã mẫu giải thích cách tải video lên bằng nhiều ngôn ngữ lập trình.

  • Hướng dẫn về Tải lên tiếp nối giải thích chuỗi yêu cầu HTTP mà một ứng dụng sử dụng để tải video lên bằng quy trình tải lên tiếp nối. Hướng dẫn này chủ yếu dành cho những nhà phát triển không thể sử dụng thư viện ứng dụng API của Google. Một số thư viện trong số này cung cấp chế độ hỗ trợ gốc cho tính năng tải lên tiếp tục.

  • Ví dụ về JavaScript để tải video lên sử dụng CORS (chia sẻ tài nguyên trên nhiều nguồn gốc) để minh hoạ cách tải tệp video lên thông qua một trang web. Thư viện tải lên CORS mà API phiên bản 3 sử dụng vốn hỗ trợ tính năng tải lên tiếp tục. Ngoài ra, ví dụ này minh hoạ cách kiểm tra trạng thái của một video đã tải lên bằng cách truy xuất phần processingDetails của tài nguyên video cũng như cách xử lý các thay đổi về trạng thái của video đã tải lên.

Kiểm tra trạng thái của video đã tải lên

Ví dụ này cho thấy cách kiểm tra trạng thái của một video đã tải lên. Video đã tải lên sẽ xuất hiện ngay lập tức trong nguồn cấp dữ liệu video đã tải lên của người dùng được xác thực. Tuy nhiên, video sẽ không xuất hiện trên YouTube cho đến khi được xử lý.

  • Bước 1: Tải video lên

    Gọi phương thức videos.insert để tải video lên. Nếu yêu cầu thành công, phản hồi của API sẽ chứa một tài nguyên video xác định mã nhận dạng video duy nhất cho video đã tải lên.

  • Bước 2: Kiểm tra trạng thái của video

    Gọi phương thức videos.list để kiểm tra trạng thái của video. Đặt giá trị của tham số id thành mã video thu được ở bước 1. Đặt giá trị của tham số part thành processingDetails.

    Nếu yêu cầu được xử lý thành công, phản hồi API sẽ chứa một tài nguyên video. Kiểm tra giá trị của thuộc tính processingDetails.processingStatus để xác định xem YouTube có còn đang xử lý video hay không. Giá trị của thuộc tính sẽ thay đổi thành một giá trị khác ngoài processing, chẳng hạn như succeeded hoặc failed, khi YouTube xử lý xong video.

    Phần nội dung yêu cầu là một tài nguyên video, trong đó thuộc tính id chỉ định mã video của video mà bạn đang xoá. Trong ví dụ này, tài nguyên cũng chứa một đối tượng recordingDetails.

    Yêu cầu dưới đây kiểm tra trạng thái của một video. Để hoàn tất yêu cầu trong Trình khám phá API, bạn cần đặt giá trị cho thuộc tính id.

    https://developers.google.com/apis-explorer/#p/youtube/v3/youtube.videos.list?
            part=snippet,processingDetails
            &id=VIDEO_ID

Lưu ý: Ứng dụng của bạn có thể thăm dò ý kiến API để định kỳ kiểm tra trạng thái của một video mới tải lên. Sau khi video được xử lý, ứng dụng của bạn có thể tạo một bản tin hoặc tiếp tục thực hiện một hành động khác tuỳ thuộc vào trạng thái của video.

Cập nhật video

Ví dụ này cho thấy cách cập nhật một video để thêm thông tin về thời gian và địa điểm quay video. Ví dụ này có các bước sau:

  • Bước 1: Truy xuất mã video

    Làm theo các bước ở trên để truy xuất video đã tải lên cho kênh của người dùng hiện được xác thực. Bạn có thể dùng danh sách này để hiển thị danh sách video, sử dụng mã nhận dạng của mỗi video làm khoá.

    Lưu ý: Có nhiều cách khác để lấy mã video, chẳng hạn như truy xuất kết quả tìm kiếm hoặc liệt kê các mục trong danh sách phát. Tuy nhiên, vì chỉ có chủ sở hữu mới có thể cập nhật video, nên việc truy xuất danh sách video thuộc sở hữu của người dùng uỷ quyền yêu cầu API là bước đầu tiên có thể có trong quy trình này.

  • Bước 2: Cập nhật video

    Gọi phương thức videos.update để cập nhật một video cụ thể. Đặt giá trị của tham số part thành recordingDetails. (Giá trị tham số phụ thuộc vào trường siêu dữ liệu của video đang được cập nhật.)

    Phần nội dung yêu cầu là một tài nguyên video, trong đó thuộc tính id chỉ định mã video của video mà bạn đang cập nhật. Trong ví dụ này, tài nguyên cũng chứa một đối tượng recordingDetails.

    Tài nguyên mẫu bên dưới cho biết video được quay vào ngày 30 tháng 10 năm 2013 tại Boston:

    {
      "id": "VIDEO_ID",
      "recordingDetails": {
        "location": {
          "latitude": "42.3464",
          "longitude": "-71.0975"
        }
        "recordingDate": "2013-10-30T23:15:00.000Z"
      }
    }

    Để hoàn tất yêu cầu trong Trình khám phá API, bạn cần đặt giá trị cho thuộc tính id.

    https://developers.google.com/apis-explorer/#p/youtube/v3/youtube.videos.update?
            part=snippet

Tải một hình thu nhỏ tuỳ chỉnh lên và đặt cho video

Bạn có thể dùng phương thức thumbnails.set của API phiên bản 3 để tải một hình thu nhỏ tuỳ chỉnh lên và đặt hình thu nhỏ đó cho một video. Trong yêu cầu của bạn, giá trị của tham số videoId xác định video mà hình thu nhỏ sẽ được dùng.

Bạn không thể kiểm thử truy vấn này bằng Trình khám phá API vì Trình khám phá API không hỗ trợ khả năng tải tệp đa phương tiện lên. Đây là một yêu cầu đối với phương thức này.

Mã mẫu có liên quan: PHP, Python

Xóa video

Ví dụ này minh hoạ cách xoá một video. Ví dụ này có các bước sau:

  • Bước 1: Truy xuất mã video

    Làm theo các bước ở trên để truy xuất video đã tải lên cho kênh của người dùng hiện được xác thực. Bạn có thể dùng danh sách này để hiển thị danh sách video, sử dụng mã nhận dạng của mỗi video làm khoá.

    Lưu ý: Có nhiều cách khác để lấy mã video, chẳng hạn như truy xuất kết quả tìm kiếm hoặc liệt kê các mục trong danh sách phát. Tuy nhiên, vì chỉ có chủ sở hữu mới có thể xoá video, nên việc truy xuất danh sách video thuộc sở hữu của người dùng uỷ quyền yêu cầu API có thể là bước đầu tiên trong quy trình này.

  • Bước 2: Xoá video

    Gọi phương thức videos.delete để xoá một video cụ thể. Trong yêu cầu, tham số id chỉ định mã video của video mà bạn đang xoá. Bạn phải uỷ quyền cho yêu cầu bằng OAuth 2.0. Nếu đang kiểm thử truy vấn này trong APIs Explorer, bạn cần thay thế giá trị tham số id bằng một mã video hợp lệ.

    https://developers.google.com/apis-explorer/#p/youtube/v3/youtube.videos.delete?
            id=VIDEO_ID
    

Báo cáo video có hành vi sai trái

Ví dụ này minh hoạ cách báo cáo một video chứa nội dung vi phạm. Ví dụ này có các bước sau:

  • Bước 1: Truy xuất các mã nhận dạng giải thích lý do video bị báo cáo

    Gửi một yêu cầu được uỷ quyền đến phương thức videoAbuseReportReasons.list để truy xuất danh sách các lý do hợp lệ để gắn cờ video. Tài nguyên videoAbuseReportReason mẫu bên dưới chứa thông tin về cách gắn cờ một video có nội dung rác hoặc nội dung gây hiểu lầm.

    {
      "kind": "youtube#videoAbuseReportReason",
      "etag": "\"tbWC5XrSXxe1WOAx6MK9z4hHSU8/Or2VqBIilpHU7j__oPzUFCvGVBw\"",
      "id": "S",
      "snippet": {
        "label": "Spam or misleading",
        "secondaryReasons": [
          {
            "id": "27",
            "label": "Spam or mass advertising"
          },
          {
            "id": "28",
            "label": "Misleading thumbnail"
          },
          {
            "id": "29",
            "label": "Malware or phishing"
          },
          {
            "id": "30",
            "label": "Pharmaceutical drugs for sale"
          },
          {
            "id": "31",
            "label": "Other misleading info"
          }
        ]
      }
    }

    Như trong tài nguyên, lý do này được liên kết với danh sách các lý do phụ. Khi gắn cờ một video vì chứa nội dung rác, bạn cần cung cấp mã nhận dạng cho lý do và nên cung cấp thêm một lý do phụ.

  • Bước 2: Gắn cờ video có nội dung phản cảm

    Gửi một yêu cầu được uỷ quyền đến phương thức videos.reportAbuse để thực sự báo cáo video. Nội dung yêu cầu là một đối tượng JSON xác định cả video bị gắn cờ và lý do video bị gắn cờ. Như đã lưu ý ở bước 1, đối với một số loại lý do, bạn nên cung cấp lý do phụ.

    Thuộc tính videoId của đối tượng JSON xác định video đang bị gắn cờ.

    Đối tượng JSON mẫu bên dưới gắn cờ một video vì chứa nội dung rác hoặc nội dung gây hiểu lầm, cụ thể hơn là vì sử dụng hình thu nhỏ gây hiểu lầm. Như trong đối tượng JSON mẫu ở trên, mã nhận dạng cho nội dung Rác hoặc gây hiểu lầmS. Mã nhận dạng của Hình thu nhỏ gây hiểu lầm28.

    {
      "videoId": "VIDEO_ID",
      "reasonId": "S",
      "secondaryReasonId": "28",
      "comments": "Testing the video flagging feature.",
      "language": "en"
    }

    Bạn phải uỷ quyền cho yêu cầu videos.reportAbuse bằng OAuth 2.0. Đường liên kết bên dưới sẽ tải đối tượng JSON ở trên trong Trình khám phá API. Để kiểm thử truy vấn, bạn cần thay thế giá trị thuộc tính videoId bằng một mã video hợp lệ. Xin lưu ý rằng việc gửi yêu cầu này sẽ thực sự gắn cờ video.

    https://developers.google.com/apis-explorer/#p/youtube/v3/youtube.videos.reportAbuse