public void IsUpgradeTestLanguage(Quality current, int currentVersion, Language currentLanguage, Quality newQuality, int newVersion, Language newLanguage, Quality cutoff, Language languageCutoff, bool expected)
        {
            GivenAutoDownloadPropers(ProperDownloadTypes.PreferAndUpgrade);

            var profile = new QualityProfile
            {
                UpgradeAllowed = true,
                Items          = Qualities.QualityFixture.GetDefaultQualities(),
                Cutoff         = cutoff.Id,
            };

            var langProfile = new LanguageProfile
            {
                UpgradeAllowed = true,
                Languages      = LanguageFixture.GetDefaultLanguages(),
                Cutoff         = languageCutoff
            };

            Subject.IsUpgradable(
                profile,
                langProfile,
                new QualityModel(current, new Revision(version: currentVersion)),
                currentLanguage,
                NoPreferredWordScore,
                new QualityModel(newQuality, new Revision(version: newVersion)),
                newLanguage,
                NoPreferredWordScore)
            .Should().Be(expected);
        }
Esempio n. 2
0
    public SourceStats GetProfileStats(LanguageProfile profile)
    {
        SourceStats stats;

        _profileStats.TryGetValue(profile, out stats);
        return(stats);
    }
        internal static LanguageProfile InternalGetCurrentLanguageProfile(string name, out Type winUserLanguageType)
        {
            RunspaceConfiguration psConfig = RunspaceConfiguration.Create();
            var psRunspace = RunspaceFactory.CreateRunspace(psConfig);

            psRunspace.Open();
            List <string> languageTags = new List <string>();

            using (Pipeline psPipeline = psRunspace.CreatePipeline())
            {
                Command command = new Command("Get-WinUserLanguageList");

                psPipeline.Commands.Add(command);

                var     results = psPipeline.Invoke();
                dynamic member  = results.First().BaseObject;

                winUserLanguageType = member[0].GetType();

                foreach (var mem in member)
                {
                    languageTags.Add(mem.LanguageTag);
                }
            }

            var languageProfile = new LanguageProfile()
            {
                LanguageTags = languageTags, Name = name
            };

            return(languageProfile);
        }
        public void should_return_false_if_proper_and_autoDownloadPropers_is_do_not_prefer()
        {
            GivenAutoDownloadPropers(ProperDownloadTypes.DoNotPrefer);

            var profile = new QualityProfile
            {
                Items = Qualities.QualityFixture.GetDefaultQualities(),
            };

            var langProfile = new LanguageProfile
            {
                Languages = LanguageFixture.GetDefaultLanguages(),
                Cutoff    = Language.English
            };


            Subject.IsUpgradable(
                profile,
                langProfile,
                new QualityModel(Quality.DVD, new Revision(version: 1)),
                Language.English,
                NoPreferredWordScore,
                new QualityModel(Quality.DVD, new Revision(version: 2)),
                Language.English,
                NoPreferredWordScore)
            .Should().BeFalse();
        }
        public bool IsUpgradeAllowed(QualityProfile qualityProfile, LanguageProfile languageProfile, QualityModel currentQuality, Language currentLanguage, QualityModel newQuality, Language newLanguage)
        {
            var isQualityUpgrade  = new QualityModelComparer(qualityProfile).Compare(newQuality, currentQuality) > 0;
            var isLanguageUpgrade = new LanguageComparer(languageProfile).Compare(newLanguage, currentLanguage) > 0;

            if (isQualityUpgrade && qualityProfile.UpgradeAllowed ||
                isLanguageUpgrade && languageProfile.UpgradeAllowed)
            {
                _logger.Debug("At least one profile allows upgrading");
                return(true);
            }

            if (isQualityUpgrade && !qualityProfile.UpgradeAllowed)
            {
                _logger.Debug("Quality profile does not allow upgrades, skipping");
                return(false);
            }

            if (isLanguageUpgrade && !languageProfile.UpgradeAllowed)
            {
                _logger.Debug("Language profile does not allow upgrades, skipping");
                return(false);
            }

            return(true);
        }
