Hướng dẫn dành cho nhà phát triển: Python

API Dữ liệu YouTube cho phép các ứng dụng khách truy xuất và cập nhật nội dung trên YouTube dưới dạng nguồn cấp dữ liệu API Dữ liệu của Google. Ứng dụng khách của bạn có thể sử dụng nguồn cấp dữ liệu API Dữ liệu YouTube để tìm nạp, tìm kiếm và cập nhật video, bình luận, phản hồi, danh sách phát, hồ sơ người dùng và thông tin liên hệ của người dùng, cũng như truy vấn video khớp với các tiêu chí cụ thể.

Ngoài việc cung cấp một số thông tin cơ bản về các tính năng của API Dữ liệu của YouTube, tài liệu này còn đưa ra các ví dụ về cách tương tác với API bằng Thư viện ứng dụng Python. Để sử dụng thư viện ứng dụng Python, bạn cần có Python 2.0 trở lên và các mô-đun Element Tree, httplib và urllib. Hãy xem phần Mô-đun phần phụ thuộc để biết thêm thông tin chi tiết.

Nếu bạn cần trợ giúp thiết lập thư viện ứng dụng Python, hãy tham khảo Hướng dẫn bắt đầu. Nếu bạn muốn tìm hiểu thêm về giao thức cơ bản mà thư viện ứng dụng Python sử dụng để tương tác với YouTube, hãy xem trang giao thức trong Hướng dẫn dành cho nhà phát triển.

Thông tin về tài liệu này

Đối tượng

Tài liệu này dành cho các lập trình viên muốn viết ứng dụng ứng dụng có thể tương tác với YouTube bằng thư viện ứng dụng Python. Tài liệu này cung cấp một loạt ví dụ về các hoạt động tương tác cơ bản với API dữ liệu.

Để biết thông tin tham khảo về YouTube Data API, hãy xem hướng dẫn tham khảo.

Tài liệu này giả định rằng bạn hiểu các ý tưởng chung đằng sau giao thức API Dữ liệu của Google và bạn biết cách lập trình bằng Python.

Để biết thông tin tham khảo về các lớp và phương thức Python, hãy xem pyDocs (dành cho lớp dịch vụcác lớp dữ liệu) đi kèm với mã nguồn.

Cấu trúc tài liệu

Tài liệu này bao gồm các phần sau:

  • Phần Xác thực mô tả hai phương thức xác thực khác nhau có sẵn để liên kết các thao tác API với một tài khoản người dùng cụ thể. Phần này cũng trình bày những điểm khác biệt giữa quy trình xác thực cho API Dữ liệu YouTube và các API Dữ liệu khác của Google. Trong toàn bộ tài liệu này, phần giải thích về các hàm API cụ thể sẽ cho biết rõ liệu hàm đó có yêu cầu xác thực người dùng hay không. Nhìn chung, tất cả các yêu cầu sửa đổi video hoặc dữ liệu nguồn cấp dữ liệu đều cần được xác thực. Các yêu cầu chỉ có thể đọc đối với video công khai không yêu cầu xác thực.

  • Phần Tìm hiểu về nguồn cấp dữ liệu và mục nhập video cung cấp một phản hồi API mẫu và giải thích cách trích xuất thông tin về một video trong danh sách video hoặc một tập hợp kết quả tìm kiếm. Phần này cũng giải thích cách truy cập siêu dữ liệu về một mục video cụ thể. Cuối cùng, phần này giải thích cơ chế cập nhật một mục video riêng lẻ.

  • Phần Truy xuất và tìm kiếm video giải thích cách tìm nạp các danh sách video cụ thể, chẳng hạn như nguồn cấp dữ liệu chuẩn gồm các video phổ biến nhất trên YouTube. Các danh sách video khác bao gồm video do một người dùng cụ thể tải lên và danh sách video liên quan đến một video cụ thể. Phần này cũng giải thích cách sử dụng API để cho phép người dùng tìm kiếm trong thư viện video của YouTube theo các cụm từ tìm kiếm hoặc danh mục cụ thể.

  • Phần Tải video lên giải thích ngắn gọn hai cách để bạn cho phép người dùng tải video lên YouTube từ ứng dụng của bạn. Ngoài ra, phần này cũng giải thích cách tải video lên để phản hồi các video khác.

  • Phần Cập nhật và xoá video mô tả cách sử dụng API để cập nhật thông tin về một video trên YouTube. Tài liệu này cũng mô tả cách xoá video bằng API.

  • Phần Sử dụng các tính năng cộng đồng mô tả các hàm API cho phép người dùng tương tác với video trên YouTube. Các hàm này giải thích các yêu cầu đăng điểm xếp hạng, bình luận hoặc khiếu nại đối với một video hiện có. Bạn cũng có thể sử dụng API này để truy xuất danh sách bình luận trên video.

  • Phần Lưu và thu thập video giải thích cách sử dụng API để truy cập, tạo và cập nhật video yêu thích, danh sách phát video và danh sách kênh đăng ký trên YouTube. Video này cũng hướng dẫn cách sửa đổi danh sách phát và video yêu thích bằng cách thêm và xoá video.

  • Phần Bật tính năng tương tác của người dùng giải thích cách sử dụng API để truy xuất và cập nhật hồ sơ người dùng. Phần này cũng giải thích cách truy xuất, thêm, cập nhật và xoá thông tin liên hệ của người dùng.

Bắt đầu

Yêu cầu

Ứng dụng khách của bạn có thể sử dụng nguồn cấp dữ liệu API Dữ liệu YouTube để tìm kiếm, truy xuất và cập nhật video, bình luận, phản hồi, danh sách phát, kênh đăng ký, hồ sơ người dùng và nhiều nội dung khác.

Ngoài việc cung cấp một số thông tin cơ bản về các tính năng của API Dữ liệu của YouTube, tài liệu này còn đưa ra các ví dụ về cách tương tác với API bằng Thư viện ứng dụng Python. Để sử dụng thư viện ứng dụng Python, bạn cần có Python 2.2 trở lên và các mô-đun Element Tree, httplib và urllib. Hãy xem phần Mô-đun phần phụ thuộc để biết thêm thông tin chi tiết.

Hãy xem Hướng dẫn bắt đầu sử dụng để biết thêm thông tin về cách định cấu hình môi trường. Nếu bạn muốn tìm hiểu thêm về giao thức cơ bản mà thư viện ứng dụng Python sử dụng để tương tác với YouTube, hãy xem trang giao thức trong Hướng dẫn dành cho nhà phát triển.

Bạn có thể sao chép/dán các đoạn mã mẫu bên dưới vào mã của mình và chỉnh sửa cho phù hợp với nhu cầu.

Trước khi có thể thực hiện bất kỳ thao tác nào bằng YouTube Data API, bạn phải khởi chạy đối tượng gdata.youtube.service.YouTubeService như minh hoạ bên dưới. Các câu lệnh import được liệt kê bên dưới sẽ tự động thực hiện các lệnh nhập khác từ mô-đun gdata.mediagdata.geo. Xin lưu ý rằng tất cả các thao tác ngoài việc truy xuất nội dung công khai đều yêu cầu xác thực.

import gdata.youtube
import gdata.youtube.service

yt_service = gdata.youtube.service.YouTubeService()

# Turn on HTTPS/SSL access.
# Note: SSL is not available at this time for uploads.
yt_service.ssl = True

