2013-01-07 28 views
6

Không thể xóa video để hoạt động bằng API dữ liệu Youtube. Tôi đang sử dụng Thư viện khách hàng Python.Không thể xóa video bằng API dữ liệu Youtube

Tất cả điều này có vẻ trực tiếp từ tài liệu, vì vậy tôi thực sự bối rối là tại sao nó không hoạt động. Đây là chức năng của tôi:

def delete_youtube_video_by_id(video_id): 
    yt_service = gdata.youtube.service.YouTubeService() 
    yt_service.email = YOUTUBE_EMAIL 
    yt_service.password = YOUTUBE_SECRET_PASSWORD 
    yt_service.source = YOUTUBE_SOURCE 
    yt_service.developer_key = YOUTUBE_SECRET_DEVELOPER_KEY 
    yt_service.client_id = YOUTUBE_CLIENT_ID 
    yt_service.ProgrammaticLogin() 
    video_entry = yt_service.GetYouTubeVideoEntry(video_id=video_id) 
    response = yt_service.DeleteVideoEntry(video_entry) 
    return response 

Từ tài liệu, điều này sẽ trả về True nếu video bị xóa thành công. Tuy nhiên, nó trả về None:

>>> response = delete_youtube_video_by_id('my_youtube_video_id') 
>>> type(response) 
<type 'NoneType'> 
>>> 

Và video sẽ không bị xóa. Tôi biết thông tin đăng nhập là tốt, bởi vì họ là những thông tin tương tự tôi đã sử dụng để tải lên video ngay từ đầu và tôi biết id là tốt, bởi vì tôi nhận được nó trực tiếp từ kênh của tôi trong youtube.

Bất kỳ ý tưởng nào?

Trả lời

4

Tôi khá chắc chắn rằng điều này là do cần phải nhận được mục nhập video từ nguồn cấp dữ liệu tải lên của bạn chứ không phải nguồn cấp dữ liệu video chung. Nếu không, mục nhập sẽ không thể chỉnh sửa được.

này sẽ dịch để

video_entry = yt_service.GetYouTubeVideoEntry('https://gdata.youtube.com/feeds/api/users/default/uploads/VIDEO_ID')

Các Python GData thư viện khách hàng vẫn sử dụng v1 của API dữ liệu, trong đó đã bị phản đối trong một thời gian dài bây giờ, và thư viện khách hàng nói chung là không nổi được duy trì.

Tôi khuyên bạn nên chuyển sang v3new client library tương ứng vì đó chắc chắn là môi trường của tương lai. Chúng tôi có một handful of Python samples available now, và trong khi có không phải là đặc biệt một để xóa một đoạn video, nó sẽ giống như

youtube.videos().delete(id=VIDEO_ID).execute()

(giả sử youtube là một giao diện client YouTube ủy quyền đúng cách, sau những ví dụ hiện trên trang đó).

+0

Điều này hiệu quả, cảm ơn rất nhiều! Chúng tôi sẽ xem xét chuyển sang v3 khi chúng tôi có thời gian rảnh rỗi ... tiếc là thời gian đó hiện không phải là :) –

Các vấn đề liên quan