예제 #1
0
        public void RoundTest(Language lang, string reference, string text)
        {
            var latin  = Transliteration.CyrillicToLatin(text, lang);
            var actual = Transliteration.LatinToCyrillic(latin, lang);

            Assert.Equal(text, actual);
        }
예제 #2
0
        public void TransliterateFullname(Talent talent)
        {
            string fullNameTransliterated = null;

            if (Regex.IsMatch(talent.FullName, @"\p{IsCyrillic}"))
            {
                // there is at least one cyrillic character in the string
                fullNameTransliterated = Transliteration.CyrillicToLatin(talent.FullName, Language.Russian);
            }
            else
            {
                fullNameTransliterated = Transliteration.LatinToCyrillic(talent.FullName, Language.Russian);
            }

            talent.FullNameTransliterated = fullNameTransliterated;
        }
예제 #3
0
        private static async Task MakeCall()
        {
            Log.Information("Making call");
            if (s_SpotifyToken.IsExpired())
            {
                Log.Debug("Spotify token expired... Refreshing");
                await RefreshSpotifyToken();
            }

            var playbackContext = await s_SpotifyAPI.GetPlaybackAsync();

            var summary = await s_SteamAPI.GetPlayerSummaryAsync(s_SteamId);

            if (playbackContext?.HasError() != false)
            {
                Log.Warning("playbackContext is null or has a error");
                if (playbackContext.Error is not null)
                {
                    Log.Warning(playbackContext.Error.ToString());
                }
            }

            // Spotify music is playing?
            var isPlayingSpotify = playbackContext?.IsPlaying == true && playbackContext.Item != null;

            if (isPlayingSpotify)
            {
                var audios = await s_VKAPI.Audio.SearchAsync(new()
                {
                    SearchOwn     = false,
                    PerformerOnly = false,
                    Count         = 1,
                    Query         = $"{Extensions.GetArtists(playbackContext.Item.Artists)} {playbackContext.Item.Name}"
                });

                string vkFullAudio;
                if (audios?.Any() == false)
                {
                    Log.Debug("Didn't found a music in VK");
                    Log.Debug("Trying translit to russian");

                    audios = await s_VKAPI.Audio.SearchAsync(new()
                    {
                        SearchOwn     = false,
                        PerformerOnly = false,
                        Count         = 1,
                        Query         = $"{Transliteration.LatinToCyrillic(Extensions.GetArtists(playbackContext.Item.Artists))} {playbackContext.Item.Name}"
                    });

                    var audio = audios.FirstOrDefault();
                    vkFullAudio = audio is not null ? $"{audio.OwnerId}_{audio.Id}" : string.Empty;
                }
                else
                {
                    var audio = audios[0];
                    vkFullAudio = $"{audio.OwnerId}_{audio.Id}";
                }

                if (!string.IsNullOrEmpty(vkFullAudio))
                {
                    Log.Debug($"Found music in VK {vkFullAudio}");

                    if (s_VKAudioId == vkFullAudio)
                    {
                        Log.Debug("Old VkAudio is equals to new.. Skipping");
                        return;
                    }
                    s_VKAudioId = vkFullAudio;
                    await s_VKAPI.Audio.SetBroadcastAsync(vkFullAudio);

                    return;
                }

                Log.Debug("Didn't found a music in VK");
                Log.Debug($"Searched: {playbackContext.Item.Name}");
            }
            else if (!string.IsNullOrEmpty(s_VKAudioId))
            {
                Log.Debug("Set not listening");
                s_VKAudioId = string.Empty;
                await s_VKAPI.Audio.SetBroadcastAsync();
            }

            // Steam playing game
            var gameNameSteam = summary.Data?.PlayingGameName;
            // Steam user is online
            var isOnlineSteam = summary.Data?.UserStatus is UserStatus.Online;
            var sb            = new StringBuilder();

            if (isPlayingSpotify)
            {
                sb.Append(s_StringLocalizer["Spotify", new[] { Extensions.GetArtists(playbackContext.Item.Artists), playbackContext.Item.Name,
                                                               Extensions.GetTime(playbackContext.Item.DurationMs, playbackContext.ProgressMs) }]);
            }
            else
            {
                sb.Append(s_StringLocalizer["SpotifyNothing"]);
            }

            sb.Append(s_StringLocalizer["Steam",
                                        new[] { string.IsNullOrEmpty(gameNameSteam) ? isOnlineSteam ? "в онлайне" : "в оффлайне" : gameNameSteam }]);

            if (!(isPlayingSpotify || !string.IsNullOrEmpty(gameNameSteam)))
            {
                sb.Append(s_StringLocalizer["AFK"]);
            }

            var status = sb.ToString();

            Log.Verbose(status);
            if (s_VKStatus == status)
            {
                Log.Debug("Old status is equals to new. Skip the updating");
                return;
            }

            s_VKStatus = status;
            await s_VKAPI.Status.SetAsync(s_VKStatus);
        }
예제 #4
0
 public string L2Cv14() => Transliteration.LatinToCyrillic(_latin, Language.Russian);
예제 #5
0
        public void L2CInvalidLanguageTest()
        {
            var lang = default(Language) - 1;

            Assert.Throws <NotSupportedException>(() => Transliteration.LatinToCyrillic("123", lang));
        }
예제 #6
0
        public void L2CNumTest()
        {
            var result = Transliteration.LatinToCyrillic("123");

            Assert.Equal("123", result);
        }
예제 #7
0
        public void L2CSimpleTest()
        {
            var result = Transliteration.LatinToCyrillic("Abv");

            Assert.Equal("Абв", result);
        }
예제 #8
0
        public void L2CEmptyTest()
        {
            var result = Transliteration.LatinToCyrillic("");

            Assert.Equal("", result);
        }
예제 #9
0
        public void L2CNullTest()
        {
            var result = Transliteration.LatinToCyrillic(null);

            Assert.Null(result);
        }
예제 #10
0
        public void ExactL2CTest(Language lang, string reference, string cyrillic, string latin)
        {
            var actual = Transliteration.LatinToCyrillic(latin, lang);

            Assert.Equal(cyrillic, actual);
        }