Hầu hết các ví dụ về phương thức trong hướng dẫn này đều hoạt động trên một thực thể của gdata.youtube.service.YouTubeService. Bạn nên kiểm thử các yêu cầu chưa được xác thực từ trình thông dịch python tương tác.

Lưu ý: bạn phải thêm thư viện ứng dụng Python đúng cách vào đường dẫn. Hãy nhớ cài đặt bằng cách chạy tập lệnh setup.py được cung cấp. Hãy tham khảo Hướng dẫn bắt đầu sử dụng để biết thêm thông tin.

Xác thực

Bạn có thể sử dụng thư viện ứng dụng Python để làm việc với nguồn cấp dữ liệu công khai hoặc riêng tư. Nguồn cấp dữ liệu công khai chỉ có thể đọc và không yêu cầu xác thực. Nguồn cấp dữ liệu riêng tư yêu cầu bạn xác thực với máy chủ YouTube.

Bạn có thể xác thực thông qua quy trình xác thực ClientLogin (dành cho ứng dụng máy tính) hoặc thông qua quy trình xác thực AuthSub (dành cho ứng dụng web).

Đặt khoá nhà phát triển và mã ứng dụng

Khoá nhà phát triển xác định nhà phát triển YouTube đang gửi yêu cầu API. Mã ứng dụng khách xác định ứng dụng của bạn cho mục đích ghi nhật ký và gỡ lỗi.

Khi bạn tạo yêu cầu API bằng thư viện ứng dụng Python, tiêu đề yêu cầu X-GData-Key được dùng để chỉ định khoá nhà phát triển và tiêu đề X-GData-Client được dùng để chỉ định mã ứng dụng. Bạn có thể đặt khoá nhà phát triển và mã ứng dụng trên đối tượng YouTubeService, độc lập với lược đồ xác thực đang được sử dụng:

yt_service.developer_key = 'ABCxyz123...'
yt_service.client_id = 'My-Client_id'

Bạn cần đăng ký khoá nhà phát triển YouTube.

Xác thực AuthSub cho ứng dụng web

Phương thức xác thực proxy AuthSub được các ứng dụng web sử dụng khi cần xác thực người dùng với tài khoản YouTube/Google. Nhà điều hành không cần quyền truy cập vào tên người dùng và mật khẩu của người dùng YouTube — chỉ cần mã thông báo AuthSub đặc biệt.

Trong lần đầu tiên truy cập vào ứng dụng của bạn, người dùng chưa được xác thực bằng các dịch vụ của Google. Trong trường hợp này, bạn cần cung cấp cho họ một đường liên kết chuyển hướng người dùng đến Google để uỷ quyền cho yêu cầu truy cập vào tài khoản YouTube của họ của ứng dụng. Thư viện ứng dụng Python cung cấp một hàm để tạo URL này. Mã bên dưới thiết lập đường liên kết đến trang AuthSubRequest.

def GetAuthSubUrl():
  next = 'http://www.example.com/video_upload.pyc'
  scope = 'http://gdata.youtube.com'
  secure = False
  session = True

yt_service = gdata.youtube.service.YouTubeService()
return yt_service.GenerateAuthSubURL(next, scope, secure, session)

authSubUrl = GetAuthSubUrl()
print '<a href="%s">Login to your Google account</a>' % authSubUrl

Hãy chú ý các tham số được gửi đến phương thức GenerateAuthSubURL của đối tượng dịch vụ:

  • next (tiếp theo) – URL của trang mà YouTube sẽ chuyển hướng người dùng đến sau khi họ đã uỷ quyền cho ứng dụng của bạn truy cập vào tài khoản của họ.
  • phạm vi – cho biết ứng dụng sẽ chỉ truy cập vào nguồn cấp dữ liệu API YouTube.
  • secure (an toàn) – cho biết mã thông báo được trả về sẽ không phải là mã thông báo an toàn.
  • session (phiên) – cho biết mã thông báo này có thể được đổi lấy mã thông báo nhiều lần sử dụng (phiên).

URL được trả về sẽ có dạng như sau:

https://www.google.com/accounts/AuthSubRequest?scope=http%3A%2F%2Fgdata.youtube.com&session=1&secure=0&next=http%3A%2F%2Fwww.example.com%2Fvideo_upload.pyc

Sau đó, người dùng có thể nhấp vào đường liên kết để đăng nhập vào tài khoản YouTube của họ. Sau khi người dùng cho phép ứng dụng của bạn truy cập vào tài khoản của họ, họ sẽ được chuyển hướng trở lại URL next. URL sẽ có một giá trị mã thông báo dùng một lần được thêm vào dưới dạng tham số truy vấn. URL sẽ có dạng như sau:

http://www.example.com/video_upload.pyc?token=Abc123...

Phần tiếp theo sẽ minh hoạ cách nâng cấp mã thông báo này. Đoạn mã dưới đây minh hoạ một trong những cách truy xuất mã thông báo này từ URL:

import cgi
parameters = cgi.FieldStorage()
authsub_token = parameters[[]'token' ]

Nâng cấp lên mã thông báo phiên

Để bảo mật, mã thông báo này chỉ dùng một lần, vì vậy, bạn cần trao đổi mã thông báo dùng một lần này để lấy mã thông báo phiên. Quy trình này được mô tả trong tài liệu về AuthSub. Đoạn mã sau đây cho biết cách nâng cấp mã thông báo.

yt_service = gdata.youtube.service.YouTubeService()
yt_service.SetAuthSubToken(authsub_token)
yt_service.UpgradeToSessionToken()

Giá trị mã thông báo này đại diện cho một mã thông báo AuthSub dùng một lần. Vì session = True đã được chỉ định ở trên, nên bạn có thể trao đổi mã thông báo này để lấy mã thông báo phiên AuthSub bằng phương thức UpgradeToSessionToken. Phương thức này sẽ gọi dịch vụ AuthSubSessionToken.

Đối tượng YouTubeService của bạn hiện đã được xác thực đầy đủ và có thể được dùng để thực hiện mọi yêu cầu tiếp theo bằng API YouTube. Mã thông báo phiên AuthSub sẽ không hết hạn trừ phi bạn đưa ra yêu cầu cụ thể để thu hồi mã thông báo hoặc người dùng quyết định thu hồi quyền truy cập bằng cách truy cập vào trang Trang web được uỷ quyền trong tài khoản YouTube của họ.

Xác thực ClientLogin cho các ứng dụng đã cài đặt

Phương thức xác thực ClientLogin được dùng trong các ứng dụng đã cài đặt có thể lưu trữ hoặc truy vấn tên người dùng và mật khẩu của người dùng. Để sử dụng phương thức xác thực này, hãy gọi phương thức ProgrammaticLogin của YouTubeService kế thừa từ lớp gdata.service.GDataService, chỉ định mã nhận dạng và mật khẩu của người dùng mà ứng dụng của bạn đang thay mặt gửi yêu cầu xác thực.

yt_service = gdata.youtube.service.YouTubeService()
yt_service.email = 'jo@gmail.com'
yt_service.password = 'mypassword'
yt_service.source = 'my-example-application'
yt_service.ProgrammaticLogin()

Sau khi đặt thông tin xác thực, bạn có thể sử dụng đối tượng YouTubeService để xử lý mọi yêu cầu tiếp theo. Để có thể tải lên và thực hiện mọi loại yêu cầu "ghi" (thêm bình luận, v.v.) vào API YouTube, hãy đảm bảo bạn cũng chuyển khoá nhà phát triển và mã ứng dụng của mình vào đối tượng yt_service khi thực hiện xác thực:

