public async Task <IMusicDetailGetResponse> GetMusicDetailAsync(IMusicDetailGetRequest request)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            if (WebBrowserNavigator.WebBrowser.Address != ChunithmNetUrl.MusicGenre)
            {
                await WebBrowserNavigator.LoadAsync(ChunithmNetUrl.MusicGenre);
            }

            await WebBrowserNavigator.EvaluatePageMoveScriptAsync($@"
var genreSelecter = document.getElementsByName('genre')[0];
genreSelecter.value = 99;
formSubmitAddParam('music_genre', 'level_master');
");

            await WebBrowserNavigator.EvaluatePageMoveScriptAsync($@"
formSubmitAddParam('music_detail', 'musicId_{request.Id}');
");

            var   responseAsync = MusicDetailGetResponse.CreateResponseAsync(WebBrowserNavigator.WebBrowser);
            await responseAsync;
            var   response = responseAsync.Result;

            if (response.Success)
            {
                var musicDetailParser = new MusicDetailParser();
                response.MusicDetail = musicDetailParser.Parse(response.DocumentText);
            }
            return(response);
        }
示例#2
0
        public async Task <IMusicDetailGetResponse> GetMusicDetailAsync(IMusicDetailGetRequest request)
        {
            if (WebBrowserNavigator.WebBrowser.Url?.AbsoluteUri != ChunithmNetUrl.MusicGenre)
            {
                await WebBrowserNavigator.NavigateAsync(ChunithmNetUrl.MusicGenre);
            }

            var   musicGenre = WebBrowserNavigator.InvokeScriptAsync("formSubmitAddParam", new[] { "music_genre", "level_master" });
            await musicGenre;

            var   musicDetail = WebBrowserNavigator.InvokeScriptAsync("formSubmitAddParam", new[] { "music_detail", $"musicId_{request.Id}" });
            await musicDetail;

            var response = new MusicDetailGetResponse(WebBrowserNavigator.WebBrowser);

            if (response.Success)
            {
                var musicDetailParser = new MusicDetailParser();
                response.MusicDetail = musicDetailParser.Parse(WebBrowserNavigator.WebBrowser.DocumentText);
            }
            return(response);
        }
示例#3
0
        public async Task <IMusicDetailGetResponse> GetMusicDetailAsync(IMusicDetailGetRequest request)
        {
            var musicDetailContent = new FormUrlEncodedContent(new Dictionary <string, string>
            {
                { "idx", request.Id.ToString() },
                { "token", token },
            });

            var   musicDetailRequest = client.PostAsync(ChunithmNetUrl.CreateUrl("record/musicGenre/sendMusicDetail"), musicDetailContent);
            await musicDetailRequest;

            var   musicDetail = client.GetAsync(ChunithmNetUrl.CreateUrl("record/musicDetail"));
            await musicDetail;

            var response = new MusicDetailGetResponse(musicDetail.Result);

            if (response.Success)
            {
                var musicDetailParser = new MusicDetailParser();
                response.MusicDetail = musicDetailParser.Parse(response.DocumentText);
            }

            return(response);
        }
        public void MusicDetailParser_Error_Test1()
        {
            var musicDetail = new MusicDetailParser().Parse(TestUtility.LoadResource("Common/error_page.html"));

            Assert.IsNull(musicDetail);
        }
        public void MusicDetailParser_Test1()
        {
            var path        = TestUtility.GetResourcePath("MusicDetail/html_test_case_1.html");
            var source      = Utility.LoadStringContent(path);
            var parser      = new MusicDetailParser();
            var musicDetail = parser.Parse(source);

            Assert.IsNotNull(musicDetail, "パースチェック");
            Assert.AreEqual("業 -善なる神とこの世の悪について-", musicDetail.Name, "楽曲名チェック");
            Assert.AreEqual("光吉猛修 VS 穴山大輔", musicDetail.ArtistName, "アーティスト名チェック");
            Assert.AreEqual("https://chunithm-net.com/mobile/img/6c682b055a448ee8.jpg", musicDetail.ImageName, "イメージ名チェック");

            {
                var unit = musicDetail.Basic;
                Assert.IsNotNull(unit, "BASICパースチェック");
                Assert.AreEqual(Difficulty.Basic, unit.Difficulty, "難易度");
                Assert.AreEqual(1010000, unit.Score, "スコア");
                Assert.AreEqual(Rank.SSS, unit.Rank, "ランク");
                Assert.AreEqual(true, unit.IsClear, "クリア");
                Assert.AreEqual(ComboStatus.AllJustice, unit.ComboStatus, "フルコンボステータス");
                Assert.AreEqual(ChainStatus.None, unit.ChainStatus, "フルチェインステータス");
                Assert.AreEqual(new DateTime(2018, 9, 21, 20, 5, 0), unit.PlayDate, "最終プレイ日時");
                Assert.AreEqual(1, unit.PlayCount, "プレイ回数");
            }
            {
                var unit = musicDetail.Advanced;
                Assert.IsNotNull(unit, "ADVANCEDパースチェック");
                Assert.AreEqual(Difficulty.Advanced, unit.Difficulty, "難易度");
                Assert.AreEqual(1010000, unit.Score, "スコア");
                Assert.AreEqual(Rank.SSS, unit.Rank, "ランク");
                Assert.AreEqual(true, unit.IsClear, "クリア");
                Assert.AreEqual(ComboStatus.AllJustice, unit.ComboStatus, "フルコンボステータス");
                Assert.AreEqual(ChainStatus.None, unit.ChainStatus, "フルチェインステータス");
                Assert.AreEqual(new DateTime(2018, 9, 27, 22, 1, 0), unit.PlayDate, "最終プレイ日時");
                Assert.AreEqual(4, unit.PlayCount, "プレイ回数");
            }
            {
                var unit = musicDetail.Expert;
                Assert.IsNotNull(unit, "EXPERTパースチェック");
                Assert.AreEqual(Difficulty.Expert, unit.Difficulty, "難易度");
                Assert.AreEqual(1006294, unit.Score, "スコア");
                Assert.AreEqual(Rank.SS, unit.Rank, "ランク");
                Assert.AreEqual(true, unit.IsClear, "クリア");
                Assert.AreEqual(ComboStatus.None, unit.ComboStatus, "フルコンボステータス");
                Assert.AreEqual(ChainStatus.None, unit.ChainStatus, "フルチェインステータス");
                Assert.AreEqual(new DateTime(2018, 10, 1, 21, 53, 0), unit.PlayDate, "最終プレイ日時");
                Assert.AreEqual(3, unit.PlayCount, "プレイ回数");
            }
            {
                var unit = musicDetail.Master;
                Assert.IsNotNull(unit, "MASTERパースチェック");
                Assert.AreEqual(Difficulty.Master, unit.Difficulty, "難易度");
                Assert.AreEqual(991731, unit.Score, "スコア");
                Assert.AreEqual(Rank.S, unit.Rank, "ランク");
                Assert.AreEqual(true, unit.IsClear, "クリア");
                Assert.AreEqual(ComboStatus.None, unit.ComboStatus, "フルコンボステータス");
                Assert.AreEqual(ChainStatus.None, unit.ChainStatus, "フルチェインステータス");
                Assert.AreEqual(new DateTime(2018, 10, 7, 15, 21, 0), unit.PlayDate, "最終プレイ日時");
                Assert.AreEqual(7, unit.PlayCount, "プレイ回数");
            }
        }