Example #1
0
        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);
        }
Example #2
0
        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;
        }
Example #4
0
        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();
        }
Example #5
0
        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("");
            }
        }
Example #6
0
        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);
            }
        }
Example #7
0
        /// <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();
        }
Example #8
0
        /// <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()));
        }
Example #10
0
        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);
            }
        }
Example #11
0
 public async Task <IPlaylist> AddNewPlaylist(string title, string description, PrivacyStatus privacyStatus)
 {
     return(await _remoteDataSource.AddNewPlaylist(title, description, privacyStatus));
 }
Example #12
0
 public Task <IPlaylist> AddNewPlaylist(string title, string description, PrivacyStatus privacyStatus)
 {
     return(new Task <IPlaylist>(() => MPlaylist.Empty));
 }
Example #13
0
        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);
        }
Example #14
0
        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));
        }
Example #15
0
        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);
            }
        }
Example #16
0
        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");
        }
Example #17
0
        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;
            }
        }
Example #18
0
        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, "更新工作经历隐私设置成功"));
        }
Example #19
0
        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("");
            }
        }