Example #1
0
        private void DownloadFile1()
        {
            ReadOnlyControlFile controlFile = new ReadOnlyControlFile(_inputfilename);
            IPodcastInfo        info        = GetPodcastInfo(controlFile, 0);

            DisplayMessage(string.Format("Reading a feed: {0}", info.Feed.Address));
            IList <ISyncItem> allEpisodes = GetAllEpisodesInFeed(controlFile, info);

            if (allEpisodes.Count < 1)
            {
                DisplayMessage("No episodes in the feed - dont forget the state.xml file is being used", DisplayLevel.Warning);
                return;
            }
            IList <ISyncItem> firstEpisode = new List <ISyncItem>(1);

            firstEpisode.Add(allEpisodes.First());

            DisplayMessage(string.Format("Downloading Eposode: {0}", firstEpisode.First().EpisodeTitle));
            ISyncItemToEpisodeDownloaderTaskConverter converter = _iocContainer.Resolve <ISyncItemToEpisodeDownloaderTaskConverter>();

            IEpisodeDownloader[] downloadTasks = converter.ConvertItemsToTasks(firstEpisode, StatusUpdate, ProgressUpdate);

            // run them in a task pool
            ITaskPool taskPool = _iocContainer.Resolve <ITaskPool>();

            taskPool.RunAllTasks(1, downloadTasks);

            DisplayMessage(string.Format("Download Complete", allEpisodes.Count));
        }
Example #2
0
        private IPodcastInfo GetPodcastInfo(ReadOnlyControlFile controlFile, int index)
        {
            IEnumerable <IPodcastInfo> podcasts = controlFile.GetPodcasts();
            IPodcastInfo info = podcasts.ElementAt(index);

            return(info);
        }
Example #3
0
        static void Main(string[] args)
        {
            DisplayBanner();
            if (args.Length < 1)
            {
                DisplayHelp();
                return;
            }

            IIocContainer iocContainer = InitializeIocContainer();

            ReadOnlyControlFile    control         = new ReadOnlyControlFile(args[0]);
            IFinder                finder          = iocContainer.Resolve <IFinder>();
            ICopier                copier          = iocContainer.Resolve <ICopier>();
            IUnwantedFileRemover   remover         = iocContainer.Resolve <IUnwantedFileRemover>();
            IUnwantedFolderRemover folderRemover   = iocContainer.Resolve <IUnwantedFolderRemover>();
            IFileUtilities         fileUtilities   = iocContainer.Resolve <IFileUtilities>();
            IPathUtilities         pathUtilities   = iocContainer.Resolve <IPathUtilities>();
            IPlaylistFactory       playlistFactory = iocContainer.Resolve <IPlaylistFactory>();

            Generator generator = new Generator(finder, fileUtilities, pathUtilities, playlistFactory);

            generator.StatusUpdate += new EventHandler <StatusUpdateEventArgs>(StatusUpdate);

            Synchronizer synchronizer = new Synchronizer(finder, copier, remover, folderRemover);

            synchronizer.StatusUpdate += new EventHandler <StatusUpdateEventArgs>(StatusUpdate);

            synchronizer.Synchronize(control, false);

            if (!string.IsNullOrEmpty(control.GetPlaylistFileName()))
            {
                generator.GeneratePlaylist(control, true);
            }
        }
Example #4
0
        static void Main(string[] args)
        {
            DisplayBanner();
            if (args.Length < 1)
            {
                DisplayHelp();
                return;
            }

            IIocContainer iocContainer = InitializeIocContainer();

            var control         = new ReadOnlyControlFile(args[0]);
            var finder          = iocContainer.Resolve <IFinder>();
            var fileUtilities   = iocContainer.Resolve <IFileUtilities>();
            var pathUtilities   = iocContainer.Resolve <IPathUtilities>();
            var playlistFactory = iocContainer.Resolve <IPlaylistFactory>();

            var generator = new Generator(finder, fileUtilities, pathUtilities, playlistFactory);

            generator.StatusUpdate += new EventHandler <StatusUpdateEventArgs>(GeneratorStatusUpdate);

            if (!string.IsNullOrEmpty(control.GetPlaylistFileName()))
            {
                generator.GeneratePlaylist(control, false);
            }
        }
