예제 #1
0
        public async Task <IActionResult> ServerStatus()
        {
            var users = await userManager.GetUsersInRoleAsync(UserRoles.User);

            var admins = await userManager.GetUsersInRoleAsync(UserRoles.Admin);

            return(Ok(responseFactory.Success(new ServerStatusResponse()
            {
                Initialized = optionManager.GetGlobal(Options.Server_Initialized),
                HaveUsers = users.Count > 0,
                HaveAdmin = admins.Count > 0
            })));
        }
예제 #2
0
        private IEnumerable <string> ResolveDownloadOptions(Video video)
        {
            yield return("--no-color");

            // TODO: Network Options
            // TODO: Geo Restriction

            #region Download Options

            string limitRate = optionManager.GetForSubscription(Options.Ytdl_LimitRate, video.SubscriptionId);
            if (limitRate != null)
            {
                yield return("-r");

                yield return(limitRate);
            }

            string retries = optionManager.GetForSubscription(Options.Ytdl_Retries, video.SubscriptionId);
            if (retries != null)
            {
                yield return("-R");

                yield return(retries);
            }

            #endregion

            #region Filesystem Options

            if (optionManager.GetForSubscription(Options.Ytdl_WriteDescription, video.SubscriptionId))
            {
                yield return("--write-description");
            }

            if (optionManager.GetForSubscription(Options.Ytdl_WriteInfoJson, video.SubscriptionId))
            {
                yield return("--write-info-json");
            }

            #endregion

            #region Thumbnail images

            if (optionManager.GetForSubscription(Options.Ytdl_WriteThumbnail, video.SubscriptionId))
            {
                yield return("--write-thumbnail");
            }

            #endregion

            #region Verbosity / Simulation Options

            yield return("--newline");

            bool?callHome = optionManager.GetGlobal(Options.Ytdl_CallHome);
            if (callHome.HasValue)
            {
                yield return((callHome.Value) ? "-C" : "--no-call-home");
            }

            #endregion

            // TODO: workarounds

            #region Video Format Options

            string format = optionManager.GetForSubscription(Options.Ytdl_Format, video.SubscriptionId);
            if (format != null)
            {
                yield return("-f");

                yield return(format);
            }

            if (optionManager.GetForSubscription(Options.Ytdl_AllFormats, video.SubscriptionId))
            {
                yield return("--all-formats");
            }

            if (optionManager.GetForSubscription(Options.Ytdl_PreferFreeFormats, video.SubscriptionId))
            {
                yield return("--prefer-free-formats");
            }

            string mergeOutputFormat = optionManager.GetForSubscription(Options.Ytdl_MergeOutputFormat, video.SubscriptionId);
            if (mergeOutputFormat != null)
            {
                yield return("--merge-output-format");

                yield return(mergeOutputFormat);
            }

            #endregion

            #region Subtitle Options

            if (optionManager.GetForSubscription(Options.Ytdl_WriteSubtitles, video.SubscriptionId))
            {
                yield return("--write-sub");
            }

            if (optionManager.GetForSubscription(Options.Ytdl_WriteAutoSub, video.SubscriptionId))
            {
                yield return("--write-auto-sub");
            }

            if (optionManager.GetForSubscription(Options.Ytdl_AllSubs, video.SubscriptionId))
            {
                yield return("--all-subs");
            }

            string subFormat = optionManager.GetForSubscription(Options.Ytdl_SubFormat, video.SubscriptionId);
            if (subFormat != null)
            {
                yield return("--sub-format");

                yield return(subFormat);
            }

            string subLang = optionManager.GetForSubscription(Options.Ytdl_SubLang, video.SubscriptionId);
            if (subLang != null)
            {
                yield return("--sub-lang");

                yield return(subLang);
            }

            #endregion

            // TODO: maybe add more options?
            yield return("-o");

            outputPath = ResolveOutputPath(video);
            yield return(outputPath);

            yield return(video.OriginalUrl);
        }