2013-06-29 57 views
-3

我想从我的YouTube频道中删除视频选择了哪些视频ID,但属性ListBox已启用,代码无效,是否有其他解决方案?我得到这样一个错误,如下所示:C#Youtube-我想从我的Youtube频道中删除视频

Execution of request failed: http://gdata.youtube.com/feeds/api/users/xxxxxx/uploads/System.Windows.Forms.ListBox+SelectedObjectCollection

这里是我的代码:

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); 
} 

代码填充CheckedListBox

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); 
} 

回答

2

好...我认为这里的关键是从obj中获取数据ect collection - 一个简单的方法就是用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。

+0

感谢您的帮助,我会试一试 –

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); 







      }