Example #5
0
        static void Main(string[] args)
        {
            DisplayBanner();
            if (args.Length < 1)
            {
                DisplayHelp();
                return;
            }

            Console.ForegroundColor = ConsoleColor.Green;
            Console.WriteLine("Started - {0}", DateTime.Now.ToString());
            Console.ResetColor();

            _iocContainer = InitializeIocContainer();
            _control      = new ReadOnlyControlFile(args[0]);
            _verbose      = _control.GetDiagnosticOutput() == DiagnosticOutputLevel.Verbose;

            _driveInfoProvider = _iocContainer.Resolve <IDriveInfoProvider>();

            int numberOfConnections = _control.GetMaximumNumberOfConcurrentDownloads();

            System.Net.ServicePointManager.DefaultConnectionLimit = numberOfConnections;

            ResetCounters();

            // find the episodes to download
            var allEpisodes          = new List <ISyncItem>(20);
            var podcastEpisodeFinder = _iocContainer.Resolve <IEpisodeFinder>();

            podcastEpisodeFinder.StatusUpdate += StatusUpdate;
            foreach (var podcastInfo in _control.GetPodcasts())
            {
                var episodesInThisFeed = podcastEpisodeFinder.FindEpisodesToDownload(_control.GetSourceRoot(), _control.GetRetryWaitInSeconds(), podcastInfo, _control.GetDiagnosticRetainTemporaryFiles());
                allEpisodes.AddRange(episodesInThisFeed);
            }

            _number_of_files_to_download = allEpisodes.Count;
            _number_of_files_downloaded  = 0;
            if (_number_of_files_to_download > 0)
            {
                Console.ForegroundColor = ConsoleColor.Yellow;
                Console.WriteLine("Downloading {0} episodes", _number_of_files_to_download);
                Console.ResetColor();

                // convert them to tasks
                var converter = _iocContainer.Resolve <ISyncItemToEpisodeDownloaderTaskConverter>();
                IEpisodeDownloader[] downloadTasks = converter.ConvertItemsToTasks(allEpisodes, StatusUpdate, ProgressUpdate);

                // run them in a task pool
                _taskPool = _iocContainer.Resolve <ITaskPool>();
                Console.CancelKeyPress += new ConsoleCancelEventHandler(Console_CancelKeyPress);
                _taskPool.RunAllTasks(numberOfConnections, downloadTasks);
            }

            Console.ForegroundColor = ConsoleColor.Green;
            Console.WriteLine("Done - {0}", DateTime.Now.ToString());
            Console.ResetColor();
        }
        protected override void GivenThat()
        {
            base.GivenThat();

            XmlNode n = ControlFileXmlDocument.SelectSingleNode("podcasts/global/freeSpaceToLeaveOnDestinationMB");

            n.InnerText = ControlFileFreeSpaceText;

            ControlFile = new ReadOnlyControlFile(ControlFileXmlDocument);
        }
Example #7
0
 protected override void When()
 {
     ThrownException = null;
     try
     {
         ControlFile = new ReadOnlyControlFile(ControlFileXmlDocument);
     }
     catch (Exception exception)
     {
         ThrownException = exception;
     }
 }
Example #8
0
        private void ReadControlFile()
        {
            DisplayMessage(string.Format("Reading a control file: {0}", _inputfilename));
            ReadOnlyControlFile       controlFile = new ReadOnlyControlFile(_inputfilename);
            IEnumerable <PodcastInfo> podcasts    = controlFile.GetPodcasts();

            PodcastInfo[] podcastArray = podcasts.ToArray();
            DisplayMessage(string.Format("Number of podcasts in test file: {0}", podcastArray.Length));
            foreach (IPodcastInfo info in podcasts)
            {
                DisplayMessage(string.Format("Podcast: {0} {1}", info.Folder, info.Feed.Address));
            }
        }
