2012-01-03 51 views
5

刪除從我的YouTube頻道的視頻這是我的代碼:我想用API

YouTubeService serv = new YouTubeService("myDeleteService", YOUTUBE_DEVELOPER_KEY);    
serv.setUserCredentials(USERNAME, PASSWORD); 
YouTubeRequestSettings settings = new YouTubeRequestSettings(YOUTUBE_CHANNEL, YOUTUBE_DEVELOPER_KEY); 
YouTubeRequest request = new YouTubeRequest(settings); 
string feedUrl = String.Format("http://gdata.youtube.com/feeds/api/users/{0}/uploads", YOUTUBE_CHANNEL); 
Feed<Video> videoFeed = request.Get<Video>(new Uri(feedUrl)); 
Uri videoEntryUrl = new Uri("http://gdata.youtube.com/feeds/api/videos/" + VideoId); 
Video video = request.Retrieve<Video>(videoEntryUrl); 
Video vid = (from vi in videoFeed.Entries 
      where vi.VideoId == VideoId 
      select vi).First<Google.YouTube.Video>(); 
request.Delete(vid); 

在最後一行指出,對象引用的代碼中斷未設置爲一個對象。

回答

4

這似乎是Google YouTube API內部的一個問題。我有好的請求和視頻對象的問題。 (Google API v1.9.0.0)

更新:查看下面的Claudio的回覆。它是正確的。我從支持收到一封電子郵件,回,忘了更新這樣的回答:

這個URI將失敗: 「http://gdata.youtube.com/feeds/api/videos/」 + VideoID的

這將工作: 「http://gdata.youtube.com/feeds/api/users/」 +帳戶名+ 「/上傳/」 + VideoID的

+0

任何解決方案?我遇到了同樣的問題。 – 2012-02-17 23:11:39

+0

我也得到這個錯誤。你的解決方案真的幫助我。 +1爲你提供幫助 – Sukhjeevan 2012-07-05 06:26:14

0

這意味着您的LINQ查詢可能沒有返回任何內容,即null。檢查調試器中的vid變量或更好,然後放一個if條件來查看vid是否具有有效值。

+0

如果最後一行是錯誤所在,它給了他一個空的例外則其請求對象也可能爲null。如果視頻爲空,那麼編程就會很差,從而導致發生異常。 – 2012-01-03 13:15:14

1

我有以下幾點:

CreateAuthenticatedRequest().Service.Delete(new Uri(GetVideoUploadUrl(videoId))); 

    public static YouTubeRequest CreateAuthenticatedRequest() 
    { 
     YouTubeRequestSettings settings = new YouTubeRequestSettings(ConfigurationManager.AppSettings["GData.AppName"], ConfigurationManager.AppSettings["GData.DeveloperKey"], ConfigurationManager.AppSettings["GData.Email"], ConfigurationManager.AppSettings["GData.Password"]); 
     settings.Timeout = 1000000; 
     return new YouTubeRequest(settings); 
    } 

    private static string GetVideoUploadUrl(string videoId) 
    { 
     return string.Format("http://gdata.youtube.com/feeds/api/users/default/uploads/{0}", videoId); 
    } 
3

的刪除方法如果您使用正確的網址,即從/上傳費用中按預期方式運行d。

/videos中的條目沒有編輯網址,它必須用於發送刪除請求。我剛剛更新了庫(修訂版1169),以返回更有意義的ArgumentNullException,而不是泛型空引用。

請使用此代碼刪除您上傳的視頻:

YouTubeRequestSettings settings = new YouTubeRequestSettings(YOUTUBE_CHANNEL, YOUTUBE_DEVELOPER_KEY, USERNAME, PASSWORD); 
YouTubeRequest request = new YouTubeRequest(settings); 
Uri videoEntryUrl = new Uri(String.Format("http://gdata.youtube.com/feeds/api/users/{0}/uploads/{1}", YOUTUBE_CHANNEL, VIDEO_ID)); 
Video video = request.Retrieve<Video>(videoEntryUrl); 
request.Delete(video); 
0

我花了5個多小時試圖刪除視頻官方示例代碼:

YouTubeRequestSettings settings = new YouTubeRequestSettings(YOUTUBE_CHANNEL, YOUTUBE_DEVELOPER_KEY, USERNAME, PASSWORD); 
YouTubeRequest request = new YouTubeRequest(settings); 
Uri videoEntryUrl = new Uri(String.Format("http://gdata.youtube.com/feeds/api/users/{0}/uploads/{1}", YOUTUBE_CHANNEL, VIDEO_ID)); 
Video video = request.Retrieve<Video>(videoEntryUrl); 
request.Delete(video); 

,我不得不和異常與410狀態碼。我不知道爲什麼,但根據ScottE回答這個代碼刪除視頻:

YouTubeRequestSettings settings = new YouTubeRequestSettings(YOUTUBE_CHANNEL, YOUTUBE_DEVELOPER_KEY, USERNAME, PASSWORD); 
YouTubeRequest request = new YouTubeRequest(settings); 
Uri uri = new Uri(String.Format("http://gdata.YouTube.com/feeds/api/users/default/uploads/{0}", videoId)); 
request.Service.Delete(uri); 

所以我用request.Service.Delete(uri);除了request.Delete(video);