Использование Python GData API не может получить редактируемую запись видео - PullRequest
3 голосов
/ 12 декабря 2011

У меня проблемы с получением записи видео, которая включает ссылку rel = "edit". Мне нужна такая запись, чтобы можно было набрать DeleteVideoEntry(...).

Я получаю видео, используя GetYouTubeVideoEntry(youtube_id=XXXXXXX). Мой yt_service инициализируется с именем пользователя, паролем и ключом разработчика. Я использую ProgrammaticLogin. Эта часть, кажется, работает нормально. Я использую тот же yt_service для загрузки указанного видео ранее. Кроме того, если я изменяю ключ разработчика на что-то поддельное (во время отладки) и пытаюсь аутентифицироваться, я получаю ошибку 403. Это заставляет меня поверить, что аутентификация работает нормально.

Нет необходимости говорить, что запись видео, полученная с помощью GetYouTubeVideoEntry(youtube_id=XXXXXXX), не содержит ссылку для редактирования, и я не могу использовать запись в вызове DeleteVideoEntry(...).

Есть ли какой-то особый способ получить запись о видео, которая будет содержать элемент ссылки с rel = "edit"? Кто-нибудь может предложить какой-то способ решить мою проблему? Может ли это быть ошибкой?

Обновление:

Что касается записей, когда я пытался получить фид всех своих загрузок, а затем перебирать записи видео, записи видео имеют ссылку для редактирования. Таким образом, используя это работает:

uri = 'http://gdata.youtube.com/feeds/api/users/%s/uploads' % username
feed = yt_service.GetYouTubeVideoFeed(uri)
for entry in feed.entry:
   yt_service.DeleteVideoEntry(entry)

Но это не так:

entry = yt_service.GetYouTubeVideoEntry(video_id = video.youtube_id)
yt_service.DeleteVideoEntry(entry)

Используя тот же yt_service.

Ответы [ 2 ]

6 голосов
/ 17 декабря 2011

Я только что удалил видео с YouTube, используя gdata и ProgrammaticLogin ()

Вот несколько шагов для воспроизведения:

import gdata.youtube.service
yt_service = gdata.youtube.service.YouTubeService()

yt_service.developer_key = 'developer_key'
yt_service.email = 'email'
yt_service.password = 'password'
yt_service.ProgrammaticLogin()


# video_id should looks like 'iu6Gq-tUsTc'
uri = 'https://gdata.youtube.com/feeds/api/users/%s/uploads/%s' % (username, video_id)  
entry = yt_service.GetYouTubeUserEntry(uri=uri)
response = yt_service.DeleteVideoEntry(entry)
print response  # True

yt_service.GetYouTubeVideoFeed(uri) работает, потому что GetYouTubeVideoFeed не проверяетУри и просто звонит self.Get(uri, ...) но оригинально, я думаю, он ожидал 'https://gdata.youtube.com/feeds/api/videos' Ури.

наоборот yt_service.GetYouTubeVideoEntry() использовать YOUTUBE_VIDEO_URI = 'https://gdata.youtube.com/feeds/api/videos', но эта запись не содержит rel="edit"

Надеюсь, это поможет вам

1 голос
/ 12 декабря 2011

Вы можете просмотреть заголовки HTTP сгенерированных запросов, установив для флага отладки значение true. Это так просто, как:

 yt_service = gdata.youtube.service.YouTubeService()
 yt_service.debug = True

Вы можете прочитать об этом в документации здесь.

...