Example #9
0
        private IList <ISyncItem> GetAllEpisodesInFeed(ReadOnlyControlFile controlFile, IPodcastInfo info)
        {
            List <ISyncItem>  allEpisodes          = new List <ISyncItem>(20);
            IEpisodeFinder    podcastEpisodeFinder = _iocContainer.Resolve <IEpisodeFinder>();
            IList <ISyncItem> episodesInThisFeed   = podcastEpisodeFinder.FindEpisodesToDownload(
                controlFile.GetSourceRoot(),
                controlFile.GetRetryWaitInSeconds(),
                info,
                controlFile.GetDiagnosticRetainTemporaryFiles()
                );

            allEpisodes.AddRange(episodesInThisFeed);
            return(allEpisodes);
        }
Example #10
0
        private void ReadFeed1()
        {
            ReadOnlyControlFile controlFile = new ReadOnlyControlFile(_inputfilename);
            IPodcastInfo        info        = GetPodcastInfo(controlFile, 0);

            DisplayMessage(string.Format("Reading a feed: {0}", info.Feed.Address));

            IList <ISyncItem> allEpisodes = GetAllEpisodesInFeed(controlFile, info);

            DisplayMessage(string.Format("Eposodes in feed: {0}", allEpisodes.Count));
            foreach (ISyncItem item in allEpisodes)
            {
                DisplayMessage(string.Format("Eposode: {0}", item.EpisodeTitle));
            }
        }
Example #11
0
        protected override void GivenThat()
        {
            base.GivenThat();

            _testControlFileResourcePath = "PodcastUtilities.Common.Tests.XML.testcontrolfile.xml";
            Stream s = Assembly.GetExecutingAssembly().GetManifestResourceStream(_testControlFileResourcePath);

            XmlReaderSettings readSettings = new XmlReaderSettings {
                ConformanceLevel = ConformanceLevel.Document
            };

            _xmlReader = XmlReader.Create(s, readSettings);

            _controlFile = new ReadOnlyControlFile();
        }
Example #12
0
        protected override void When()
        {
            ThrownException = null;
            try
            {
                ControlFile = new ReadOnlyControlFile(ControlFileXmlDocument);

                // this will be the defaulted value from the global section
                MaxDaysOld1 = ControlFile.GetPodcasts().ElementAt(1).Feed.MaximumDaysOld.Value;
                // this is set explicitly by the feed
                MaxDaysOld2 = ControlFile.GetPodcasts().ElementAt(2).Feed.MaximumDaysOld.Value;
            }
            catch (Exception exception)
            {
                ThrownException = exception;
            }
        }
        private ReadOnlyControlFile OpenControlFile(Android.Net.Uri uri)
        {
            try
            {
                ContentResolver resolver = Application.ContentResolver;
                var             stream   = resolver.OpenInputStream(uri);
                var             xml      = new XmlDocument();
                xml.Load(stream);
                var control  = new ReadOnlyControlFile(xml);
                var podcasts = control.GetPodcasts();
                int count    = 0;
                foreach (var item in podcasts)
                {
                    count++;
                }
                NoOfFeeds = count;

                AndroidApplication.Logger.Debug(() => $"MainActivity:Control Podcasts {control.GetSourceRoot()}");
                AndroidApplication.Logger.Debug(() => $"MainActivity:Control Podcasts {count}");

                SetTextViewText(Resource.Id.txtConfigFilePath, $"{uri.ToString()}");

                freeBytesNet      = GetFreeBytes(control.GetSourceRoot());
                freeBytesAndroid  = FileSystemHelper.GetAvailableFileSystemSizeInBytes(control.GetSourceRoot());
                totalBytesAndroid = FileSystemHelper.GetTotalFileSystemSizeInBytes(control.GetSourceRoot());
                var output = $"{count}, {control.GetSourceRoot()}\nFree space (Net): {DisplayFormatter.RenderFileSize(freeBytesNet)}\nFree/total space (Android): {DisplayFormatter.RenderFileSize(freeBytesAndroid)}/{DisplayFormatter.RenderFileSize(totalBytesAndroid)}";
                SetTextViewText(Resource.Id.txtOutput, output);
                return(control);
            }
            catch (Exception ex)
            {
                AndroidApplication.Logger.LogException(() => $"MainActivity: OpenConfigFile", ex);
                SetTextViewText(Resource.Id.txtConfigFilePath, $"Error {ex.Message}");
                return(null);
            }
        }