# A complete client login request
yt_service.email = 'jo@gmail.com'
yt_service.password = 'mypassword'
yt_service.source = 'my-example-application'
yt_service.developer_key = 'ABC123...'
yt_service.client_id = 'my-example-application'
yt_service.ProgrammaticLogin()

Đối tượng YouTubeService sẽ tự động đặt tiêu đề X-GData-KeyX-GData-Client chính xác khi bạn đặt thuộc tính developer_keyclient_id.

Lưu ý: Vui lòng tham khảo tài liệu xác thực API Dữ liệu của Google để biết thêm thông tin chi tiết về cả cơ chế AuthSub và ClientLogin.

Tìm hiểu về nguồn cấp dữ liệu và mục nhập video

API Dữ liệu YouTube cung cấp một số nguồn cấp dữ liệu video đại diện cho danh sách video, chẳng hạn như nguồn cấp dữ liệu chuẩn, video tải lên, kênh đăng ký và video yêu thích. URL của từng nguồn cấp dữ liệu được ghi lại trong hướng dẫn tham khảo.

Hiển thị nguồn cấp dữ liệu video

Nhiều nguồn cấp dữ liệu trong API YouTube bao gồm các mục video. Đơn giản nhất, bạn có thể mô hình hoá các nguồn cấp dữ liệu này dưới dạng đối tượng gdata.youtube.YouTubeVideoFeed, mỗi đối tượng chứa một số đối tượng gdata.youtube.YouTubeVideoEntry. Mỗi mục video tương ứng với đúng một video trên YouTube và chứa thông tin về video đó.

Cấu trúc cơ bản để truy xuất danh sách video là tạo một URL đến nguồn cấp dữ liệu video, sau đó xử lý từng mục nhập, tương tự như mã sau:

def GetAndPrintVideoFeed(uri):
  yt_service = gdata.youtube.service.YouTubeService()
  feed = yt_service.GetYouTubeVideoFeed(uri)
  for entry in feed.entry:
    PrintEntryDetails(entry) # full documentation for this function

Phần Truy xuất và tìm kiếm video trình bày chi tiết về nhiều URL nguồn cấp dữ liệu phổ biến và cách truy xuất nhiều nguồn cấp dữ liệu video.

Truy xuất một mục video cụ thể

Bạn chỉ có thể truy xuất thông tin của một mục video cụ thể nếu biết mã video của mục đó. URL của mục nhập dựa trên mã video:

http://gdata.youtube.com/feeds/api/videos/videoID

Mã sau đây truy xuất gdata.youtube.YouTubeVideoEntry tương ứng với một video trên YouTube:

entry = yt_service.GetYouTubeVideoEntry(video_id='the0KZLEacs')

Nội dung video dự thi

Có nhiều phần siêu dữ liệu có thể được truy xuất từ đối tượng gdata.youtube.YouTubeVideoEntry, chẳng hạn như hình thu nhỏ, URL trình phát và thời lượng video. Mã sau đây minh hoạ cách lấy một số thông tin này. Thư viện ứng dụng Python tóm tắt hầu hết chức năng này bằng cách liên kết các phần tử XML vào các lớp. Hầu hết thông tin quan trọng về mục nhập YouTubeVideoEntry đều có trong các phần tử con của thuộc tính media (chứa đối tượng gdata.media.Group) trong mục nhập (đại diện cho phần tử media:group XML). Dưới đây là ví dụ về cách truy xuất siêu dữ liệu video:

def PrintEntryDetails(entry):
  print 'Video title: %s' % entry.media.title.text
  print 'Video published on: %s ' % entry.published.text
  print 'Video description: %s' % entry.media.description.text
  print 'Video category: %s' % entry.media.category[[]0].text
  print 'Video tags: %s' % entry.media.keywords.text
  print 'Video watch page: %s' % entry.media.player.url
  print 'Video flash player URL: %s' % entry.GetSwfUrl()
  print 'Video duration: %s' % entry.media.duration.seconds

  # non entry.media attributes
  print 'Video geo location: %s' % entry.geo.location()
  print 'Video view count: %s' % entry.statistics.view_count
  print 'Video rating: %s' % entry.rating.average

  # show alternate formats
  for alternate_format in entry.media.content:
    if 'isDefault' not in alternate_format.extension_attributes:
      print 'Alternate format: %s | url: %s ' % (alternate_format.type,
                                                 alternate_format.url)

  # show thumbnails
  for thumbnail in entry.media.thumbnail:
    print 'Thumbnail url: %s' % thumbnail.url

Lưu ý: Để biết thêm thông tin về cách tạo thông tin bắt buộc để nhúng video có trình phát vào trang của bạn, vui lòng tham khảo hướng dẫn về giao thức.

Truy xuất và tìm kiếm video

Truy xuất nguồn cấp dữ liệu chuẩn

YouTube Data API cung cấp nguồn cấp dữ liệu chuẩn về những video phổ biến nhất trên YouTube. API này trước đây hỗ trợ các nguồn cấp dữ liệu chuẩn khác nhưng hiện không còn được dùng nữa. Hãy xem Hướng dẫn dành cho nhà phát triển để biết thêm thông tin.

URL của nguồn cấp dữ liệu video phổ biến nhất trên YouTube có định dạng như sau:

http://gdata.youtube.com/feeds/api/standardfeeds/most_popular

Lưu ý: Bạn cũng có thể truy xuất nguồn cấp dữ liệu chuẩn dành riêng cho ngôn ngữ bằng cách chỉ định localeID ở định dạng: http://gdata.youtube.com/feeds/api/standardfeeds/localeID/feedID. Ví dụ: các video phổ biến nhất ở Nhật Bản sẽ là: http://gdata.youtube.com/feeds/api/standardfeeds/JP/most_popular. Để biết danh sách đầy đủ các localeID được giả định, vui lòng tham khảo hướng dẫn tham khảo.

def PrintVideoFeed(feed):
  for entry in feed.entry:
    PrintEntryDetails(entry)

def GetAndPrintFeedByUrl:
  yt_service = gdata.youtube.service.YouTubeService()

  # You can retrieve a YouTubeVideoFeed by passing in the URI
  uri = 'http://gdata.youtube.com/feeds/api/standardfeeds/JP/most_popular'
  PrintVideoFeed(yt_service.GetYouTubeVideoFeed(uri))

Truy xuất video do một người dùng cụ thể tải lên

Mỗi người dùng YouTube đều có một nguồn cấp dữ liệu video được liên kết tương ứng với các video mà họ đã tải lên tại http://gdata.youtube.com/feeds/api/users/username/uploads. Mã sau đây minh hoạ cách tìm nạp và hiển thị nguồn cấp dữ liệu mà người dùng tải lên:

def GetAndPrintUserUploads(username):
  yt_service = gdata.youtube.service.YouTubeService()
  uri = 'http://gdata.youtube.com/feeds/api/users/%s/uploads' % username
  PrintVideoFeed(yt_service.GetYouTubeVideoFeed(uri))

Lưu ý: Bạn cũng có thể sử dụng chuỗi "mặc định" thay vì username để truy xuất video cho người dùng hiện đã được xác thực.

Để truy xuất các video có liên quan, hãy truyền mã video của đối tượng gdata.youtube.YouTubeVideoEntry vào phương thức GetYouTubeRelatedVideoFeed của đối tượng gdata.youtube.service.YouTubeService. Thao tác này sẽ truy xuất một đối tượng YouTubeVideoFeed chứa các mục liên quan.