Esempio n. 6
0
        public void should_lazyload_quality_profile()
        {
            var profile = new QualityProfile
            {
                Items = Qualities.QualityFixture.GetDefaultQualities(Quality.Bluray1080p, Quality.DVD, Quality.HDTV720p),

                Cutoff = Quality.Bluray1080p.Id,
                Name   = "TestProfile"
            };

            var langProfile = new LanguageProfile
            {
                Name      = "TestProfile",
                Languages = Languages.LanguageFixture.GetDefaultLanguages(Language.English),
                Cutoff    = Language.English
            };


            Mocker.Resolve <QualityProfileRepository>().Insert(profile);
            Mocker.Resolve <LanguageProfileRepository>().Insert(langProfile);

            var series = Builder <Series> .CreateNew().BuildNew();

            series.QualityProfileId  = profile.Id;
            series.LanguageProfileId = langProfile.Id;

            Subject.Insert(series);


            StoredModel.QualityProfile.Should().NotBeNull();
            StoredModel.LanguageProfile.Should().NotBeNull();
        }
Esempio n. 7
0
        private void PopulateFields(LanguageProfile profile)
        {
            if (profile != null)
            {
                txtName.Text        = profile.Name;
                txtExtensions.Lines = profile.Extensions;

                var commentBuilder = new StringBuilder();
                foreach (var indicator in profile.CommentIndicators.ToList().FindAll(x => !x.Multiline))
                {
                    commentBuilder.AppendLine(indicator.StartIndicator);
                }
                txtSingleComments.Text = commentBuilder.ToString();

                //todo allow multiple multiline comment rules
                var multilineIndicators = profile.CommentIndicators.ToList().FindAll(x => x.Multiline);
                txtmultistart.Text = multilineIndicators.Count > 0 ? multilineIndicators[0].StartIndicator : "";
                txtmultiend.Text   = multilineIndicators.Count > 0 && multilineIndicators[0].HasEndIndicator ? multilineIndicators[0].EndIndicator : "";

                txtPreprocessors.Lines = profile.Preprocessors;

                chkInlineComments.Checked       = profile.AllowInlineComments;
                chkInterspersedComments.Checked = profile.AllowInterspersedComments;
            }

            else
            {
                txtName.Text = txtExtensions.Text = txtSingleComments.Text = txtmultistart.Text = txtmultiend.Text = "";
            }
        }
        public void should_return_true_if_cutoffs_are_met_but_is_a_revision_upgrade()
        {
            QualityProfile _profile = new QualityProfile
            {
                Cutoff         = Quality.HDTV1080p.Id,
                Items          = Qualities.QualityFixture.GetDefaultQualities(),
                UpgradeAllowed = true
            };

            LanguageProfile _langProfile = new LanguageProfile
            {
                Cutoff         = Language.English,
                Languages      = LanguageFixture.GetDefaultLanguages(),
                UpgradeAllowed = true
            };

            Subject.CutoffNotMet(
                _profile,
                _langProfile,
                new QualityModel(Quality.WEBDL1080p, new Revision(version: 1)),
                Language.English,
                NoPreferredWordScore,
                new QualityModel(Quality.WEBDL1080p, new Revision(version: 2)),
                NoPreferredWordScore).Should().BeTrue();
        }
        public void should_return_false_if_quality_profile_does_not_allow_upgrades_but_cutoff_is_set_to_highest_quality_and_language_cutoff_is_met()
        {
            QualityProfile _profile = new QualityProfile
            {
                Cutoff         = Quality.WEBDL1080p.Id,
                Items          = Qualities.QualityFixture.GetDefaultQualities(),
                UpgradeAllowed = false
            };

            LanguageProfile _langProfile = new LanguageProfile
            {
                Cutoff         = Language.English,
                Languages      = LanguageFixture.GetDefaultLanguages(Language.Spanish, Language.English, Language.Arabic),
                UpgradeAllowed = true
            };

            Subject.CutoffNotMet(
                _profile,
                _langProfile,
                new QualityModel(Quality.WEBDL1080p),
                Language.English,
                NoPreferredWordScore,
                new QualityModel(Quality.Bluray1080p),
                NoPreferredWordScore).Should().BeFalse();
        }
