Esempio n. 1
0
        public void RenameFileToMask(string mask)
        {
            var sourceFile = this.MediaFile.File;
            var directory  = sourceFile.Directory;

            mask = mask.MultipleReplace(new Dictionary <string, string> {
                { "{filename}", sourceFile.Name },
                { "{extension}", sourceFile.Extension.Substring(1) },
                { "{title}", this.Title },
                { "{video:name}", this.Video0Name },
            });

            var targetFile = directory.File(mask);

            sourceFile.MoveTo(targetFile.FullName);
            this.MediaFile = MediaFile.FromFile(targetFile);
        }
Esempio n. 2
0
        public void ConvertToMkv()
        {
            var    sourceFile = this.MediaFile.File;
            var    targetFile = sourceFile.WithNewExtension("mkv");
            Action action     = () => {
                try {
                    this._IsActionPending = true;
                    MkvMerge.ConvertToMkv(sourceFile, targetFile, f => this.Progress = f);

                    this.MediaFile = MediaFile.FromFile(targetFile);
                    this.Progress  = null;
                } finally {
                    this._IsActionPending = true;
                }
            };

            action.BeginInvoke(action.EndInvoke, null);
        }
Esempio n. 3
0
        public void CommitChanges()
        {
            if (!this.NeedsCommit)
            {
                return;
            }

            var file = this.MediaFile.File;

            if (!IsWriteableMediaType(file))
            {
                throw new NotSupportedException("Can not write this media type.");
            }

            try {
                var data = this.commitData;

                if (data.ContainsKey(nameof(this.Title)))
                {
                    MkvPropEdit.SetTitle(file, (string)data[(nameof(this.Title))]);
                }

                if (data.ContainsKey(nameof(this.Video0Name)))
                {
                    MkvPropEdit.SetVideoName(file, (string)data[(nameof(this.Video0Name))]);
                }

                if (data.ContainsKey(nameof(this.Video0StereoscopicMode)))
                {
                    MkvPropEdit.SetVideoStereoscopicMode(file, (int)data[(nameof(this.Video0StereoscopicMode))]);
                }

                if (data.ContainsKey(nameof(this.Audio0Language)) && (LanguageType)data[nameof(this.Audio0Language)] != LanguageType.Other)
                {
                    MkvPropEdit.SetAudioLanguage(file, _ToCulture((LanguageType)data[nameof(this.Audio0Language)]));
                }

                if (data.ContainsKey(nameof(this.Audio1Language)) && (LanguageType)data[nameof(this.Audio1Language)] != LanguageType.Other)
                {
                    MkvPropEdit.SetAudioLanguage(file, _ToCulture((LanguageType)data[nameof(this.Audio1Language)]), 1);
                }

                if (data.ContainsKey(nameof(this.Audio0IsDefault)) && data[nameof(this.Audio0IsDefault)] != null)
                {
                    MkvPropEdit.SetAudioDefault(file, 0, (bool)data[nameof(this.Audio0IsDefault)]);
                }

                if (data.ContainsKey(nameof(this.Audio1IsDefault)) && data[nameof(this.Audio1IsDefault)] != null)
                {
                    MkvPropEdit.SetAudioDefault(file, 1, (bool)data[nameof(this.Audio1IsDefault)]);
                }

                data.Clear();
            } catch (Exception e) {
#if DEBUG
                if (!Debugger.IsAttached)
                {
                    Debugger.Launch();
                }

                Debugger.Break();
#endif
            }

            this.MediaFile = MediaFile.FromFile(file);
        }