参考:http://www.cstruter.com/blog/313
/*
1.下载Google Data API(http://code.google.com/p/google-gdata/downloads/list)
2.获得Developer key(https://code.google.com/apis/youtube/dashboard)
3.上傳后Video的路徑(http://www.youtube.com/embed/<%=Id%>)
*/
string pDeveloperKey = "************************************";
//YouTube的帳號和密碼(可以用googel帳號)
string pUserName = "****************";
string pPassword = "**********";
private void btnUpload_Click(object sender, EventArgs e)
{
Upload();
}
/// <summary>
/// 上傳
/// </summary>
private void Upload() {
YouTubeRequestSettings settings = new YouTubeRequestSettings("WFAppUpload", pDeveloperKey, pUserName, pPassword);
YouTubeRequest request = new YouTubeRequest(settings);
Video newVideo = new Video();
//必須提供這4個屬性(Title,Description,Category,Keywords)
newVideo.Title = "Wildlife";
//至少指定一個分類
newVideo.Tags.Add(new MediaCategory("Animals", YouTubeNameTable.CategorySchema));
newVideo.Keywords = "野生生物";
newVideo.Description = "House,马";
newVideo.YouTubeEntry.Private = false;
//檔上傳文件很大時,設置timeout
// ((GDataRequestFactory)request.Service.RequestFactory).Timeout = 9999999;
newVideo.YouTubeEntry.MediaSource = new MediaFileSource("D:\\flv\\test.flv", "application/octet-stream");
Video createdVideo = request.Upload(newVideo);
//檔文檔上傳成功后,或返回一個Id和Status(200時表示上傳成功吧!!!)
this.txtID.Text = createdVideo.Id;//tag:youtube.com,2008:video:RmVU96iTCEg
//Google.GData.YouTube.State for: http://gdata.youtube.com/schemas/2007- state for: http://gdata.youtube.com/schemas/2007 - state
this.txtName.Text = createdVideo.Status.ToString();
}
/// <summary>
/// 獲得所有上傳的檔案
/// </summary>
/// <returns></returns>
private IEnumerable<Video> ListMyVideos()
{
YouTubeRequestSettings settings = new YouTubeRequestSettings("WFAppUpload", pDeveloperKey, pUserName, pPassword);
YouTubeRequest request = new YouTubeRequest(settings);
YouTubeQuery query = new YouTubeQuery(YouTubeQuery.DefaultUploads);
Feed<Video> feed = request.Get<Video>(query);
return feed != null ? feed.Entries : null;
}
/// <summary>
/// 通過YouTube的用戶名和id獲得Video
/// </summary>
/// <param name="uploader">用戶名,不是帳號哦!</param>
/// <param name="videoID"></param>
/// <returns></returns>
private Video GetMyVideo(string uploader, string videoID)
{
YouTubeRequestSettings settings = new YouTubeRequestSettings("WFAppUpload", pDeveloperKey, pUserName, pPassword);
YouTubeRequest request = new YouTubeRequest(settings);
Uri uri = new Uri(String.Format("http://gdata.YouTube.com/feeds/api/users/{0}/uploads/{1}", uploader, videoID));
return request.Retrieve<Video>(uri);
}
/// <summary>
/// 移除
/// </summary>
private void Remove(Video video)
{
YouTubeRequestSettings settings = new YouTubeRequestSettings("WFAppUpload", pDeveloperKey, pUserName, pPassword);
YouTubeRequest request = new YouTubeRequest(settings);
request.Delete(video);
}
/// <summary>
/// 修改
/// </summary>
private void Update(Video video, string title, string description)
{
YouTubeRequestSettings settings = new YouTubeRequestSettings("WFAppUpload", pDeveloperKey, pUserName, pPassword);
YouTubeRequest request = new YouTubeRequest(settings);
video.Title = title;
video.Description = description;
request.Update(video);
}