related_feed = yt_service.GetYouTubeRelatedVideoFeed(video_id='abc123')

Tìm kiếm video

YouTube Data API cho phép bạn yêu cầu một tập hợp các mục phù hợp với tiêu chí đã chỉ định, chẳng hạn như yêu cầu các mục video do một tác giả cụ thể xuất bản, theo định dạng video hoặc chứa một từ khoá cụ thể. Để thực hiện việc này, bạn tạo một đối tượng gdata.service.YouTubeVideoQuery có tiêu chí tìm kiếm cụ thể và truyền đối tượng đó vào phương thức YouTubeQuery của gdata.youtube.service.YouTubeService.

Ví dụ dưới đây cho thấy cách thực hiện truy vấn tìm kiếm, với kết quả được sắp xếp theo số lượt xem, bao gồm cả video bị hạn chế (API gọi là "Nội dung phản cảm"):

def SearchAndPrint(search_terms):
  yt_service = gdata.youtube.service.YouTubeService()
  query = gdata.youtube.service.YouTubeVideoQuery()
  query.vq = search_terms
  query.orderby = 'viewCount'
  query.racy = 'include'
  feed = yt_service.YouTubeQuery(query)
  PrintVideoFeed(feed)

Lớp gdata.service.Query và các lớp con như YouTubeVideoQuery chịu trách nhiệm tạo URL nguồn cấp dữ liệu. VideoQuery hiển thị ở trên tạo một URL tương đương với URL sau:

http://gdata.youtube.com/feeds/api/videos?vq=<searchTerms>&racy=include&orderby=viewCount

Dưới đây là một số thuộc tính YouTubeVideoQuery phổ biến nhất để thiết lập tham số tìm kiếm:

author
Đặt tác giả của mục nhập. Tác giả đồng nghĩa với tên người dùng trên YouTube.
format
Chỉ định định dạng video. Chấp nhận các tham số dạng số để chỉ định một trong hai loại URL truyền trực tuyến RTSP để phát video trên thiết bị di động hoặc URL HTTP đến trình phát Flash có thể nhúng.
racy
Cho biết liệu kết quả có bao gồm nội dung bị hạn chế hay không. Chỉ chấp nhận hai tham số: "bao gồm" hoặc "loại trừ".
max_results
Đặt số lượng mục nhập tối đa cần trả về cùng một lúc.
start_index
Đặt chỉ mục dựa trên 1 của kết quả đầu tiên sẽ được truy xuất (để phân trang).
orderby
Đặt thứ tự liệt kê các mục nhập, chẳng hạn như theo relevance, viewCount, published hoặc rating.
time
Đặt khoảng thời gian để giới hạn kết quả nguồn cấp dữ liệu chuẩn thành: today, this_week, this_month hoặc all_time.
vq
Đặt cụm từ tìm kiếm. Tìm kiếm chuỗi đã chỉ định trong tất cả siêu dữ liệu của video, chẳng hạn như tiêu đề, thẻ và nội dung mô tả.

Lưu ý: Để biết thêm thông tin về các tham số truy vấn, hãy xem Hướng dẫn tham khảo về API Dữ liệu YouTubeHướng dẫn tham khảo về API Dữ liệu của Google.

Tìm kiếm bằng danh mục và từ khoá

Bạn có thể giới hạn kết quả tìm kiếm để chỉ hiển thị những video phù hợp với một nhóm danh mục và từ khoá nhất định. Hướng dẫn tham khảo mô tả cách chỉ định cả danh mục được xác định trước trên YouTube (chẳng hạn như Nhạc, Người nổi tiếng và blog, v.v.) và từ khoá (thẻ) do người dùng xác định.

Mã sau đây minh hoạ cách tìm kiếm bằng từ khoá (thẻ) bằng cách thay đổi cụm từ tìm kiếm thành chữ thường. Lưu ý: Vì một số từ (chẳng hạn như "hài") có thể vừa là danh mục trên YouTube vừa là từ khoá, nên các cụm từ tìm kiếm theo danh mục và từ khoá sử dụng quy ước là từ viết hoa ("Hài") biểu thị danh mục trên YouTube, còn từ viết thường ("hài") biểu thị từ khoá.

def SearchAndPrintVideosByKeywords(list_of_search_terms):
  yt_service = gdata.youtube.service.YouTubeService()
  query = gdata.youtube.service.YouTubeVideoQuery()
  query.orderby = 'viewCount'
  query.racy = 'include'
  for search_term in list_of_search_terms:
    new_term = search_term.lower()
    query.categories.append('/%s' % new_term)
  feed = yt_service.YouTubeQuery(query)
  PrintVideoFeed(feed)

Tìm kiếm theo thẻ nhà phát triển

Thẻ nhà phát triển là các từ khoá bổ sung, ẩn mà nhà phát triển có thể sử dụng để gắn thẻ nội dung do người dùng cuối tải lên thông qua ứng dụng của họ. Thẻ nhà phát triển được so khớp với khoá nhà phát triển được đặt trong tiêu đề trong quá trình tải lên. Những từ khoá này sẽ không hiển thị công khai và có thể được dùng để truy xuất video. Để tìm video theo thẻ nhà phát triển cụ thể, hãy gửi yêu cầu tìm kiếm chung bằng API Dữ liệu của YouTube bằng khoá nhà phát triển của bạn. Hãy nhớ chỉ định lược đồ danh mục và thẻ nhà phát triển mà video phải khớp. Bạn có thể truy xuất nguồn cấp dữ liệu video khớp với thẻ nhà phát triển của mình ("your_tag_here" trong ví dụ của chúng tôi) từ URL bên dưới:

developer_tag_uri = 'http://gdata.youtube.com/feeds/videos/-/%7Bhttp%3A%2F%2Fgdata.youtube.com%2Fschemas%2F2007%2Fdevelopertags.cat%7Dyour_tag_here'
yt_service = gdata.youtube.service.YouTubeService()
PrintVideoFeed(yt_service.GetYouTubeVideoFeed(developer_tag_uri))

Tải video lên

Vui lòng nhớ xem các sơ đồ trong hướng dẫn về giao thức để biết thông tin tổng quan về quy trình tải lên. Bạn có thể tải video lên theo một trong hai cách sau:

  • bằng cách tải video lên trực tiếp từ máy chủ của bạn thông qua phương thức Tải trực tiếp
  • hoặc trước tiên hãy gửi siêu dữ liệu, sau đó yêu cầu người dùng tải video lên YouTube trực tiếp thông qua phương thức Tải lên bằng trình duyệt

Tải lên trực tiếp

Để tải video lên, trước tiên, bạn phải tạo một đối tượng gdata.youtube.YouTubeVideoEntry mới, truyền cho đối tượng đó một đối tượng gdata.media.Group chứa siêu dữ liệu bắt buộc. Ví dụ sau đây cho thấy cách tải video Quicktime "mytestmovie.mov" lên YouTube với các thuộc tính sau:

Thuộc tínhGiá trị
Tiêu đềMy Test Movie
Danh mụcÔ tô
Keywordsô tô, hài hước
Nội dung mô tảNội dung mô tả của tôi
Tên tệpmytestmovie.mov
Loại MIME của tệpvideo/quicktime
Video có ở chế độ riêng tư không?false
Vị trí video37,-122 (vĩ độ,kinh độ)
Thẻ dành cho nhà phát triểnmydevelopertag, anotherdevelopertag

