Exemple #1
0
        public override IDataPublisher <TOutput> GetPublisher <TOutput>()
        {
            if (this is IDataPublisher <TOutput> publisher)
            {
                return(publisher);
            }

            return(WorkerProvider.GetPublisher <TOutput>());
        }
Exemple #2
0
        private Boolean TrySubscribeToWorker(IDataSubscriber subscriber)
        {
            var source = WorkerProvider.GetDataSource(subscriber);

            if (source != null)
            {
                source.AddSubscriber(subscriber);
                return(true);
            }
            return(false);
        }
Exemple #3
0
        public void GetUngetPackages()
        {
            var worker = WorkerProvider.GetWorker();

            worker.AddHandler(new SiteHandler());
            worker.AddHandler(new ArticleHandler());
            worker.Start();
            foreach (var i in Enumerable.Range(1, 2))
            {
                worker.Publish(new SiteProfile
                {
                    SiteAddress = "https://www.nuget.org/packages?page=" + i
                });
            }

            worker.WaitUntilNoMessage();
            worker.Stop();
        }
Exemple #4
0
        public void Handle(SiteProfile message, CancellationToken cancellationToken)
        {
            var document = new HtmlDocument();

            using (var client = new HttpClient())
            {
                var html = client.GetStringAsync(message.SiteAddress).Result;
                document.LoadHtml(html);
            }
            var articles = document.DocumentNode.QuerySelectorAll(".list-packages .package a.package-title")?.Select(
                a =>
                new ArticleProfile
            {
                NugetLink = "https://www.nuget.org" + a.Attributes["href"]?.Value,
                Title     = a.InnerText
            });

            Console.WriteLine(message.SiteAddress);
            WorkerProvider.GetWorker().Publish(articles);
        }
Exemple #5
0
        public static void Main(string[] args)
        {
            var settings = Arguments.Parse <SubSyncSettings>(args);

            //// ugly workaround for ending backslashes with single/double-quotes. Seem to be a bug in the dotnet!
            //if (!string.IsNullOrEmpty(settings.Input) && (settings.Input.EndsWith("\"") || settings.Input.EndsWith("'")))
            //{
            //    settings.Input = settings.Input.Substring(0, settings.Input.Length - 1);
            //}

            var subtitleExtensions = settings.SubtitleExt;
            var languages          = settings.Languages;
            var input = settings.Input;

            var version           = GetVersion();
            var logger            = new ConsoleLogger();
            var videoIgnoreFilter = new VideoIgnoreFilter(ReadVideoIgnoreList());
            var videoSyncList     = new VideoSyncList();

            using (var fallbackSubtitleProvider = new FallbackSubtitleProvider(
                       videoSyncList,
                       new OpenSubtitles(languages, new FileBasedCredentialsProvider("opensubtitle.auth", logger), logger),
                       new Subscene(languages)))
            {
                var resultReporter        = new QueueProcessReporter();
                var subSyncWorkerProvider = new WorkerProvider(logger, subtitleExtensions, fallbackSubtitleProvider, resultReporter);
                var subSyncWorkerQueue    = new WorkerQueue(settings, subSyncWorkerProvider, resultReporter);

                using (var mediaWatcher = new SubtitleSynchronizer(
                           logger, videoSyncList, subSyncWorkerQueue, resultReporter, videoIgnoreFilter, settings))
                {
                    logger.WriteLine("╔════════════════════════════════════════════╗");
                    logger.WriteLine("║   @whi@SubSync v" + version.PadRight(30 - version.Length) + "@gray@         ║");
                    logger.WriteLine("║   --------------------------------------   ║");
                    logger.WriteLine("║   Copyright (c) 2018 zerratar\\@gmail.com    ║");
                    logger.WriteLine("╚════════════════════════════════════════════╝");
                    logger.WriteLine("");
                    logger.WriteLine("  Following folder and its subfolders being watched");
                    logger.WriteLine($"    @whi@{input} @gray@");
                    logger.WriteLine("");
                    logger.WriteLine("  You may press @green@'q' @gray@at any time to quit.");
                    logger.WriteLine("");

                    if (settings.MinimummDelayBetweenRequests > 0)
                    {
                        logger.WriteLine($"  @yel@Request delay: @red@{settings.MinimummDelayBetweenRequests}ms @yel@activated.");
                        logger.WriteLine($"  @yel@All requests will be run in sequential order and may take a lot longer to sync.");
                        logger.WriteLine("");
                    }

                    logger.WriteLine(" ───────────────────────────────────────────────────── ");
                    logger.WriteLine("");

                    mediaWatcher.Start();
                    ConsoleKeyInfo ck;
                    while ((ck = Console.ReadKey(true)).Key != ConsoleKey.Q)
                    {
                        if (ck.Key == ConsoleKey.A)
                        {
                            mediaWatcher.SyncAll();
                        }
                        System.Threading.Thread.Sleep(10);
                    }
                }
            }
        }
 public override String ToString() => WorkerProvider.ToString();
