2013-06-29 3 views
-3

Я хочу удалить видео с моего канала YouTube, для которых выбраны идентификаторы видео, хотя MultiSelection свойство 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

Ok ... Я думаю, что ключом здесь является получение данных из obj ect collection - и простой способ сделать это с помощью цикла foreach. Я не знаком с API YouTube, поэтому не знаю, в каком формате он ожидает идентификатор видео (для нескольких видео), но для целей этого примера я буду использовать запятую.

string videoIDs = ""; 

foreach (object vidID in list.CheckedItems) 
{ 

    videoIDs = videoIDs + vidID.ToString() + ","; 
} 

videoIDs = videoIDs.Substring(0, videoIDs.Length - 1); 

В принципе, приведенный выше код петли через CheckedListBox.CheckedItemCollection и получает идентификаторы видео, которое является то, что вы храните в CheckedBoxList из кода вы предоставили.

Тогда вы можете просто использовать videoIDs строку в коде:

Uri videoEntryUrl = new Uri(String.Format("http://gdata.youtube.com/feeds/api/users/{0}/uploads/{1}", my channel name, videoIDs)); 

Опять же, это общий подход - вам нужно будет изменить код, чтобы соответствовать API YouTube.

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







      } 
Смежные вопросы