public EnumBluRayLineItemType GetLineItemType(ProcessOutputLineItem processOutputLineItem)
        {
            EnumBluRayLineItemType type;

            if (this.IsHeaderLine(processOutputLineItem))
            {
                type = EnumBluRayLineItemType.BluRayTitleHeaderLine;
            }
            else if (this.IsChapterLine(processOutputLineItem))
            {
                type = EnumBluRayLineItemType.BluRayTitleChapterLine;
            }
            else if (this.IsVideoLine(processOutputLineItem))
            {
                type = EnumBluRayLineItemType.BluRayTitleVideoLine;
            }
            else if (this.IsAudioLine(processOutputLineItem))
            {
                type = EnumBluRayLineItemType.BluRayTitleAudioLine;
            }
            else if (this.IsSubtitleLine(processOutputLineItem))
            {
                type = EnumBluRayLineItemType.BluRayTitleSubtitleLine;
            }
            else
            {
                type = EnumBluRayLineItemType.BluRayTitleEmptyLine;
            }
            return type;
        }
 public void bluraysummarylineitemidentifierservice_can_identify_bluray_header_line_item_test()
 {
     ProcessOutputLineItem lineItem = new ProcessOutputLineItem() { Id =1 , Text = "1) 00010.mpls, 3:04:31" };
     ILineItemIdentifierService service = new BluRaySummaryLineItemIdentifierService();
     EnumBluRayLineItemType type = service.GetLineItemType(lineItem);
     type.Should().Be(EnumBluRayLineItemType.BluRaySummaryHeaderLine);
 }
 public void bluraytitlelineitemidentifierservice_can_identify_bluray_header_line_item_test()
 {
     ProcessOutputLineItem lineItem = new ProcessOutputLineItem() { Id = 1, Text = "M2TS, 1 video track, 1 audio track, 1 subtitle track, 0:58:28, 50i" };
     ILineItemIdentifierService service = new BluRayTitleLineItemIdentifierService();
     EnumBluRayLineItemType type = service.GetLineItemType(lineItem);
     type.Should().Be(EnumBluRayLineItemType.BluRayTitleHeaderLine);
 }
 public void bluraysummarylineitemidentifierservice_can_identify_bluray_detail_line_item_test()
 {
     ProcessOutputLineItem lineItem = new ProcessOutputLineItem() { Id = 1, Text = "- DTS Master Audio, Swedish, multi-channel, 48kHz" };
     ILineItemIdentifierService service = new BluRaySummaryLineItemIdentifierService();
     EnumBluRayLineItemType type = service.GetLineItemType(lineItem);
     type.Should().Be(EnumBluRayLineItemType.BluRaySummaryDetailLine);
 }
 public void bluraytitlelineitemidentifierservice_can_identify_bluray_audio_line_item_test()
 {
     ProcessOutputLineItem lineItem = new ProcessOutputLineItem() { Id = 1, Text = "3: DTS Master Audio, French, 5.1 channels, 24 bits, 48kHz" };
     ILineItemIdentifierService service = new BluRayTitleLineItemIdentifierService();
     EnumBluRayLineItemType type = service.GetLineItemType(lineItem);
     type.Should().Be(EnumBluRayLineItemType.BluRayTitleAudioLine);
 }
 public void bluraytitlelineitemidentifierservice_can_identify_bluray_chapter_line_item_test()
 {
     ProcessOutputLineItem lineItem = new ProcessOutputLineItem() { Id = 1, Text = "1: Chapters, 6 chapters" };
     ILineItemIdentifierService service = new BluRayTitleLineItemIdentifierService();
     EnumBluRayLineItemType type = service.GetLineItemType(lineItem);
     type.Should().Be(EnumBluRayLineItemType.BluRayTitleChapterLine);
 }
 private bool IsEmptyLine(ProcessOutputLineItem processOutputLineItem)
 {
     if (processOutputLineItem.Text == "")
         return true;
     else
         return false;
 }
 public void bluraytitlelineitemidentifierservice_can_identify_bluray_subtitle_line_item_test()
 {
     ProcessOutputLineItem lineItem = new ProcessOutputLineItem() { Id = 1, Text = "4: Subtitle (pgs), French" };
     ILineItemIdentifierService service = new BluRayTitleLineItemIdentifierService();
     EnumBluRayLineItemType type = service.GetLineItemType(lineItem);
     type.Should().Be(EnumBluRayLineItemType.BluRayTitleSubtitleLine);
 }
 public void bluraysummarylineitemidentifierservice_can_identify_bluray_empty_line_item_test()
 {
     ProcessOutputLineItem lineItem = new ProcessOutputLineItem() { Id = 1, Text = "" };
     ILineItemIdentifierService service = new BluRaySummaryLineItemIdentifierService();
     EnumBluRayLineItemType type = service.GetLineItemType(lineItem);
     type.Should().Be(EnumBluRayLineItemType.BluRaySummaryEmptyLine);
 }
 public void bluraytitlelineitemidentifierservice_can_identify_bluray_video_line_item_test()
 {
     ProcessOutputLineItem lineItem = new ProcessOutputLineItem() { Id = 1, Text = "2: h264/AVC, 1080i50 (16:9)" };
     ILineItemIdentifierService service = new BluRayTitleLineItemIdentifierService();
     EnumBluRayLineItemType type = service.GetLineItemType(lineItem);
     type.Should().Be(EnumBluRayLineItemType.BluRayTitleVideoLine);
 }
        private bool IsHeaderLine(ProcessOutputLineItem processOutputLineItem)
        {
            string[] values = new string[] { ".mpls", ".m2ts" };

            bool isHeader = values.Any(v => processOutputLineItem.Text.ToLower().Contains(v));

            return isHeader;
        }
        private bool IsDetailLine(ProcessOutputLineItem processOutputLineItem)
        {
            string[] values = new string[] { "chapters", "h264", "dts", "ac3", "pcm", "stero", "raw","truehd","avc","mpeg2","vc-1" };

            bool isDetail = values.Any(v => processOutputLineItem.Text.ToLower().Contains(v));

            return isDetail;
        }
        private bool IsVideoLine(ProcessOutputLineItem processOutputLineItem)
        {
            string[] values = new string[] { "h264","avc","1080", "mpeg-4", "mpeg2" };

            bool isChapter = values.Any(v => processOutputLineItem.Text.ToLower().Contains(v));

            return isChapter;
        }
        private bool IsAudioLine(ProcessOutputLineItem processOutputLineItem)
        {
            string[] values = new string[] { "dts", "audio", "channels", "ac3", "pcm", "truehd" };

            bool isChapter = values.Any(v => processOutputLineItem.Text.ToLower().Contains(v));

            return isChapter;
        }
        private bool IsSubtitleLine(ProcessOutputLineItem processOutputLineItem)
        {
            string[] values = new string[] { "pgs" };

            bool isChapter = values.Any(v => processOutputLineItem.Text.ToLower().Contains(v));

            return isChapter;
        }
        public string GetLanguage(ProcessOutputLineItem lineItem)
        {
            var languages = _languageService.GetLanguages();
            string lineItemLanguage = "undetermined";

            foreach (MKVMergeLanguageItem language in languages)
            {
                if (lineItem.Text.ToLower().Contains(language.Language.ToLower()))
                {
                    return lineItemLanguage = language.Language;
                }
            }
            return lineItemLanguage;
        }
        public EnumAudioType GetAudioType(ProcessOutputLineItem lineItem)
        {
            EnumAudioType type = EnumAudioType.AC3;

            if (this.IsAudioType(lineItem, "dts master audio"))
            {
                type = EnumAudioType.DTSMA;
            }
            else if (this.IsAudioType(lineItem, "dts express"))
            {
                type = EnumAudioType.DTSEXPRESS;
            }
            else if (this.IsAudioType(lineItem, "truehd"))
            {
                type = EnumAudioType.TrueHD;
            }
            else if (this.IsAudioType(lineItem, "pcm"))
            {
                type = EnumAudioType.LPCM;
            }
            return type;
        }
        public EnumBluRayLineItemType GetLineItemType(ProcessOutputLineItem processOutputLineItem)
        {
            EnumBluRayLineItemType type;

            if (this.IsHeaderLine(processOutputLineItem))
            {
                type = EnumBluRayLineItemType.BluRaySummaryHeaderLine;
            }
            else if (this.IsDetailLine(processOutputLineItem))
            {
                type = EnumBluRayLineItemType.BluRaySummaryDetailLine;
            }
            else if (this.IsEmptyLine(processOutputLineItem))
            {
                type = EnumBluRayLineItemType.BluRaySummaryEmptyLine;
            }
            else
            {
                type = EnumBluRayLineItemType.BluRayError;
            }

            return type;
        }
 public string GetId(ProcessOutputLineItem lineItem)
 {
     string[] splitted = lineItem.Text.Split(' ');
     return splitted[0];
 }
        public string RemoveEac3ToIdFromHeaderLineItem(ProcessOutputLineItem lineItem)
        {
            if (!this.IsIdHeader(lineItem))
                return lineItem.Text;

            int closedParenthesis = lineItem.Text.IndexOf(")") + 1;
            string headerText = lineItem.Text.Substring(closedParenthesis, lineItem.Text.Length - closedParenthesis).Trim();
            return headerText;
        }
        public bool IsIdHeader(ProcessOutputLineItem lineItem)
        {
            string firstPhrase = this.GetId(lineItem);
            string pattern = @"^(\d+)\)";
            Regex regEx = new Regex(pattern, RegexOptions.IgnoreCase);

            bool isMatch = regEx.IsMatch(firstPhrase);

            return isMatch;
        }
 private void SetVideo(ProcessOutputLineItem lineItem)
 {
     if (_bluRayTtileInfo.Video == null)
         _bluRayTtileInfo.Video = new BluRayTitleVideo() { Id = this.GetId(lineItem), IsSelected = true, Text = lineItem.Text };
 }
        private void SetSubtitle(ProcessOutputLineItem lineItem)
        {
            if (_bluRayTtileInfo.Subtitles == null)
                _bluRayTtileInfo.Subtitles = new List<BluRayTitleSubtitle>();

            BluRayTitleSubtitle subtitle = new BluRayTitleSubtitle();
            subtitle.Id = this.GetId(lineItem);
            subtitle.Language = this.GetLanguage(lineItem);
            subtitle.Text = lineItem.Text;
            _bluRayTtileInfo.Subtitles.Add(subtitle);
        }
 private void SetChapter(ProcessOutputLineItem lineItem)
 {
     _bluRayTtileInfo.Chapter = new BluRayTitleChapter() { Id = this.GetId(lineItem), IsSelected = true, Text = lineItem.Text };
 }
        private void SetAudio(ProcessOutputLineItem lineItem)
        {
            string id = this.GetId(lineItem);

            if (!this.IsIdValid(id))
                return;

            if (_bluRayTtileInfo.AudioList == null)
                _bluRayTtileInfo.AudioList = new List<BluRayTitleAudio>();

            BluRayTitleAudio audio = new BluRayTitleAudio();
            audio.Id = id;
            audio.IsSelected = false;
            audio.AudioType = this.GetAudioType(lineItem);
            audio.Language = this.GetLanguage(lineItem);
            audio.Text = lineItem.Text;
            audio.OriginalAudioType = audio.AudioType;
            audio.IsLossless = this.SetIsLosslessAudioFlag(audio.OriginalAudioType);

            _bluRayTtileInfo.AudioList.Add(audio);
        }
        public bool IsAudioType(ProcessOutputLineItem processOutputLineItem, string criteria )
        {
            string[] values = new string[] { criteria };

            bool isAudio = values.Any(v => processOutputLineItem.Text.ToLower().Contains(v));

            return isAudio;
        }