public async Task <string> CreatePlaylist(string title, string description, PrivacyStatus privacyStatus = PrivacyStatus.Private, List <string> videoIds = null, string sourcePlaylist = null) { string url = GetYTMUrl("playlist/create"); var data = JObject.FromObject(new { title = title, description = description, privacyStatus = privacyStatus, }); if (videoIds != null) { data.Merge(JObject.FromObject(new { videoIds = videoIds })); } if (sourcePlaylist != null) { data.Merge(JObject.FromObject(new { sourcePlaylist = sourcePlaylist })); } var response = await Post <BrowseResponse>(url, data, authRequired : true); return(response.PlaylistId); }
public async Task <string> UploadPostVideoAsync(string description, string postId, IFormFile file) { string[] tags1 = new string[1] { postId }; var title = file.FileName; PrivacyStatus privacyStatus = PrivacyStatus.Unlisted; return(await RunPostAsync(title, description, tags1, privacyStatus, file)); }
public AccessItem(PrivacyStatus status) { Status = status; if (status == PrivacyStatus.Private) { Access = AppResources.StatusPrivate; return; } Access = AppResources.StatusPublic; }
public void UploadProfileVideoTask(string description, string profileId, IFormFile file) { string[] tags1 = new string[1] { profileId }; var title = file.FileName; PrivacyStatus privacyStatus = PrivacyStatus.Unlisted; Run(title, description, tags1, privacyStatus, file).Wait(); }
public static string GetPrivacyStatus(this PrivacyStatus ps) { switch (ps) { case PrivacyStatus.Public: return("public"); case PrivacyStatus.Private: return("private"); case PrivacyStatus.Unlisted: return("unlisted"); default: return(""); } }
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { if (value is PrivacyStatus) { PrivacyStatus status = (PrivacyStatus)value; writer.WriteValue(status.GetAttribute <EnumMemberAttribute>().Value); } if (value is License) { License lic = (License)value; writer.WriteValue(lic.GetAttribute <EnumMemberAttribute>().Value); } }
/// <summary> /// Initializes a new instance of the <see cref="MediaItem"/> class. /// </summary> /// <param name="model">The model.</param> public MediaItem(Data.MediaItem model, IValidator <MediaItem> validator, IMessenger messenger) : base(model, validator, messenger) { _location = model.Location; _description = model.Description; _title = model.Title; _sequence = model.Sequence; _duration = TimeSpan.FromTicks(model.Duration); _privacyStatus = (PrivacyStatus)model.PrivacyStatus; _createdBy = model.CreatedBy; _createdOn = model.CreatedOn; _updatedBy = model.UpdatedBy; _updatedOn = model.UpdatedOn; Validate(); }
/// <summary> /// Initializes a new instance of the <see cref="MediaItem"/> class. /// </summary> /// <param name="model">The model.</param> public MediaItem(Data.MediaItem model, IValidator <MediaItem> validator, IPlaylistContext context) : base(model, validator) { _id = model.Id; _playlistId = model.PlaylistId; _location = model.Location; _description = model.Description; _title = model.Title; _sequence = model.Sequence; _duration = TimeSpan.FromTicks(model.Duration); _privacyStatus = (PrivacyStatus)model.PrivacyStatus; _createdBy = model.CreatedBy; _createdOn = model.CreatedOn; _updatedBy = model.UpdatedBy; _updatedOn = model.UpdatedOn; _context = context ?? throw new ArgumentNullException(nameof(context)); Validate(); }
/// <summary> /// 输出审核图标的方法 /// </summary> /// <param name="htmlHelper"></param> /// <param name="auditStatus">审核状态</param> /// <returns>审核图标</returns> public static MvcHtmlString PrivacyStatusIcon(this HtmlHelper htmlHelper, PrivacyStatus privacyStatus) { TagBuilder span = new TagBuilder("span"); switch (privacyStatus) { case PrivacyStatus.Part: span.MergeAttribute("class", "tn-icon tn-icon-limit tn-icon-inline"); span.MergeAttribute("title", "部分人可见"); break; case PrivacyStatus.Private: span.MergeAttribute("class", "tn-icon-colorful tn-icon-colorful-secret tn-icon-inline"); span.MergeAttribute("title", "仅自己可见"); break; default: break; } return(new MvcHtmlString(span.ToString())); }
public async Task <IPlaylist> AddNewPlaylist(string title, string description, PrivacyStatus privacyStatus) { // Create a new, private playlist in the authorized user's channel. if (string.IsNullOrEmpty(title)) { return(null); } try { var newPlaylist = new Playlist(); newPlaylist.Snippet = new PlaylistSnippet(); newPlaylist.Snippet.Title = title; newPlaylist.Snippet.Description = description; newPlaylist.Status = new PlaylistStatus(); newPlaylist.Status.PrivacyStatus = privacyStatus.ToString().ToLower();// "public"; newPlaylist = await _youTubeService.Playlists.Insert(newPlaylist, "snippet,status,contentDetails,id").ExecuteAsync(); return(new MPlaylist(newPlaylist)); } catch (Exception e) { throw new LiteTubeException(e); } }
public async Task <IPlaylist> AddNewPlaylist(string title, string description, PrivacyStatus privacyStatus) { return(await _remoteDataSource.AddNewPlaylist(title, description, privacyStatus)); }
public Task <IPlaylist> AddNewPlaylist(string title, string description, PrivacyStatus privacyStatus) { return(new Task <IPlaylist>(() => MPlaylist.Empty)); }
public static bool AddPlaylist(YouTubeSession session, string title, string description, PrivacyStatus privacyStatus) { if (privacyStatus == PrivacyStatus.Unlisted) { return(false); } Google.Apis.YouTube.v3.Data.Playlist pl = new Google.Apis.YouTube.v3.Data.Playlist(); pl.Snippet = new Google.Apis.YouTube.v3.Data.PlaylistSnippet() { Title = title, Description = description }; pl.Status = new Google.Apis.YouTube.v3.Data.PlaylistStatus() { PrivacyStatus = privacyStatus.GetPrivacyStatus() }; var insert = session.YouTubeService.Playlists.Insert(pl, "snippet,status"); return(insert.Execute() != null); }
public override TaskStatus Run() { Info("Uploading videos..."); bool succeeded = true; bool atLeastOneSucceed = false; try { var files = SelectFiles(); foreach (var file in files) { try { XDocument xdoc = XDocument.Load(file.Path); foreach (var xvideo in xdoc.XPathSelectElements("/Videos/Video")) { string title = xvideo.Element("Title").Value; string desc = xvideo.Element("Description").Value; string[] tags = xvideo.Element("Tags").Value.Split(','); string categoryId = xvideo.Element("CategoryId").Value; PrivacyStatus ps = (PrivacyStatus)Enum.Parse(typeof(PrivacyStatus), xvideo.Element("PrivacyStatus").Value); string filePath = xvideo.Element("FilePath").Value; var succeededTask = UploadVideo(title, desc, tags, categoryId, ps, filePath); succeededTask.Wait(); succeeded &= succeededTask.Result; if (succeeded && !atLeastOneSucceed) { atLeastOneSucceed = true; } } } catch (ThreadAbortException) { throw; } catch (Exception e) { ErrorFormat("An error occured while uploading the file {0}: {1}", file.Path, e.Message); succeeded = false; } } } catch (ThreadAbortException) { throw; } catch (Exception e) { ErrorFormat("An error occured while uploading videos: {0}", e.Message); return(new TaskStatus(Status.Error)); } var status = Status.Success; if (!succeeded && atLeastOneSucceed) { status = Status.Warning; } else if (!succeeded) { status = Status.Error; } Info("Task finished."); return(new TaskStatus(status)); }
private async System.Threading.Tasks.Task <bool> UploadVideo(string title, string desc, string[] tags, string categoryId, PrivacyStatus ps, string filePath) { try { InfoFormat("Uploading the video file {0} to YouTube started...", filePath); Info("Authentication started..."); UserCredential credential; using (var stream = new FileStream(ClientSecrets, FileMode.Open, FileAccess.Read)) { credential = await GoogleWebAuthorizationBroker.AuthorizeAsync( GoogleClientSecrets.Load(stream).Secrets, // This OAuth 2.0 access scope allows an application to upload files to the // authenticated user's YouTube channel, but doesn't allow other types of access. new[] { YouTubeService.Scope.YoutubeUpload }, User, CancellationToken.None ); } Info("Authentication succeeded."); var youtubeService = new YouTubeService(new BaseClientService.Initializer() { HttpClientInitializer = credential, ApplicationName = ApplicationName, }); var video = new Video { Snippet = new VideoSnippet() }; video.Snippet.Title = title; video.Snippet.Description = desc; video.Snippet.Tags = tags; video.Snippet.CategoryId = categoryId; // See https://developers.google.com/youtube/v3/docs/videoCategories/list video.Status = new VideoStatus { PrivacyStatus = ps.ToString().ToLower() // "unlisted" or "private" or "public" }; using (var fileStream = new FileStream(filePath, FileMode.Open)) { var videosInsertRequest = youtubeService.Videos.Insert(video, "snippet,status", fileStream, "video/*"); videosInsertRequest.ResponseReceived += VideosInsertRequest_ResponseReceived; var res = videosInsertRequest.Upload(); if (res.Exception != null) { ErrorFormat("An error occured while uploading the file {0}: {1}", filePath, res.Exception.Message); return(false); } } InfoFormat("Uploading the video file {0} to YouTube succeeded.", filePath); return(true); } catch (ThreadAbortException) { throw; } catch (Exception e) { ErrorFormat("An error occured while uploading the video file {0}: {1}", filePath, e.Message); return(false); } }
public ActionResult _PrivacyStatusSetter(long userId, string itemName, PrivacyStatus itemPrivacyStatus, string selectedUserIds = null, string selectedUserGroupIds = null) { List<SelectListItem> selectListItems = new List<SelectListItem> { new SelectListItem{ Text = "所有人可见", Value = PrivacyStatus.Public.ToString()}, new SelectListItem{ Text = "部分人可见", Value = PrivacyStatus.Part.ToString()}, new SelectListItem{ Text = "仅自己可见", Value = PrivacyStatus.Private.ToString()} }; List<SelectListItem> followSelectListItems = new List<SelectListItem> { new SelectListItem{ Text = "所有人可见", Value = PrivacyStatus.Public.ToString()}, new SelectListItem{ Text = "仅自己可见", Value = PrivacyStatus.Private.ToString()} }; if (itemName != PrivacyItemKeys.Instance().Follow()) { ViewData[itemName] = new SelectList(selectListItems, "Value", "Text", itemPrivacyStatus); } else { if (itemPrivacyStatus == PrivacyStatus.Part) itemPrivacyStatus = PrivacyStatus.Public; ViewData[itemName] = new SelectList(followSelectListItems, "Value", "Text", itemPrivacyStatus); } Dictionary<int, Dictionary<long, string>> userPrivacySpecifyObjects = new Dictionary<int, Dictionary<long, string>>(); List<long> userIds = new List<long>(); List<long> groupIds = new List<long>(); string[] splitGroupIds = new string[0]; if (!string.IsNullOrEmpty(selectedUserGroupIds)) splitGroupIds = selectedUserGroupIds.Split(new char[] { ',' }, System.StringSplitOptions.RemoveEmptyEntries); groupIds.AddRange(splitGroupIds.Select(n => { long id = 0; long.TryParse(n, out id); return id; }).Where(n => n != 0)); string[] splitUserIds = new string[0]; if (!string.IsNullOrEmpty(selectedUserIds)) splitUserIds = selectedUserIds.Split(new char[] { ',' }, System.StringSplitOptions.RemoveEmptyEntries); userIds.AddRange(splitUserIds.Select(n => { long id = 0; long.TryParse(n, out id); return id; }).Where(n => n > 0)); if (splitGroupIds.Length > 0 || splitUserIds.Length > 0) itemPrivacyStatus = PrivacyStatus.Part; IUserService userService = DIContainer.Resolve<IUserService>(); IEnumerable<User> users = userService.GetFullUsers(userIds); if (users.Count() > 0) userPrivacySpecifyObjects[SpecifyObjectTypeIds.Instance().User()] = users.ToDictionary(k => k.UserId, v => v.DisplayName); if (!groupIds.Contains(FollowSpecifyGroupIds.All) && itemPrivacyStatus == PrivacyStatus.Part) { Dictionary<long, string> categary = new Dictionary<long, string>(); foreach (long categoryId in groupIds.Distinct()) { if (categoryId == FollowSpecifyGroupIds.Mutual) { categary.Add(categoryId, "相互关注"); continue; } Category category = categoryService.Get(categoryId); if (category != null) categary.Add(category.CategoryId, category.CategoryName); } if (categary.Count > 0) userPrivacySpecifyObjects[SpecifyObjectTypeIds.Instance().UserGroup()] = categary; } else { Dictionary<long, string> categary = new Dictionary<long, string>(); categary.Add(FollowSpecifyGroupIds.All, "我关注的所有人"); userPrivacySpecifyObjects[SpecifyObjectTypeIds.Instance().UserGroup()] = categary; } ViewData["userPrivacySpecifyObjects"] = userPrivacySpecifyObjects; ViewData["itemName"] = itemName; ViewData["userId"] = userId; ViewData["selectedUserIds"] = selectedUserIds; ViewData["selectedUserGroupIds"] = selectedUserGroupIds; return View("_PrivacyStatusSetter"); }
private async Task Run(string title, string description, string[] tags, PrivacyStatus privacyStatus, IFormFile file) { UserCredential userCredential; GoogleAuthorizationCodeFlow.Initializer initializer = new GoogleAuthorizationCodeFlow.Initializer(); initializer.ClientSecrets = new ClientSecrets() { ClientId = _youtubeClientSecret.client_id, ClientSecret = _youtubeClientSecret.client_secret }; initializer.Scopes = new string[1] { YouTubeService.Scope.YoutubeUpload }; //var token = new TokenResponse { RefreshToken = _youtubeClientSecret.token_uri }; //userCredential = new UserCredential(new GoogleAuthorizationCodeFlow( // new GoogleAuthorizationCodeFlow.Initializer // { // ClientSecrets = initializer.ClientSecrets // }), // "user", // token); string token = await GenerateTokenAsync(); if (token != "") { userCredential = new UserCredential(new GoogleAuthorizationCodeFlow(initializer), "me", new TokenResponse() { RefreshToken = token, TokenType = "Bearer", ExpiresInSeconds = new long?(3599L), AccessToken = token }); YouTubeService youtubeService = new YouTubeService(new BaseClientService.Initializer() { HttpClientInitializer = userCredential, ApplicationName = Assembly.GetExecutingAssembly().GetName().Name }); Video video = new Video() { Snippet = new VideoSnippet() }; video.Snippet.Title = title; video.Snippet.Tags = tags; video.Snippet.Description = description; video.Snippet.CategoryId = ""; video.Status = new VideoStatus { PrivacyStatus = privacyStatus.ToString() }; await Task.Run(() => { VideosResource.InsertMediaUpload insertMediaUpload = youtubeService.Videos.Insert(video, "snippet,status", file.OpenReadStream(), "video/*"); insertMediaUpload.ProgressChanged += videosInsertRequest_ProgressChanged; insertMediaUpload.ResponseReceived += VideosInsertRequest_ResponseReceived; insertMediaUpload.UploadAsync().Wait(); }); } else { return; } }
public ActionResult EditUserWorkPrivacyPrivacySetting(string spaceKey, PrivacyStatus EditUserWorkPrivacy) { long userId = UserIdToUserNameDictionary.GetUserId(spaceKey); Dictionary<string, PrivacyStatus> userSetting = new Dictionary<string, PrivacyStatus>(); userSetting.Add(PrivacyItemKeys.Instance().WorkExperience(), EditUserWorkPrivacy); Dictionary<string, IEnumerable<UserPrivacySpecifyObject>> userPrivacySpecifyObject = new Dictionary<string, IEnumerable<UserPrivacySpecifyObject>>(); if (EditUserWorkPrivacy == PrivacyStatus.Part) userPrivacySpecifyObject.Add(PrivacyItemKeys.Instance().EducationExperience(), new List<UserPrivacySpecifyObject> { GetUserPrivacySpecifyObject_AllGroup() }); privacyService.UpdateUserPrivacySettings(userId, userSetting, userPrivacySpecifyObject); return Json(new StatusMessageData(StatusMessageType.Success, "更新工作经历隐私设置成功")); }
private async Task <string> RunPostAsync(string title, string description, string[] tags, PrivacyStatus privacyStatus, IFormFile file) { try { var retryCount = 0; GoogleAuthorizationCodeFlow.Initializer initializer = new GoogleAuthorizationCodeFlow.Initializer { ClientSecrets = new ClientSecrets() { ClientId = _youtubeClientSecret.client_id, ClientSecret = _youtubeClientSecret.client_secret }, Scopes = new string[1] { YouTubeService.Scope.YoutubeUpload } }; ReGenerateToken: if (retryCount > 3) { return(""); } var token = await GenerateTokenAsync(); if (token == "") { retryCount += 1; goto ReGenerateToken; } var userCredential = new UserCredential(new GoogleAuthorizationCodeFlow(initializer), "me", new TokenResponse() { RefreshToken = token, TokenType = "Bearer", ExpiresInSeconds = new long?(3599L), AccessToken = token }); YouTubeService youtubeService = new YouTubeService(new BaseClientService.Initializer() { HttpClientInitializer = userCredential, ApplicationName = Assembly.GetExecutingAssembly().GetName().Name }); Video video = new Video() { Snippet = new VideoSnippet() }; video.Snippet.Title = title; video.Snippet.Tags = tags; video.Snippet.Description = description; video.Snippet.CategoryId = ""; video.Status = new VideoStatus { PrivacyStatus = privacyStatus.ToString() }; VideosResource.InsertMediaUpload insertMediaUpload = youtubeService.Videos.Insert(video, "snippet,status", file.OpenReadStream(), "video/*"); // insertMediaUpload.ProgressChanged += PostVideosInsertRequest_ProgressChanged; // insertMediaUpload.ResponseReceived += PostVideosInsertRequest_ResponseReceived; await insertMediaUpload.UploadAsync(); return(insertMediaUpload.ResponseBody?.Id); } catch (Exception e) { return(""); } }