使用可恢复上传将视频添加到播放列表

时间:2012-12-21 13:18:39

标签: c# youtube-api

使用可恢复上传时,是否有人知道如何将视频添加到播放列表?

让我说清楚。以下是我的代码。

Video newVideo = new Video();
newVideo.Title = fileName.Split(".".ToCharArray())[0];
newVideo.Tags.Add(new MediaCategory("Nonprofit", YouTubeNameTable.CategorySchema));
newVideo.Description = DateTime.Now.ToShortDateString();
newVideo.YouTubeEntry.Private = false;
ResumableUploader m_ResumableUploader = null;
Authenticator YouTubeAuthenticator;

m_ResumableUploader = new ResumableUploader(100); //chunksize 1 MB
m_ResumableUploader.AsyncOperationCompleted += new AsyncOperationCompletedEventHandler(m_ResumableUploader_AsyncOperationCompleted);
m_ResumableUploader.AsyncOperationProgress += new AsyncOperationProgressEventHandler(m_ResumableUploader_AsyncOperationProgress);

YouTubeAuthenticator = new ClientLoginAuthenticator("YouTubeUploader", ServiceNames.YouTube, ConfigurationManager.AppSettings["USERNAME"].ToString(), ConfigurationManager.AppSettings["PASSWORD"].ToString());

YouTubeAuthenticator.DeveloperKey = ConfigurationManager.AppSettings["DEVELOPER_KEY"].ToString();
string contentType = MediaFileSource.GetContentTypeForFileName(fileName);
newVideo.MediaSource = new MediaFileSource(filePath, contentType);

AtomLink link = new AtomLink("http://uploads.gdata.youtube.com/resumable/feeds/api/users/<username>/uploads");
link.Rel = ResumableUploader.CreateMediaRelation;
newVideo.YouTubeEntry.Links.Add(link);

System.IO.FileStream stream = new System.IO.FileStream(filePath, System.IO.FileMode.Open, System.IO.FileAccess.Read);

m_ResumableUploader.InsertAsync(YouTubeAuthenticator, newVideo.YouTubeEntry, new object());  

我正在尝试将视频直接上传到播放列表。

我正在查看此代码,我很难连接这两个代码。需要帮助。

https://developers.google.com/youtube/2.0/developers_guide_dotnet

将视频添加到播放列表

您可以使用PlayListMember对象将视频添加到播放列表。以下代码创建具有已知ID值的PlayListMember对象,然后将其添加到播放列表对象(p)。由于请求未指定视频将在播放列表中显示的位置,因此新视频将添加到播放列表的末尾。

 // For Playlist object p
 PlayListMember pm = new PlayListMember();
 // Insert <id> or <videoid> for video here
 pm.Id = VIDEOID;
 request.AddToPlaylist(p, pm);

更新1 - 添加到播放列表时出现“不支持的URI格式”错误。

YouTubeRequestSettings ys = new YouTubeRequestSettings("YouTubeUploader",
ConfigurationManager.AppSettings["DEVELOPER_KEY"].ToString());
YouTubeRequest ytr = new YouTubeRequest(ys);
Video v = ytr.ParseVideo(e.ResponseStream);                  
PlayListMember pm = new PlayListMember();
Feed<Playlist> userPlaylists = ytr.GetPlaylistsFeed(ytr.Credentials.Username);
foreach (Playlist p in userPlaylists.Entries)
{
     fs.WriteLine(p.Title);
     if (p.Title == "Test 2")
     {
          pm.Id = v.VideoId;
          ytr.AddToPlaylist(p, pm);

          fs.WriteLine("Added To Playlist ");
     }
}

2 个答案:

答案 0 :(得分:1)

我明白了。 YouTube上的代码中包含错误。它告诉您将PlayListMember id设置为VIDEOID。

 // For Playlist object p
 PlayListMember pm = new PlayListMember();
 // Insert <id> or <videoid> for video here
 pm.Id = VIDEOID;
 request.AddToPlaylist(p, pm);

这是不正确的。您需要将VIDEOID设置为PlayListMember VideoID

 // For Playlist object p
 PlayListMember pm = new PlayListMember();
 // Insert <id> or <videoid> for video here
 pm.VideoId = VIDEOID;
 request.AddToPlaylist(p, pm);

答案 1 :(得分:0)

这两个操作的链接是视频ID。您需要从第一部分(上传)获取视频ID并将其提供给第二部分(播放列表插入)。因此,问题归结为在使用.NET客户端库执行可恢复上载时如何获取新视频的视频ID。

我认为此示例代码专门处理:http://code.google.com/p/google-gdata/source/browse/trunk/clients/cs/samples/YouTubeUploader/YouTubeUploader/insertandretry.cs#169