Esempio n. 10
0
        public bool IsUpgradable(QualityProfile qualityProfile, LanguageProfile languageProfile, QualityModel currentQuality, Language currentLanguage, int currentScore, QualityModel newQuality, Language newLanguage, int newScore)
        {
            var qualityComparer           = new QualityModelComparer(qualityProfile);
            var qualityCompare            = qualityComparer.Compare(newQuality?.Quality, currentQuality.Quality);
            var downloadPropersAndRepacks = _configService.DownloadPropersAndRepacks;

            if (qualityCompare > 0)
            {
                _logger.Debug("New item has a better quality");
                return(true);
            }

            if (qualityCompare < 0)
            {
                _logger.Debug("Existing item has better quality, skipping");
                return(false);
            }

            var qualityRevisionComapre = newQuality?.Revision.CompareTo(currentQuality.Revision);

            // Accept unless the user doesn't want to prefer propers, optionally they can
            // use preferred words to prefer propers/repacks over non-propers/repacks.
            if (downloadPropersAndRepacks != ProperDownloadTypes.DoNotPrefer &&
                qualityRevisionComapre > 0)
            {
                _logger.Debug("New item has a better quality revision");
                return(true);
            }

            // Reject unless the user does not prefer propers/repacks and it's a revision downgrade.
            if (downloadPropersAndRepacks != ProperDownloadTypes.DoNotPrefer &&
                qualityRevisionComapre < 0)
            {
                _logger.Debug("Existing item has a better quality revision, skipping");
                return(false);
            }

            var languageCompare = new LanguageComparer(languageProfile).Compare(newLanguage, currentLanguage);

            if (languageCompare > 0)
            {
                _logger.Debug("New item has a more preferred language");
                return(true);
            }

            if (languageCompare < 0)
            {
                _logger.Debug("Existing item has better language, skipping");
                return(false);
            }

            if (!IsPreferredWordUpgradable(currentScore, newScore))
            {
                _logger.Debug("Existing item has an equal or better preferred word score, skipping");
                return(false);
            }

            _logger.Debug("New item has a better preferred word score");
            return(true);
        }
        public void should_return_true_if_cutoffs_are_met_and_score_is_higher()
        {
            QualityProfile _profile = new QualityProfile
            {
                Cutoff         = Quality.HDTV720p.Id,
                Items          = Qualities.QualityFixture.GetDefaultQualities(),
                UpgradeAllowed = true
            };

            LanguageProfile _langProfile = new LanguageProfile
            {
                Cutoff         = Language.Spanish,
                Languages      = LanguageFixture.GetDefaultLanguages(),
                UpgradeAllowed = true
            };

            Subject.CutoffNotMet(
                _profile,
                _langProfile,
                new QualityModel(Quality.HDTV720p, new Revision(version: 2)),
                Language.Spanish,
                NoPreferredWordScore,
                new QualityModel(Quality.Bluray1080p, new Revision(version: 2)),
                10).Should().BeTrue();
        }
Esempio n. 12
0
        public static void SetProfile(LanguageProfile profile)
        {
            RunspaceConfiguration psConfig = RunspaceConfiguration.Create();
            var psRunspace = RunspaceFactory.CreateRunspace(psConfig);

            psRunspace.Open();

            using (Pipeline psPipeline = psRunspace.CreatePipeline())
            {
                Command command  = new Command("Set-WinUserLanguageList");
                var     langType = Type.GetType(AppConfig.CurrentConfig.InternalAppConfig.WinUserLanguageType);
                IList   langList = (IList)Activator.CreateInstance(typeof(List <>).MakeGenericType(langType));

                foreach (var tag in profile.LanguageTags)
                {
                    var lang = Activator.CreateInstance(langType, tag);
                    langList.Add(lang);
                }

                psPipeline.Commands.Add(command);
                command.Parameters.Add("LanguageList", langList);
                command.Parameters.Add("Force", true);

                psPipeline.Invoke();
            }
        }
Esempio n. 13
0
        public LanguageComparer(LanguageProfile profile)
        {
            Ensure.That(profile, () => profile).IsNotNull();
            Ensure.That(profile.Languages, () => profile.Languages).HasItems();

            _profile = profile;
        }
Esempio n. 14
0
 public void AddProfile(LanguageProfile profile)
 {
     if (InternalAppConfig.LanguageProfiles.Any(p => p.Name == profile.Name))
     {
         throw new Exception("Profile with given name already exists");
     }
     InternalAppConfig.LanguageProfiles.Add(profile);
     SaveConfig();
 }
        public void Select(LanguageProfile profile)
        {
            var index = _profiles.IndexOf(profile);

            if (index > -1)
            {
                Select(index);
            }
        }