Mã bên dưới tạo một YouTubeVideoEntry trống để tải lên. Phương thức InsertVideoEntry trên YouTubeService yêu cầu các tham số sau:

  • video_entry – đối tượng gdata.youtube.VideoEntry chứa siêu dữ liệu
  • filename_or_handle – Một đối tượng giống tệp hoặc tên tệp mà video sẽ được đọc từ đó
  • youtube_username – Chuỗi không bắt buộc chỉ định tên người dùng của tài khoản mà video này sẽ được tải lên. Tất nhiên, tài khoản của bạn cần có các quyền thích hợp. Giá trị này mặc định là tài khoản của người dùng hiện đã được xác thực.
  • content_type – Một chuỗi không bắt buộc chỉ định loại MIME của video cần tải lên.
Xin lưu ý rằng các ví dụ này giả định rằng biến yt_service tham chiếu đến đối tượng YouTubeService đã được xác thực đầy đủ.

# prepare a media group object to hold our video's meta-data
my_media_group = gdata.media.Group(
  title=gdata.media.Title(text='My Test Movie'),
  description=gdata.media.Description(description_type='plain',
                                      text='My description'),
  keywords=gdata.media.Keywords(text='cars, funny'),
  category=[[]gdata.media.Category(
      text='Autos',
      scheme='http://gdata.youtube.com/schemas/2007/categories.cat',
      label='Autos')],
  player=None
)


# prepare a geo.where object to hold the geographical location
# of where the video was recorded
where = gdata.geo.Where()
where.set_location((37.0,-122.0))

# create the gdata.youtube.YouTubeVideoEntry to be uploaded
video_entry = gdata.youtube.YouTubeVideoEntry(media=my_media_group,
                                              geo=where)

# set the path for the video file binary
video_file_location = '/path/to/my/file.mov'

new_entry = yt_service.InsertVideoEntry(video_entry, video_file_location)

Nếu muốn gắn thẻ cho video bằng các thẻ không bắt buộc dành cho nhà phát triển (xem phần Tìm kiếm theo thẻ dành cho nhà phát triển để biết thêm thông tin chi tiết), chúng ta có thể sử dụng phương thức AddDeveloperTags trước khi thực hiện lệnh gọi đến InsertVideoEntry:

developer_tags = [[]'some_tag_01', 'another_tag']
video_entry.AddDeveloperTags(developer_tags)

Lưu ý: Để tải video lên ở chế độ riêng tư, bạn phải truyền một thuộc tính riêng tư đến gdata.media.Group:

my_media_group = gdata.media.Group(
  title=gdata.media.Title(text='My Test Movie'),
  description=gdata.media.Description(description_type='plain',
                                      text='My description'),
  keywords=gdata.media.Keywords(text='cars, funny'),
  category=[[]gdata.media.Category(
      text='Autos',
      scheme='http://gdata.youtube.com/schemas/2007/categories.cat',
      label='Autos')],
  player=None,
  private=gdata.media.Private()
)

video_entry = gdata.youtube.YouTubeVideoEntry(media=my_media_group)

# assuming that video_file_location points to a valid path
new_entry = yt_service.InsertVideoEntry(video_entry, video_file_location)

Tải lên bằng trình duyệt

Quá trình tải lên bằng trình duyệt gần giống với quá trình tải lên trực tiếp, ngoại trừ việc bạn không tải tệp nhị phân lên trong cùng một yêu cầu mà bạn dùng để gửi siêu dữ liệu video. Thay vào đó, bạn chỉ cần tạo một YouTubeVideoEntry chỉ chứa siêu dữ liệu. Sau đó, mục nhập video này sẽ được đăng lên một đường liên kết đặc biệt trên máy chủ API YouTube. Phản hồi XML chứa tokenurl, sau đó có thể dùng để tải tệp nhị phân lên bằng một biểu mẫu HTML chuẩn.

# create media group as usual
my_media_group = gdata.media.Group(
  title=gdata.media.Title(text='My Test Movie'),
  description=gdata.media.Description(description_type='plain',
                                      text='My description'),
  keywords=gdata.media.Keywords(text='cars, funny'),
  category=[[]gdata.media.Category(
      text='Autos',
      scheme='http://gdata.youtube.com/schemas/2007/categories.cat',
      label='Autos')],
  player=None
)

# create video entry as usual
video_entry = gdata.youtube.YouTubeVideoEntry(media=my_media_group)

# upload meta data only
response = yt_service.GetFormUploadToken(video_entry)

# parse response tuple and use the variables to build a form (see next code snippet)
post_url = response[[]0]
youtube_token = response[[]1]

Mã trên in ra một đường liên kết và một mã thông báo dùng để tạo một biểu mẫu HTML hiển thị trong trình duyệt của người dùng. Một biểu mẫu ví dụ đơn giản được hiển thị bên dưới, trong đó youtube_token đại diện cho nội dung của phần tử mã thông báo được trả về, như được truy xuất từ YouTubeVideoEntry ở trên. Để người dùng được chuyển hướng đến trang web của bạn sau khi gửi biểu mẫu, hãy nhớ thêm tham số next vào post_url (như minh hoạ bên dưới). Tham số này sẽ hoạt động giống như tham số next của đường liên kết AuthSub. Điểm khác biệt duy nhất là ở đây, thay vì mã thông báo dùng một lần, status và biến id sẽ được trả về dưới dạng tham số URL.

next = 'http://example.com/post_video_upload.pyc'

form = """<form action="%s?nexturl=%s" method="post" enctype="multipart/form-data">
          <input name="file" type="file"/>
          <input name="token" type="hidden" value="%s"/>
          <input value="Upload Video File" type="submit" />
          </form>""" % (post_url, next, youtube_token)

Sau đó, phản hồi cho một lần tải lên thành công sẽ có dạng như sau:

http://example.com/post_video_upload.pyc?status=200&id=ABC123

Tham số status trả về trạng thái giao dịch HTTP của giao dịch tải lên. Thông số id trả về mã video trên YouTube được chỉ định cho video đã tải lên.

Kiểm tra trạng thái tải lên

Sau khi tải lên, video sẽ xuất hiện ngay trong nguồn cấp dữ liệu video tải lên của người dùng đã xác thực. Tuy nhiên, video sẽ không xuất hiện công khai trên trang web cho đến khi được xử lý. Những video bị từ chối hoặc không tải lên được cũng chỉ xuất hiện trong nguồn cấp dữ liệu video tải lên của người dùng đã xác thực. Mã sau đây kiểm tra trạng thái của YouTubeVideoEntry để xem liệu YouTubeVideoEntry đó có đang hoạt động hay không hoặc đã bị từ chối hay chưa.

upload_status = yt_service.CheckUploadStatus(new_entry)

if upload_status is not None:
  video_upload_state = upload_status[[]0]
  detailed_message = upload_status[[]1]

Cập nhật và xoá video

Cập nhật thông tin video

Để cập nhật siêu dữ liệu video, bạn chỉ cần cập nhật đối tượng YouTubeVideoEntry rồi sử dụng phương thức UpdateVideoEntry của đối tượng YouTubeService. Phương thức này lấy YouTubeVideoEntry chứa siêu dữ liệu đã cập nhật làm tham số.

# assuming we have a video entry that was just posted in our 'new_entry' variable
new_entry.media.title.text = 'My Updated Video Title'
new_entry.media.description.text = 'Just updated'