Exemple #7
0
        public static void Main(string[] args)
        {
            string folderName = null;

            if (Environment.GetCommandLineArgs().Length > 1)
            {
                folderName = Environment.GetCommandLineArgs()[1];
            }

            var settings = Arguments.Parse <SubSyncSettings>(args);

            var subtitleExtensions = settings.SubtitleExt;
            var languages          = settings.Languages;
            var input = folderName;

            var version           = GetVersion();
            var logger            = new ConsoleLogger();
            var videoIgnoreFilter = new VideoIgnoreFilter(ReadVideoIgnoreList());
            var videoSyncList     = new VideoSyncList();

            using (var fallbackSubtitleProvider = new FallbackSubtitleProvider(
                       videoSyncList,
                       new OpenSubtitles(languages, new FileBasedCredentialsProvider("opensubtitle.auth", logger), logger)))
            //new Subscene(languages)))
            {
                var resultReporter        = new QueueProcessReporter();
                var subSyncWorkerProvider = new WorkerProvider(logger, subtitleExtensions, fallbackSubtitleProvider, resultReporter);
                var subSyncWorkerQueue    = new WorkerQueue(settings, subSyncWorkerProvider, resultReporter);

                using (var mediaWatcher = new SubtitleSynchronizer(
                           logger, videoSyncList, subSyncWorkerQueue, resultReporter, videoIgnoreFilter, settings))
                {
                    logger.WriteLine("╔════════════════════════════════════════════╗");
                    logger.WriteLine("║   @whi@SubSync v" + version.PadRight(30 - version.Length) + "@gray@         ║");
                    logger.WriteLine("║   --------------------------------------   ║");
                    logger.WriteLine("║   Copyright (c) 2018 zerratar\\@gmail.com    ║");
                    logger.WriteLine("╚════════════════════════════════════════════╝");
                    logger.WriteLine("");
                    logger.WriteLine("  Following folder and its subfolders being watched");
                    logger.WriteLine($"    @whi@{input} @gray@");
                    logger.WriteLine("");
                    logger.WriteLine("  You may press @green@'r' @gray@ to register the SubSync in the windows folder context menu.");
                    logger.WriteLine("  You may press @green@'u' @gray@ to unregister the SubSync from the windows folder context menu.");
                    logger.WriteLine("  You may press @green@'q' @gray@at any time to quit.");
                    logger.WriteLine("");

                    if (settings.MinimummDelayBetweenRequests > 0)
                    {
                        logger.WriteLine($"  @yel@Request delay: @red@{settings.MinimummDelayBetweenRequests}ms @yel@activated.");
                        logger.WriteLine($"  @yel@All requests will be run in sequential order and may take a lot longer to sync.");
                        logger.WriteLine("");
                    }

                    logger.WriteLine(" ───────────────────────────────────────────────────── ");
                    logger.WriteLine("");

                    mediaWatcher.Start();
                    ConsoleKeyInfo ck;
                    while ((ck = Console.ReadKey(true)).Key != ConsoleKey.Q)
                    {
                        if (ck.Key == ConsoleKey.R)
                        {
                            RegisterOnContextMenu();
                            Console.WriteLine("Context menu item registered!");
                        }

                        if (ck.Key == ConsoleKey.U)
                        {
                            UnregisterOnContextMenu();
                            Console.WriteLine("Context menu item unregistered!");
                        }

                        if (ck.Key == ConsoleKey.A)
                        {
                            mediaWatcher.SyncAll();
                        }
                        System.Threading.Thread.Sleep(10);
                    }
                }
            }
        }
Exemple #8
0
        static void Main(string[] args)
        {
            var input              = "./";
            var videoExtensions    = ParseList("*.avi;*.mp4;*.mkv;*.mpeg;*.flv;*.webm");
            var subtitleExtensions = ParseList("*.srt;*.txt;*.sub;*.idx;*.ssa;*.ass");
            var languages          = ParseList("english");

            if (args.Length > 0 && !string.IsNullOrEmpty(args[0]))
            {
                input = args[0];
            }

            if (args.Length > 1 && !string.IsNullOrEmpty(args[1]))
            {
                languages = ParseList(args[1]);
            }

            if (args.Length > 2 && !string.IsNullOrEmpty(args[2]))
            {
                videoExtensions = ParseList(args[2]);
            }

            var version = GetVersion();
            var logger  = new ConsoleLogger();

            using (var fallbackSubtitleProvider = new FallbackSubtitleProvider(
                       new OpenSubtitles(languages, new FileBasedCredentialsProvider("opensubtitle.auth", logger)),
                       new Subscene(languages)))
            {
                var resultReporter        = new QueueProcessReporter();
                var subSyncWorkerProvider = new WorkerProvider(logger, subtitleExtensions, fallbackSubtitleProvider, resultReporter);
                var subSyncWorkerQueue    = new WorkerQueue(subSyncWorkerProvider, resultReporter);

                using (var mediaWatcher = new SubtitleSynchronizer(logger, subSyncWorkerQueue, resultReporter, input, videoExtensions, subtitleExtensions))
                {
                    logger.WriteLine("╔════════════════════════════════════════════╗");
                    logger.WriteLine("║   @whi@SubSync v" + version.PadRight(30 - version.Length) + "@gray@         ║");
                    logger.WriteLine("║   --------------------------------------   ║");
                    logger.WriteLine("║   Copyright (c) 2018 zerratar\\@gmail.com    ║");
                    logger.WriteLine("╚════════════════════════════════════════════╝");
                    logger.WriteLine("");
                    logger.WriteLine("  Following folder and its subfolders being watched");
                    logger.WriteLine($"    @whi@{input} @gray@");
                    logger.WriteLine("");
                    logger.WriteLine("  You may press @green@'q' @gray@at any time to quit.");
                    logger.WriteLine("");
                    logger.WriteLine(" ───────────────────────────────────────────────────── ");
                    logger.WriteLine("");

                    mediaWatcher.Start();
                    ConsoleKeyInfo ck;
                    while ((ck = Console.ReadKey(true)).Key != ConsoleKey.Q)
                    {
                        if (ck.Key == ConsoleKey.A)
                        {
                            mediaWatcher.SyncAll();
                        }
                        System.Threading.Thread.Sleep(10);
                    }
                }
            }
        }