public void AutoRenameTest()
        {
            var fileInfo = new FileInfo(
                Path.Combine(
                    settings.Object.Value.MediaLibraryPath,
                    "TV Shows",
                    "The Big Bang Theory",
                    "Season 01",
                    "The Big Bang Theory - S10E01 - The Conjugal Conjecture.mp4"));

            fileInfo.Directory.Create();
            File.WriteAllText(fileInfo.FullName, "abcd");


            // directory
            var service = new MediaLibraryService(logger.Object, settings.Object, mover.Object, filebot.Object);
            var item    = new PlainMediaItem(fileInfo.Directory, settings.Object.Value.MediaLibraryPath);

            Assert.Null(service.AutoRename(item));

            mover.Setup(x => x.MoveVideoFile(fileInfo.FullName)).Returns(new List <FileSystemInfo>());
            service = new MediaLibraryService(logger.Object, settings.Object, mover.Object, filebot.Object);
            service.AutoRename(new PlainMediaItem(fileInfo, settings.Object.Value.MediaLibraryPath));
            mover.Verify(x => x.MoveVideoFile(It.IsAny <string>()), Times.Once);
        }
        public IEnumerable <PlainMediaItem> AutoRename(PlainMediaItem item)
        {
            if (item.FileSystemInfo.IsDirectory())
            {
                logger.LogWarning("cannot autoRename: " + item.Path + " is a directory");
                return(null);
            }

            return(mover
                   .MoveVideoFile(item.FileSystemInfo.FullName)
                   .Select(fsInfo => new PlainMediaItem(fsInfo, settings.MediaLibraryPath)));
        }
        public PlainMediaItem GetSubtitles(PlainMediaItem item, string lang)
        {
            if (item.FileSystemInfo.IsDirectory())
            {
                logger.LogWarning("cannot getSubtitles: " + item.Path + " is a directory");
                return(null);
            }

            if (!filebot.GetSubtitles(item.FileSystemInfo.FullName, out var srtPath, lang))
            {
                logger.LogWarning("getSubtitles: " + item.Path + " subtitles not found");
                return(null);
            }

            return(new PlainMediaItem(new FileInfo(srtPath), settings.MediaLibraryPath));
        }
Exemple #4
0
        public void InvokeTest()
        {
            // finish implementation

            var movedItem = new DownloadItem
            {
                MovedFiles = new List <MediaItem>
                {
                    new MediaItem
                    {
                        Path = "TV Shows/Suits/Season 01/Suits S01E01 Episode Name.mkv"
                    }
                }
            };

            var path = Path.Combine(options.Object.Value.MediaLibraryPath,
                                    "TV Shows", "Game Of Thrones", "Season 01", "Game Of Thrones S01E01 Episode Name.mkv");

            TestHelper.CreateFile(path);
            var pmi = new PlainMediaItem(new FileInfo(path), options.Object.Value.MediaLibraryPath);

            var missingSubItem = new DownloadItem
            {
                MovedFiles = new List <MediaItem>
                {
                    new MediaItem
                    {
                        Path = pmi.Path
                    }
                }
            };

            var items = new List <DownloadItem> {
                movedItem, missingSubItem
            };

            repository.Setup(x => x.FindRecentCompletedItems(It.IsAny <int>())).Returns(items);
            autoMocker.Use(repository.Object);

            var job = autoMocker.CreateInstance <GetMissingSubtitlesJob>();

            job.Invoke();
            var outSrtPath = It.IsAny <string>();

            filebot.Verify(x => x.GetSubtitles(It.IsAny <string>(), out outSrtPath, It.IsAny <string>(), false), Times.Exactly(2));
        }
        public void CtorTest()
        {
            var fileInfo = new FileInfo(
                Path.Combine(
                    settings.Object.Value.MediaLibraryPath,
                    "TV Shows",
                    "The Big Bang Theory",
                    "Season 01",
                    "The Big Bang Theory - S10E01 - The Conjugal Conjecture.mp4"));

            fileInfo.Directory.Create();
            File.WriteAllText(fileInfo.FullName, "abcd");


            Assert.Throws <InvalidOperationException>(() => new PlainMediaItem(new DirectoryInfo(settings.Object.Value.MediaLibraryPath), settings.Object.Value.MediaLibraryPath));
            var item = new PlainMediaItem(fileInfo, settings.Object.Value.MediaLibraryPath);

            Assert.NotNull(item);
        }
        public void GetSubtitlesTest()
        {
            var fileInfo = new FileInfo(
                Path.Combine(
                    settings.Object.Value.MediaLibraryPath,
                    "TV Shows",
                    "The Big Bang Theory",
                    "Season 01",
                    "The Big Bang Theory - S10E01 - The Conjugal Conjecture.mp4"));

            fileInfo.Directory.Create();
            File.WriteAllText(fileInfo.FullName, "abcd");


            // directory
            var service = new MediaLibraryService(logger.Object, settings.Object, mover.Object, filebot.Object);
            var item    = new PlainMediaItem(fileInfo.Directory, settings.Object.Value.MediaLibraryPath);

            Assert.Null(service.GetSubtitles(item, "eng"));

            // no subtitles found
            string _;

            filebot.Setup(x => x.GetSubtitles(It.IsAny <string>(), out _, It.IsAny <string>(), It.IsAny <bool>())).Returns(false);
            service = new MediaLibraryService(logger.Object, settings.Object, mover.Object, filebot.Object);
            item    = new PlainMediaItem(fileInfo, settings.Object.Value.MediaLibraryPath);
            Assert.Null(service.GetSubtitles(item, "eng"));


            // subtitles found
            var srtPath = Path.Combine(
                Path.GetDirectoryName(fileInfo.FullName),
                Path.GetFileNameWithoutExtension(fileInfo.Name) + ".eng.srt");

            File.WriteAllText(srtPath, "aaa");
            filebot.Setup(x => x.GetSubtitles(It.IsAny <string>(), out srtPath, It.IsAny <string>(), It.IsAny <bool>())).Returns(true);
            service = new MediaLibraryService(logger.Object, settings.Object, mover.Object, filebot.Object);
            item    = new PlainMediaItem(fileInfo, settings.Object.Value.MediaLibraryPath);
            var srtItem = service.GetSubtitles(item, "eng");

            Assert.AreEqual(3, srtItem.Size);
            Assert.AreEqual("TV Shows/The Big Bang Theory/Season 01", srtItem.Parent);
        }
        public void DeleteTest()
        {
            var fileInfo = new FileInfo(
                Path.Combine(
                    settings.Object.Value.MediaLibraryPath,
                    "Movies",
                    "movie.mkv"));

            fileInfo.Directory.Create();
            File.WriteAllText(fileInfo.FullName, "abcd");

            // ok
            var item = new PlainMediaItem(fileInfo, settings.Object.Value.MediaLibraryPath);

            Assert.DoesNotThrow(() => item.Delete());
            Assert.False(item.FileSystemInfo.Exists);

            // renaming root media folder
            var rootMediaFolder = new PlainMediaItem(new DirectoryInfo(Path.Combine(settings.Object.Value.MediaLibraryPath, "Movies")), settings.Object.Value.MediaLibraryPath);

            Assert.Throws <InvalidOperationException>(() => rootMediaFolder.Delete());
        }