updated_entry = yt_service.UpdateVideoEntry(new_entry)

Xoá video

Việc xoá video rất đơn giản và chỉ cần một lệnh gọi đến DeleteVideoEntry của đối tượng YouTubeService.

response = yt_service.DeleteVideoEntry(entry_to_be_deleted)

if response:
  print 'Video successfully deleted!'

Sử dụng các tính năng tương tác với cộng đồng

Thêm điểm xếp hạng

Để đánh giá một video, hãy sử dụng phương thức AddRating của đối tượng YouTubeService. Xin lưu ý rằng bạn không thể xếp hạng video của chính mình và điểm xếp hạng phải nằm trong khoảng từ 1 đến 5 (kể cả hai điểm này):

video_id_to_rate = 'Ncakifd_16k'
video_entry = yt_service.GetYouTubeVideoEntry(video_id=video_id_to_rate)
response = yt_service.AddRating(3, video_entry)

Bình luận

Truy xuất bình luận về một video

Với một đối tượng YouTubeVideoEntry hoặc mã video đơn giản, bạn có thể truy xuất và in một nguồn cấp dữ liệu chứa các bình luận cho video bằng cách sử dụng phương thức GetYouTubeVideoCommentFeed của đối tượng YouTubeService. Nguồn cấp dữ liệu thu được là gdata.youtube.YouTubeCommentFeed, bao gồm các đối tượng gdata.youtube.YouTubeCommentEntry. Bạn có thể phân tích cú pháp nguồn cấp dữ liệu này như mọi nguồn cấp dữ liệu khác:

video_id = 'ABC123...'
comment_feed = yt_service.GetYouTubeVideoCommentFeed(video_id=video_id)

for comment_entry in comment_feed.entry:
  print comment_entry.ToString()

Thêm nhận xét

Để thêm bình luận mới, bạn chỉ cần sử dụng phương thức AddComment của đối tượng YouTubeService. Phương thức này yêu cầu một đối tượng YouTubeVideoEntry đầy đủ cần được nhận xét, cũng như một chuỗi đại diện cho nhận xét:

my_comment = 'what a boring test video'
video_id = '9g6buYJTt_g'
video_entry = yt_service.GetYouTubeVideoEntry(video_id=video_id)
yt_service.AddComment(comment_text=my_comment, video_entry=video_entry)

Video phản hồi

Video phản hồi trên YouTube là video được liên kết dưới dạng video trả lời với một video khác. Tính năng trả lời bằng video đã ngừng hoạt động như đã giải thích trong thông báo này. Mặc dù các video phản hồi hiện có vẫn hoạt động, nhưng YouTube không còn hỗ trợ tính năng truy xuất danh sách video phản hồi cho một video, tải video phản hồi mới lên hoặc xoá video phản hồi. Tuy nhiên, bạn có thể xoá video được dùng trong video phản hồi. Do đó, các hàm này cũng không còn được hỗ trợ trong API.

Các yêu cầu API cho các thao tác phản hồi video hiện trả về những thông tin sau:

  • Yêu cầu truy xuất video phản hồi cho một video sẽ trả về danh sách trống.
  • Yêu cầu thêm video phản hồi sẽ trả về mã phản hồi HTTP 403.
  • Yêu cầu xoá video phản hồi sẽ trả về mã phản hồi HTTP 403.

Gắn cờ video

Bạn có thể thêm đơn khiếu nại về một video bằng phương thức AddComplaint trên đối tượng YouTubeService. Từ khoá khiếu nại phải là một danh mục hợp lệ. Vui lòng tham khảo phần Thêm đơn khiếu nại trong hướng dẫn về giao thức để biết thêm thông tin.

video_id_to_flag = 'Ncakifd_16k'
complaint_term = 'VIOLENCE'
complaint_text = ('Please ignore this complaint. '
                  'I\'m testing a YouTube API and needed to issue '
                  'a complaint to test the add complaint function. ')

response = yt_service.AddComplaint(complaint_text, complaint_term, video_id_to_flag)

Lưu và thu thập video

Video yêu thích

Truy xuất video yêu thích của người dùng

Người dùng YouTube có thể chọn đánh dấu những video họ xem là video yêu thích. Vị trí chung của nguồn cấp dữ liệu yêu thích của người dùng là URL sau.

http://gdata.youtube.com/feeds/api/users/username/favorites

Để truy xuất video yêu thích của người dùng, hãy sử dụng phương thức GetUserFavoritesFeed của đối tượng YouTubeService. Phương thức này lấy một chuỗi tuỳ chọn làm tham số đại diện cho tên người dùng YouTube của người dùng cần truy xuất nguồn cấp dữ liệu yêu thích.

favorite_feed = yt_service.GetUserFavoritesFeed(username='gdpython')

Nguồn cấp dữ liệu được trả về là nguồn cấp dữ liệu video thông thường, chứa các đối tượng YouTubeVideoEntry.

Lưu ý: Ngoài ra, bạn có thể truyền chuỗi default để truy xuất nội dung yêu thích cho người dùng hiện đã xác thực. Đây là hành vi mặc định của phương thức GetUserFavoritesFeed nếu không có tên người dùng nào được cung cấp.

Thêm mục yêu thích

Để thêm video yêu thích, hãy sử dụng phương thức AddVideoEntryToFavorites của đối tượng YouTubeService. Các tham số là YouTubeVideoEntry cần thêm và tên người dùng (không bắt buộc) mà bạn muốn thêm YouTubeVideoEntry vào danh sách yêu thích (mặc định là người dùng hiện đã được xác thực).

video_id = 'Ncakifd_16k'
video_entry = yt_service.GetYouTubeVideoEntry(video_id=video_id)
response = yt_service.AddVideoEntryToFavorites(video_entry)

# The response, if successfully posted is a YouTubeVideoEntry
if isinstance(response, gdata.youtube.YouTubeVideoEntry):
  print 'Video successfully added to favorites'

Xoá mục yêu thích

Để xoá một mục yêu thích, bạn chỉ cần sử dụng phương thức DeleteVideoEntryFromFavorites của đối tượng YouTubeService.

video_id = 'Ncakifd_16k'
response = yt_service.DeleteVideoEntryFromFavorites(video_id)
if response is True:
  print 'Video deleted from favorites'

Danh sách phát

Mỗi người dùng YouTube đều có một nguồn cấp dữ liệu danh sách phát chứa tất cả danh sách phát mà người dùng đó đã tạo. Sau đó, mỗi danh sách phát sẽ có một nguồn cấp dữ liệu cho tất cả video trong danh sách phát đó.

Truy xuất danh sách phát của người dùng

Để tìm nạp danh sách tất cả danh sách phát của người dùng theo cách thủ công, bạn sẽ sử dụng URL sau:

http://gdata.youtube.com/feeds/api/users/username/playlists

Khi sử dụng thư viện ứng dụng Python, bạn có thể sử dụng phương thức GetYouTubePlaylistFeed của đối tượng YouTubeService:

playlist_feed = yt_service.GetYouTubePlaylistFeed(username='gdpython')

# instead of passing in a username, you can also pass the URI to the playlist feed:
playlist_feed = yt_service.GetYouTubePlaylistFeed(uri='http://gdata.youtube.com/feeds/api/users/default/playlists')

Lưu ý: Thay vì truyền một tên người dùng cụ thể (chẳng hạn như "gdpython" trong ví dụ trên), bạn cũng có thể truyền chuỗi 'default' để tham chiếu đến người dùng hiện đã xác thực.

