2013-01-07 12 views
6

Nie można usunąć filmów, które działają, korzystając z interfejsu API danych Youtube. Używam biblioteki klienta Python.Nie można usunąć filmów za pomocą interfejsu API danych YouTube.

Wszystko to wydaje się proste od dokumentów, więc jestem naprawdę zdezorientowany, dlaczego to nie działa. Oto moja funkcja:

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 

Z dokumentów powinno to zwrócić wartość Prawda, jeśli film został pomyślnie usunięty. Zwraca jednak Brak:

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

Film wideo nie zostanie usunięty. Wiem, że poświadczenia są dobre, ponieważ są to te same dane, które wcześniej przesłałem do filmu, i wiem, że identyfikator jest dobry, ponieważ otrzymałem go bezpośrednio z mojego kanału w serwisie youtube.

Wszelkie pomysły?

Odpowiedz

4

Jestem prawie pewny, że jest to spowodowane koniecznością uzyskania wpisu wideo z pliku danych do przesłania, a nie ogólnego źródła wideo. W przeciwnym razie wpis nie jest edytowalny.

to przekłada się to

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

Python biblioteki GData klient nadal korzysta v1 API danych, która została zaniechana przez długi czas, a biblioteka klient w ogóle nie jest dobrze utrzymany.

Polecam przełączenie na v3 i odpowiadającą, ponieważ jest to zdecydowanie środowisko przyszłości. Mamy handful of Python samples available now, a jednocześnie nie jest specjalnie jednego do usuwania wideo, powinien on wyglądać

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

(zakładając youtube jest właściwie upoważniony interfejsu klienta YouTube, po istniejących przykładów na tej stronie).

+0

To zadziałało, wielkie dzięki! Spojrzymy na migrację do wersji v3, gdy tylko mamy wolną chwilę ... niestety ten czas nie jest teraz :) –

Powiązane problemy