YouTube Data API (phiên bản 3) hỗ trợ thông báo đẩy thông qua PubSubHubbub, một giao thức xuất bản/đăng ký từ máy chủ đến máy chủ cho các tài nguyên có thể truy cập trên web. Thông báo được gửi đến người đăng ký thông qua webhook HTTP, hiệu quả hơn nhiều so với các giải pháp dựa trên cơ chế thăm dò. Với PubSubHubbub, máy chủ của bạn sẽ biết về các sự kiện gần như theo thời gian thực mà không cần xác định khoảng thời gian thăm dò tối ưu hoặc liên tục tìm nạp dữ liệu không thay đổi.
Máy chủ gọi lại PubSubHubbub của bạn sẽ nhận được thông báo về nguồn cấp dữ liệu Atom khi một kênh thực hiện bất kỳ hoạt động nào sau đây:
- tải video lên
- cập nhật tiêu đề của video
- cập nhật nội dung mô tả của video
Các bước sau đây giải thích cách đăng ký nhận thông báo:
-
Thiết lập một máy chủ lệnh gọi lại có thể xử lý các thông báo nguồn cấp dữ liệu Atom đến.
-
Sử dụng trung tâm Google để đăng ký nhận thông báo đẩy:
-
Đặt mode thành
subscribe. (Hoặc đặt chế độ thànhunsubscribeđể huỷ gói thuê bao.) -
Đặt URL gọi lại thành URL mà bạn đã thiết lập ở bước 1.
-
Đặt URL chủ đề thành
https://www.youtube.com/feeds/videos.xml?channel_id=CHANNEL_ID, trong đóCHANNEL_IDlà mã nhận dạng kênh YouTube mà bạn muốn truy xuất thông báo đẩy.
-
-
Xử lý thông báo được gửi đến máy chủ gọi lại của bạn. Định dạng thông báo được trình bày bên dưới. Xin lưu ý rằng bạn có thể sử dụng giá trị của phần tử
<yt:videoId>để xác định video mới được thêm hoặc cập nhật. Bạn cũng có thể sử dụng giá trị của phần tử<yt:channelId>để xác định kênh sở hữu video đó.<feed xmlns:yt="http://www.youtube.com/xml/schemas/2015" xmlns="http://www.w3.org/2005/Atom"> <link rel="hub" href="https://pubsubhubbub.appspot.com"/> <link rel="self" href="https://www.youtube.com/feeds/videos.xml?channel_id=CHANNEL_ID"/> <title>YouTube video feed</title> <updated>2015-04-01T19:05:24.552394234+00:00</updated> <entry> <id>yt:video:VIDEO_ID</id> <yt:videoId>VIDEO_ID</yt:videoId> <yt:channelId>CHANNEL_ID</yt:channelId> <title>Video title</title> <link rel="alternate" href="http://www.youtube.com/watch?v=VIDEO_ID"/> <author> <name>Channel title</name> <uri>http://www.youtube.com/channel/CHANNEL_ID</uri> </author> <published>2015-03-06T21:40:57+00:00</published> <updated>2015-03-09T19:05:24.552394234+00:00</updated> </entry> </feed>