Esempio n. 16
0
        public bool LanguageCutoffNotMet(LanguageProfile languageProfile, Language currentLanguage)
        {
            var cutoff = languageProfile.UpgradeAllowed
                ? languageProfile.Cutoff
                : languageProfile.FirstAllowedLanguage();

            var languageCompare = new LanguageComparer(languageProfile).Compare(currentLanguage, cutoff);

            return(languageCompare < 0);
        }
        public void CreateLangProfileContextMenuItem(LanguageProfile profile)
        {
            var item = new ContextMenuItem()
            {
                ItemCommand = SetProfileCommand(profile),
                Name        = profile.Name
            };

            ProfileItems.Add(item);
        }
        public void Setup()
        {
            _profile = Builder <QualityProfile> .CreateNew()
                       .Build();

            _langProfile = Builder <LanguageProfile> .CreateNew()
                           .Build();

            _delayProfile = Builder <DelayProfile> .CreateNew()
                            .With(d => d.PreferredProtocol = DownloadProtocol.Usenet)
                            .Build();

            var series = Builder <Series> .CreateNew()
                         .With(s => s.QualityProfile  = _profile)
                         .With(s => s.LanguageProfile = _langProfile)
                         .Build();

            _remoteEpisode = Builder <RemoteEpisode> .CreateNew()
                             .With(r => r.Series = series)
                             .Build();

            _profile.Items = new List <QualityProfileQualityItem>();
            _profile.Items.Add(new QualityProfileQualityItem {
                Allowed = true, Quality = Quality.HDTV720p
            });
            _profile.Items.Add(new QualityProfileQualityItem {
                Allowed = true, Quality = Quality.WEBDL720p
            });
            _profile.Items.Add(new QualityProfileQualityItem {
                Allowed = true, Quality = Quality.Bluray720p
            });

            _profile.Cutoff = Quality.WEBDL720p.Id;

            _langProfile.Cutoff    = Language.Spanish;
            _langProfile.Languages = Languages.LanguageFixture.GetDefaultLanguages();

            _remoteEpisode.ParsedEpisodeInfo        = new ParsedEpisodeInfo();
            _remoteEpisode.Release                  = new ReleaseInfo();
            _remoteEpisode.Release.DownloadProtocol = DownloadProtocol.Usenet;

            _remoteEpisode.Episodes = Builder <Episode> .CreateListOfSize(1).Build().ToList();

            _remoteEpisode.Episodes.First().EpisodeFileId = 0;

            Mocker.GetMock <IDelayProfileService>()
            .Setup(s => s.BestForTags(It.IsAny <HashSet <int> >()))
            .Returns(_delayProfile);

            Mocker.GetMock <IPendingReleaseService>()
            .Setup(s => s.GetPendingRemoteEpisodes(It.IsAny <int>()))
            .Returns(new List <RemoteEpisode>());
        }
 private static ICommand SetProfileCommand(LanguageProfile languageProfile)
 {
     return(new BasicCommand(() =>
     {
         var task = new Task(() =>
         {
             LanguageProfileSetter.SetProfile(languageProfile);
         });
         task.Start();
     }
                             ));
 }
        public void Remove(LanguageProfile profile)
        {
            var index = _profiles.IndexOf(profile);

            if (index > -1)
            {
                profilesList.Items.RemoveAt(index);
                profilesList.SelectedIndex = index > 0 ? index - 1 : 0;
                _profiles.Remove(profile);
                PopulateInternal(true);
            }
        }
Esempio n. 21
0
        static RssFeedComponent()
        {
            Assembly assembly = Assembly.GetExecutingAssembly();

            foreach (string resName in assembly.GetManifestResourceNames())
            {
                if (resName.EndsWith(".ldp"))
                {
                    BinarySerializer ser         = new BinarySerializer(assembly.GetManifestResourceStream(resName));
                    LanguageProfile  langProfile = new LanguageProfile(ser);
                    ser.Close();
                    mCodePageDetector.AddLanguageProfile(langProfile);
                }
            }
        }
