Sagiri-Dev / Sagiri

Sagiri makes full use of Spotify-WebAPI It's third party app.
Other
10 stars 0 forks source link

[Bug] 特殊文字コードによる楽曲名の場合、意図せずソフトクラッシュする #30

Open Asteriskx opened 7 months ago

Asteriskx commented 7 months ago

image

Asteriskx commented 7 months ago

SoundCloud Service はまだローカルブランチにしかいないので、 リモートブランチ分のソフト影響は現状不明。 → 但し、挙動を見る感じ Spotify 側の楽曲でも同じ現象となる気がする。

Asteriskx commented 7 months ago

SagiriSelenium 側のソース部分かもと思って調査したけれど、検討違いかもしれない。 → SendKeys の仕様的にも特殊コードは受け付けるとあったから。

        /// <summary>
        /// Process for uploading album art to Twitter.
        /// </summary>
        /// <param name="isCompletedPreTask"></param>
        /// <param name="tweet"></param>
        /// <returns></returns>
        private async ValueTask<bool> _UploadAlbumArtProcessAsync(Task seleniumTask, string tweet, bool isUploadPicture)
        {
            try
            {
                // Here ChromeDriver instance is not created yet :-(
                var waitInterval = (_ChromeDriver is null) ? Helper.InitialInterval : Helper.TinyInterval;
                await Task.Delay(waitInterval);

                if (!seleniumTask.IsCompletedSuccessfully)
                    return false;

                var textAreaElement = _ChromeDriver?.FindElement(By.ClassName(Helper.TweetTextAreaTag));
                textAreaElement?.Click();
                textAreaElement?.SendKeys(tweet);
Asteriskx commented 7 months ago

現状なんもわからんになったので、GW 辺りにゆっくりデバッグする予定

Asteriskx commented 6 months ago

image

image

Asteriskx commented 6 months ago

Python : Tkinter な例 https://stackoverflow.com/questions/59138825/chromedriver-only-supports-characters-in-the-bmp-error-while-sending-emoji-with

Asteriskx commented 6 months ago

ダメだったので、別途考える https://twitter.com/Astrisk_/status/1787457643403161878

Asteriskx commented 6 months ago

ClipBoard 活用で解決した🚀🚀🚀

        /// <summary>
        /// Process for uploading album art to Twitter.
        /// </summary>
        /// <param name="seleniumTask"></param>
        /// <param name="tweet"></param>
        /// <param name="isUploadPicture"></param>
        /// <returns></returns>
        private async ValueTask<bool> _UploadAlbumArtProcessAsync(Task seleniumTask, string tweet, bool isUploadPicture)
        {
            try
            {
                // Here ChromeDriver instance is not created yet :-(
                var waitInterval = (_ChromeDriver is null) ? Helper.InitialInterval : Helper.TinyInterval;
                await Task.Delay(waitInterval);

                if (!seleniumTask.IsCompletedSuccessfully)
                    return false;

                // [Fix] OpenQA.Selenium.WebDriverException.
                var textAreaElement = _ChromeDriver?.FindElement(By.ClassName(Helper.TweetTextAreaTag));
                textAreaElement?.Click();
                //textAreaElement?.SendKeys(tweet); 

                ClipboardHelper.SetText(tweet);
                Actions action = new(_ChromeDriver);
                action.KeyDown(Keys.Control);
                action.SendKeys("v");
                action.KeyUp(Keys.Control);
                action.Perform();