gdata.youtube.YouTubePlaylistFeed đại diện cho một nguồn cấp dữ liệu của các đối tượng gdata.youtube.YouTubePlaylistEntry. Đây là các danh sách phát riêng lẻ mà người dùng có thể có. Các mục video trên một danh sách phát cụ thể được biểu thị dưới dạng đối tượng gdata.youtube.YouTubePlaylistVideoEntry. Các đối tượng này rất giống với các đối tượng gdata.youtube.YouTubeVideoEntry thông thường, ngoại trừ một vài ngoại lệ. Bạn có thể áp dụng tiêu đề và nội dung mô tả tuỳ chỉnh cho các video, đồng thời trường vị trí cho biết vị trí video xuất hiện trong danh sách phát.

Đang truy xuất thông tin danh sách phát

Với YouTubePlaylistEntry (đại diện cho một danh sách phát cụ thể), bạn có thể lấy YouTubePlaylistVideoFeed chứa các đối tượng YouTubePlaylistVideoEntry. Như đã giải thích ở trên, các đối tượng này đại diện cho từng video trong danh sách phát (có tiêu đề và nội dung mô tả tuỳ chỉnh không bắt buộc). Bạn có thể lấy nguồn cấp dữ liệu này bằng cách truyền URI của danh sách phát vào phương thức GetYouTubePlaylistVideoFeed của đối tượng YouTubeService:

# a typical playlist URI
playlist_uri = 'http://gdata.youtube.com/feeds/api/playlists/BCB3BB96DF51B505'

playlist_video_feed = yt_service.GetYouTubePlaylistVideoFeed(uri=playlist_uri)

# iterate through the feed as you would with any other
for playlist_video_entry in playlist_video_feed.entry:
  print playlist_video_entry.title.text

Thêm danh sách phát

Để thêm danh sách phát mới, bạn chỉ cần sử dụng phương thức AddPlaylist của đối tượng YouTubeService. Phương thức này nhận các tham số sau: playlist_title, playlist_description (cả hai đều là chuỗi) và một boolean không bắt buộc có thể được đặt thành True nếu bạn muốn đánh dấu danh sách phát là riêng tư.

new_public_playlistentry = yt_service.AddPlaylist('my new playlist', 'a new playlist')

if isinstance(new_public_playlistentry, gdata.youtube.YouTubePlaylistEntry):
  print 'New playlist added'

# adding a private playlist
new_private_playlistentry = yt_service.AddPlaylist('new private playlist', 'a new private playlist', True)

if isinstance(new_private_playlistentry, gdata.youtube.YouTubePlaylistEntry):
  print 'New private playlist added'

Cập nhật danh sách phát

Để cập nhật danh sách phát, hãy sử dụng phương thức UpdatePlaylist của đối tượng YouTubeService. Phương thức này có các tham số sau: mã của danh sách phát cần cập nhật, tiêu đề mới, nội dung mô tả mới, giá trị boolean (không bắt buộc) để đánh dấu danh sách phát là riêng tư và một chuỗi (không bắt buộc) cho biết tên người dùng sở hữu danh sách phát. Chuỗi này sẽ mặc định là người dùng hiện đã được xác thực.

# here we are updating a public playlist with a new title while also making it private

# we assume that playlist_to_be_updated here represents a YouTubePlaylistEntry object
playlist_entry_id = playlist_to_be_updated.id.text.split('/')[[]-1]

# we want to keep the original description for the playlist so we store it first
original_description = playlist_to_be_updated.description.text

updated_playlist = yt_service.UpdatePlaylist(playlist_entry_id,
                                             'a new updated title',
                                             original_playlist_description,
                                             playlist_private=True)

Thêm video vào danh sách phát

Bạn có thể thêm video vào danh sách phát bằng cách sử dụng phương thức AddPlaylistVideoEntryToPlaylist của đối tượng YouTubeService. Mã dưới đây thêm một video vào danh sách phát, với tiêu đề và nội dung mô tả tuỳ chỉnh.

custom_video_title = 'my test video on my test playlist'
custom_video_description = 'this is a test video on my test playlist'
video_id = 'Ncakifd_16k'
playlist_uri = 'http://gdata.youtube.com/feeds/api/playlists/BCB3BB96DF51B505'

playlist_video_entry = yt_service.AddPlaylistVideoEntryToPlaylist(
    playlist_uri, video_id, custom_video_title, custom_video_description)

if isinstance(playlist_video_entry, gdata.youtube.YouTubePlaylistVideoEntry):
  print 'Video added'

Lưu ý: Xin lưu ý rằng bạn không bắt buộc phải sử dụng tiêu đề và nội dung mô tả tuỳ chỉnh. Nếu bạn không chỉ định tiêu đề và nội dung mô tả tuỳ chỉnh, thì tiêu đề và nội dung mô tả thực tế của video sẽ được sử dụng.

Chỉnh sửa thông tin video trong danh sách phát

Sử dụng phương thức UpdatePlaylistVideoEntryMetaData của đối tượng YouTubeService để thay đổi siêu dữ liệu cho YouTubePlaylistVideoEntry. Trong ví dụ dưới đây, chúng ta quyết định đặt tiêu đề tuỳ chỉnh mới cho video và chuyển video đó lên vị trí đầu tiên (vị trí 1) trong danh sách phát.

playlist_uri = 'http://gdata.youtube.com/feeds/api/playlists/BCB3BB96DF51B505'
playlist_entry_id = 'B0F29389E537F888'

new_video_title = 'a useful video'
new_video_description = 'updated video description'

updated_playlist_video_entry = yt_service.UpdatePlaylistVideoEntryMetaData(
    playlist_uri, playlist_entry_id, new_video_title, new_video_description, 1)

Lưu ý: Nếu bạn muốn khôi phục nội dung mô tả và tiêu đề của video trong danh sách phát về siêu dữ liệu ban đầu, chỉ cần truyền NULL cho cả tiêu đề và nội dung mô tả.

Xóa video khỏi danh sách phát

Để xoá một video khỏi danh sách phát, hãy sử dụng phương thức DeletePlaylistVideoEntry của đối tượng YouTubeService. Phương thức này yêu cầu URI của danh sách phát chứa mục cần xoá cũng như mã của mục đó:

playlist_uri = 'http://gdata.youtube.com/feeds/api/playlists/BCB3BB96DF51B505'
playlist_entry_id = 'B0F29389E537F888'
response = yt_service.DeletePlaylistVideoEntry(playlist_uri,
                                               playlist_entry_id)
if response is True:
  print 'Entry successfully deleted'

Xóa danh sách phát

Để xoá một danh sách phát, bạn chỉ cần sử dụng phương thức DeletePlaylist của đối tượng YouTubeService, truyền URI của danh sách phát cần xoá vào:

playlist_uri = 'http://gdata.youtube.com/feeds/api/playlists/BCB3BB96DF51B505'
response = yt_service.DeletePlaylist(playlist_uri)

if response is True:
  print 'Playlist successfully deleted'

Kênh đăng ký

Để tìm nạp danh sách các kênh, nội dung tìm kiếm và nội dung yêu thích mà một người dùng cụ thể đăng ký, hãy sử dụng URI sau:

http://gdata.youtube.com/feeds/api/users/username/subscriptions

Lưu ý: Ngoài ra, bạn có thể truyền chuỗi default để truy xuất nội dung yêu thích cho người dùng hiện đã xác thực.