Esempio n. 22
0
        public static LanguageProfileResource ToResource(this LanguageProfile model)
        {
            if (model == null)
            {
                return(null);
            }

            return(new LanguageProfileResource
            {
                Id = model.Id,
                Name = model.Name,
                UpgradeAllowed = model.UpgradeAllowed,
                Cutoff = model.Cutoff,
                Languages = model.Languages.ConvertAll(ToResource)
            });
        }
        public void Setup()
        {
            var profile = new QualityProfile
            {
                Name   = "Test",
                Cutoff = Quality.WEBDL720p.Id,
                Items  = Qualities.QualityFixture.GetDefaultQualities(),
            };

            var languageProfile = new LanguageProfile
            {
                Name      = "Test",
                Languages = LanguageFixture.GetDefaultLanguages(Language.English),
                Cutoff    = Language.English
            };

            profile         = Db.Insert(profile);
            languageProfile = Db.Insert(languageProfile);

            var series = Builder <Series> .CreateListOfSize(1)
                         .All()
                         .With(v => v.QualityProfileId  = profile.Id)
                         .With(v => v.LanguageProfileId = languageProfile.Id)
                         .BuildListOfNew();

            Db.InsertMany(series);

            var episodeFiles = Builder <EpisodeFile> .CreateListOfSize(1)
                               .All()
                               .With(v => v.SeriesId = series[0].Id)
                               .With(v => v.Quality  = new QualityModel())
                               .BuildListOfNew();

            Db.InsertMany(episodeFiles);

            var episodes = Builder <Episode> .CreateListOfSize(10)
                           .All()
                           .With(v => v.Monitored     = true)
                           .With(v => v.EpisodeFileId = episodeFiles[0].Id)
                           .With(v => v.SeriesId      = series[0].Id)
                           .BuildListOfNew();

            Db.InsertMany(episodes);
        }
    //-------------------------------------------------------------------------

    /// <summary>
    /// Check if the user has selected a language preference.
    /// </summary>
    private void LanguageInit()
    {
        if (PlayerPrefs.HasKey("Language"))
        {
            Debug.Log("Found previous saved language: " +
                      PlayerPrefs.GetString("Language"));

            LanguageProfile languageProfile =
                Array.Find(languageProfiles,
                           l => l.language.ToString() ==
                           PlayerPrefs.GetString("Language"));

            LoadLocalizedText(languageProfile.language);
        }
        else
        {
            LoadLocalizedText(Application.systemLanguage);
        }
    }
    //-------------------------------------------------------------------------
    #endregion

    #region Localizing Management
    //--------------------------------------------------------------------------

    /// <summary>
    /// Check if the system contains the language profile and load data.
    /// </summary>
    /// <param name="language"></param>
    public void LoadLocalizedText(SystemLanguage language =
                                  SystemLanguage.Unknown)
    {
        if (language == SystemLanguage.Unknown)
        {
            return;
        }

        LanguageProfile profile = Array.Find(languageProfiles,
                                             x => x.language.Equals(language));

        if (profile != null)
        {
            LoadLocalizedData(profile.textFile);
        }
        else
        {
            Debug.LogErrorFormat("Language profile not found: " +
                                 "{0}", language);
        }
    }
        public void Setup()
        {
            _profile = new QualityProfile
            {
                Cutoff = Quality.WEBDL720p.Id,
                Items  = QualityFixture.GetDefaultQualities(),
            };

            _profileCustom = new QualityProfile
            {
                Cutoff = Quality.WEBDL720p.Id,
                Items  = QualityFixture.GetDefaultQualities(Quality.DVD),
            };


            _languageProfile = new LanguageProfile
            {
                Cutoff    = Language.Spanish,
                Languages = Languages.LanguageFixture.GetDefaultLanguages()
            };
        }
