我想从我的YouTube频道中删除已选择视频ID的视频,但MultiSelection
的{{1}}属性已启用,代码无效,是否有其他解决方案?我得到如下错误:
ListBox
这是我的代码:
Execution of request failed: http://gdata.youtube.com/feeds/api/users/xxxxxx/uploads/System.Windows.Forms.ListBox+SelectedObjectCollection
填充CheckedListBox的代码
public void delete()
{
YouTubeRequestSettings settings = new YouTubeRequestSettings(my app name,
my dev key,
my username,
my password);
YouTubeRequest request = new YouTubeRequest(settings);
Uri videoEntryUrl = new Uri(String.Format("http://gdata.youtube.com/feeds/api/users/{0}/uploads/{1}", my channel name, list.checkedItems));
Video video = request.Retrieve<Video>(videoEntryUrl);
request.Delete(video);
}
答案 0 :(得分:2)
好的......我认为这里的关键是从对象集合中获取数据 - 一种简单的方法是使用foreach
循环。我不熟悉YouTube API,因此我不知道它对于视频ID的格式(对于多个视频),但是对于此示例的目的,我将使用逗号。
string videoIDs = "";
foreach (object vidID in list.CheckedItems)
{
videoIDs = videoIDs + vidID.ToString() + ",";
}
videoIDs = videoIDs.Substring(0, videoIDs.Length - 1);
基本上,上面的代码循环遍历CheckedListBox.CheckedItemCollection
并获取视频ID,这是您从CheckedBoxList中存储的代码。
然后您只需在代码中使用videoIDs
字符串:
Uri videoEntryUrl = new Uri(String.Format("http://gdata.youtube.com/feeds/api/users/{0}/uploads/{1}", my channel name, videoIDs));
同样,这是一种通用方法 - 您需要修改代码以适应YouTube API。
答案 1 :(得分:0)
Feed<Video> videoFeed;
string feedUrl = "https://gdata.youtube.com/feeds/api/users/default/uploads";
videoFeed = request.Get<Video>(new Uri(feedUrl));
foreach (Video entry in videoFeed.Entries)
{
list.Items.Add(entry.VideoId,0);
}