Truy xuất gói thuê bao của người dùng

Mã sau đây minh hoạ cách truy xuất và in danh sách gói thuê bao của một người dùng cụ thể. Gói thuê bao được biểu thị dưới dạng gdata.youtube.YouTubeSubscriptionFeed bao gồm các đối tượng gdata.youtube.YouTubeSubscriptionEntry. Để truy xuất gói thuê bao, hãy sử dụng phương thức GetYouTubeSubscriptionFeed của đối tượng YouTubeService, truyền vào URI của nguồn cấp dữ liệu thuê bao hoặc tên người dùng có nguồn cấp dữ liệu thuê bao cần truy xuất. Thông số tên người dùng mặc định là người dùng hiện đã được xác thực.

subscription_feed = yt_service.GetYouTubeSubscriptionFeed(username='gdpython')

if isinstance(subscription_feed, gdata.youtube.YouTubeSubscriptionFeed)):
  # given a YouTubeSubscriptionEntry we can determine it's type (channel, favorite, or query)
  for entry in subscription_feed.entry:
    print entry.GetSubscriptionType()

Thêm gói thuê bao

Bạn có thể tạo một gói thuê bao mới bằng cách chèn một YouTubeSubsciptionEntry mới vào nguồn cấp dữ liệu gói thuê bao của người dùng đã xác thực. Chúng ta có thể tạo 3 loại gói thuê bao: Gói thuê bao kênh của người dùng (sử dụng AddSubscriptionToChannel), gói thuê bao kênh yêu thích của người dùng (sử dụng AddSubscriptionToFavorites hoặc gói thuê bao theo một từ khoá cụ thể (sử dụng AddSubscriptionToQuery). Mã sau đây sẽ đăng ký người dùng đã xác thực theo dõi kênh "GoogleDevelopers".

new_subscription = yt_service.AddSubscriptionToChannel(
      username_to_subscribe_to='GoogleDevelopers')

if isinstance(new_subscription, gdata.youtube.YouTubeSubscriptionEntry):
  print 'New subscription added'

Bạn cũng có thể đăng ký các mục yêu thích của người dùng "GoogleDevelopers":

new_subscription = yt_service.AddSubscriptionToFavorites(
    username='GoogleDevelopers')
if isinstance(new_subscription, gdata.youtube.YouTubeSubscriptionEntry):
  print 'New subscription added'

Cuối cùng, bạn cũng có thể đăng ký nhận thông báo về các cụm từ tìm kiếm cụ thể. Ở đây, chúng ta sẽ đăng ký một cụm từ tìm kiếm cho các video được gắn thẻ "python".

new_subscription = yt_service.AddSubscriptionToQuery(query='python')

if isinstance(new_subscription, gdata.youtube.YouTubeSubscriptionEntry):
  print 'New subscription added'

Xoá gói thuê bao

Để xoá gói thuê bao của người dùng, hãy sử dụng phương thức DeleteSubscription của đối tượng YouTubeService.

sample_subscription_uri = ('http://gdata.youtube.com/feeds/api/users/'
                           'gdpython/subscriptions/c0c77ca6102a7479')

response = yt_service.DeleteSubscription(sample_subscription_uri)

if response is True:
  print 'Subscription successfully deleted'

Bật tính năng tương tác của người dùng

Cấu hình người dùng

Truy xuất hồ sơ của người dùng

Để tìm nạp hồ sơ YouTube của người dùng theo cách thủ công, bạn sẽ sử dụng URI sau:

http://gdata.youtube.com/feeds/api/users/username

Bạn có thể truy xuất gdata.youtube.YouTubeUserEntry bằng phương thức GetYouTubeUserEntry của đối tượng YouTubeService.

user_entry = yt_service.GetYouTubeUserEntry(username='gdpython')

# we can then write a helper function to print out the user details
def PrintUserEntry(entry):
  # print required fields where we know there will be information
  print 'URI: %s\n' % entry.id.text
  print 'Age: %s\n' % entry.age.text
  print 'Gender: %s\n' % entry.gender.text
  print 'Location: %s\n' % entry.location.text

  # check if there is information in the other fields and if so print it
  if user.first_name: 
    print 'First Name: %s\n' % user.first_name.text
  if user.last_name:
    print 'Last Name: %s\n' % user.last_name.text
  if user.relationship:
    print 'Relationship: %s\n' % user.relationship.text
  if user.description:
    print 'About me: %s\n' % user.description.text
  for link in user.link:
    if link.rel == 'related':
      print 'Website: %s\n' % link.href
  if user.company:
    print 'Company: %s\n' % user.company.text
  if user.occupation:
    print 'Occupation: %s\n' % user.occupation.text
  if user.school:
    print 'School: %s\n' % user.school.text
  if user.hobbies:
    print 'Hobbies: %s\n' % user.hobbies.text
  if user.movies:
    print 'Movies: %s\n' % user.movies.text
  if user.music:
    print 'Music: %s\n' % user.music.text
  if user.books:
    print 'Books: %s\n' % user.books.text
  if user.hometown:
    print 'Hometown: %s\n' % user.hometown.text

Danh bạ

Bạn có thể truy xuất danh sách người liên hệ của một người dùng nhất định từ URL sau:

http://gdata.youtube.com/feeds/api/users/username/contacts

Truy xuất danh bạ của người dùng

Bạn có thể dùng phương thức GetYouTubeContactFeed của đối tượng YouTubeService để truy xuất gdata.youtube.YouTubeContactFeed, bao gồm các đối tượng gdata.youtube.YouTubeContactEntry.

contact_feed = yt_service.GetYouTubeContactFeed(username='GoogleDevelopers')
for entry in contact_feed.entry:
  print entry.title.text
  # find the apprpriate category element to find out the contact type
  for category in entry.category:
    if category.scheme == 'http://gdata.youtube.com/schemas/2007/contact.cat':
      print category.term

Thêm người liên hệ

Để thêm một người liên hệ mới vào nguồn cấp dữ liệu người liên hệ của người dùng, hãy sử dụng phương thức AddContact của đối tượng YouTubeService.

new_contact = yt_service.AddContact(contact_username='GoogleDevelopers')

if isinstance(new_contact, gdata.youtube.YouTubeContactEntry)
  print 'New contact added'

Chấp nhận/từ chối một yêu cầu kết bạn

Để cập nhật một người liên hệ, hãy sử dụng phương thức UpdateContact của đối tượng YouTubeService. Bạn có thể dùng phương thức này để chấp nhận/từ chối yêu cầu liên hệ, đồng thời phân loại người liên hệ là "Bạn bè" hoặc "Gia đình". Trong ví dụ bên dưới, chúng ta chấp nhận một người liên hệ, sau đó đặt danh mục của người liên hệ đó thành "Gia đình":

# in this case user 'gdpython' has requested to be our contact
#so the original contact status is 'pending'
updated_contact = yt_service.UpdateContact('gdpython', 'accepted', 'Family')

if isinstance(updated_contact, gdata.youtube.YouTubeContactEntry)
  print 'New contact added'

Xoá người liên hệ

Để xoá một người liên hệ, hãy sử dụng phương thức DeleteContact của đối tượng YouTubeService, truyền vào tên người dùng của người liên hệ mà bạn muốn xoá.

response = yt_service.DeleteContact(contact_username='gdpython')

if response is True:
  print 'Contact deleted'

Trở lại đầu trang