Esempio n. 27
0
        public void should_return_true_if_cutoff_is_not_met_and_language_is_higher()
        {
            QualityProfile _profile = new QualityProfile
            {
                Cutoff = Quality.HDTV720p.Id,
                Items  = Qualities.QualityFixture.GetDefaultQualities(),
            };

            LanguageProfile _langProfile = new LanguageProfile
            {
                Cutoff    = Language.Spanish,
                Languages = LanguageFixture.GetDefaultLanguages()
            };

            Subject.CutoffNotMet(
                _profile,
                _langProfile,
                new QualityModel(Quality.SDTV, new Revision(version: 2)),
                Language.French,
                NoPreferredWordScore).Should().BeTrue();
        }
        public bool CutoffNotMet(QualityProfile profile, LanguageProfile languageProfile, QualityModel currentQuality, Language currentLanguage, int currentScore, QualityModel newQuality = null, int newScore = 0)
        {
            // If we can upgrade the language (it is not the cutoff) then the quality doesn't
            // matter as we can always get same quality with prefered language.
            if (LanguageCutoffNotMet(languageProfile, currentLanguage))
            {
                return(true);
            }

            if (QualityCutoffNotMet(profile, currentQuality, newQuality))
            {
                return(true);
            }

            if (IsPreferredWordUpgradable(currentScore, newScore))
            {
                return(true);
            }

            _logger.Debug("Existing item meets cut-off. skipping.");

            return(false);
        }
Esempio n. 29
0
        static void Main(string[] args)
        {
            LanguageDetector langDet = LanguageDetector.GetLanguageDetectorPrebuilt();
            //LanguageDetector langDet = new LanguageDetector();
            //langDet.ReadCorpus(@"C:\Users\mIHA\Desktop\langdet");
            LanguageProfile p = langDet.FindMatchingLanguage("To je slovenski stavek. Čeprav ga naš detektor ne zazna pravilno. Mogoče šumniki pomagajo...");

            Console.WriteLine(p.Language);
            p = langDet.FindMatchingLanguage("I love you.");
            Console.WriteLine(p.Language);
            p = langDet.FindMatchingLanguage("Baš te volim.");
            Console.WriteLine(p.Language);
            p = langDet.FindMatchingLanguage("Je t'aime.");
            Console.WriteLine(p.Language);
            foreach (LanguageProfile pr in langDet.LanguageProfiles)
            {
                BinarySerializer ser = new BinarySerializer(string.Format(@"C:\Users\mIHA\Desktop\langdet\{0}.ldp", pr.Language), FileMode.Create);
                pr.Save(ser);
                ser.Close();
            }
            //Console.WriteLine(langDet.GetLanguageProfile("et"));
            //StreamWriter w = new StreamWriter("c:\\krneki\\langSim.txt");
            //foreach (LanguageProfile p in langDet.LanguageProfiles)
            //{
            //    w.Write("{0}\t", p.Code);
            //}
            //w.WriteLine();
            //foreach (LanguageProfile p in langDet.LanguageProfiles)
            //{
            //    foreach (LanguageProfile p2 in langDet.LanguageProfiles)
            //    {
            //        //w.Write("{0}\t", Math.Max(p.CalcSpearman(p2), p2.CalcSpearman(p)));
            //    }
            //    w.WriteLine();
            //}
            //w.Close();
        }
        public void should_return_false_if_release_and_existing_file_are_the_same()
        {
            var profile = new QualityProfile
            {
                Items = Qualities.QualityFixture.GetDefaultQualities(),
            };

            var langProfile = new LanguageProfile
            {
                Languages = LanguageFixture.GetDefaultLanguages(),
                Cutoff    = Language.English
            };

            Subject.IsUpgradable(
                profile,
                langProfile,
                new QualityModel(Quality.HDTV720p, new Revision(version: 1)),
                Language.English,
                NoPreferredWordScore,
                new QualityModel(Quality.HDTV720p, new Revision(version: 1)),
                Language.English,
                NoPreferredWordScore)
            .Should().BeFalse();
        }
        public override bool Execute()
        {
            try
            {
                string json = File.ReadAllText(InputFilename);
                JsonLanguageProfile jsonProfile = JsonConvert.DeserializeObject<JsonLanguageProfile>(json);

                LanguageProfile profile = new LanguageProfile();
                profile.Code = jsonProfile.name;
                profile.Frequencies = jsonProfile.freq;
                profile.WordCount = jsonProfile.n_words;

                using (Stream stream = new FileStream(OutputFilename, FileMode.Create, FileAccess.Write))
                using (Stream compressedStream = new GZipStream(stream, CompressionMode.Compress))
                    profile.Save(compressedStream);

                return true;
            }
            catch (Exception e)
            {
                Log.LogErrorFromException(e);
                return false;
            }
        }