Example #14
0
 protected override void When()
 {
     ControlFile = new ReadOnlyControlFile(ControlFileXmlDocument);
     Separator   = ControlFile.GetPlaylistPathSeparator();
 }
Example #15
0
        static void Main(string[] args)
        {
            DisplayBanner();
            if (args.Length < 1)
            {
                DisplayHelp();
                return;
            }

            _iocContainer = InitializeIocContainer();
            _control      = new ReadOnlyControlFile(args[0]);
            if (args.Count() > 1)
            {
                _quiet = args[1].Contains('q');
            }

            // find the episodes to delete
            List <IFileInfo> allFilesToDelete     = new List <IFileInfo>(20);
            IEpisodePurger   podcastEpisodePurger = _iocContainer.Resolve <IEpisodePurger>();

            foreach (PodcastInfo podcastInfo in _control.GetPodcasts())
            {
                IList <IFileInfo> filesToDeleteFromThisFeed = podcastEpisodePurger.FindEpisodesToPurge(_control.GetSourceRoot(), podcastInfo);
                allFilesToDelete.AddRange(filesToDeleteFromThisFeed);
            }
            // find folders that can now be deleted
            List <IDirectoryInfo> allFoldersToDelete = new List <IDirectoryInfo>(10);

            foreach (PodcastInfo podcastInfo in _control.GetPodcasts())
            {
                IList <IDirectoryInfo> foldersToDeleteInThisFeed = podcastEpisodePurger.FindEmptyFoldersToDelete(_control.GetSourceRoot(), podcastInfo, allFilesToDelete);
                allFoldersToDelete.AddRange(foldersToDeleteInThisFeed);
            }

            if (allFilesToDelete.Count == 0 && allFoldersToDelete.Count == 0)
            {
                Console.WriteLine("There is nothing to delete");
                return;
            }

            if (_quiet)
            {
                DoDelete(allFilesToDelete, allFoldersToDelete);
            }
            else
            {
                if (allFilesToDelete.Count > 0)
                {
                    Console.WriteLine("Files:");
                    foreach (IFileInfo fileInfo in allFilesToDelete)
                    {
                        Console.WriteLine("{0}", fileInfo.FullName);
                    }
                }
                if (allFoldersToDelete.Count > 0)
                {
                    Console.WriteLine("Folders:");
                    foreach (IDirectoryInfo folder in allFoldersToDelete)
                    {
                        Console.WriteLine("{0}", folder.FullName);
                    }
                }
                Console.WriteLine("OK to delete {0} files and {1} folders? (y/n) ", allFilesToDelete.Count, allFoldersToDelete.Count);
                string answer;
                do
                {
                    char key = Convert.ToChar(Console.Read());
                    answer = key.ToString().ToLower();
                } while (answer != "y" && answer != "n");
                if (answer == "y")
                {
                    Console.WriteLine("Deleting {0} files and {1} folders", allFilesToDelete.Count, allFoldersToDelete.Count);
                    DoDelete(allFilesToDelete, allFoldersToDelete);
                }
                else
                {
                    Console.WriteLine("No files deleted");
                }
            }

            Console.WriteLine("Done");
        }
Example #16
0
 public void Initialise(ReadOnlyControlFile controlFile)
 {
     Logger.Debug(() => $"DownloadViewModel:Initialise");
     ControlFile = controlFile;
     Observables.Title?.Invoke(this, ResourceProvider.GetString(Resource.String.download_activity_title));
 }
 protected override void When()
 {
     ControlFile = new ReadOnlyControlFile(ControlFileXmlDocument);
 }