From 4c24dc1791800550ad020af78acc74044339c8b0 Mon Sep 17 00:00:00 2001 From: torum <37834607+torum@users.noreply.github.com> Date: Fri, 4 Jun 2021 06:56:31 +0900 Subject: [PATCH] v3.0.7.0 Fixed Github issue #4 (multiple "Genre" key/tag) --- MPDCtrl-Desktop/MPDCtrl/App.xaml.cs | 1 + MPDCtrl-Desktop/MPDCtrl/MPDCtrl.csproj | 2 +- MPDCtrl-Desktop/MPDCtrl/Models/MPC.cs | 102 ++++++++++++++++-- .../MPDCtrl/ViewModels/MainViewModel.cs | 14 ++- 4 files changed, 108 insertions(+), 11 deletions(-) diff --git a/MPDCtrl-Desktop/MPDCtrl/App.xaml.cs b/MPDCtrl-Desktop/MPDCtrl/App.xaml.cs index a1b1bd5..1064b1a 100644 --- a/MPDCtrl-Desktop/MPDCtrl/App.xaml.cs +++ b/MPDCtrl-Desktop/MPDCtrl/App.xaml.cs @@ -5,6 +5,7 @@ using System.Linq; using System.Text; using System.IO; +using System.Diagnostics; using System.Globalization; using MPDCtrl.ViewModels; using MPDCtrl.ViewModels.Classes; diff --git a/MPDCtrl-Desktop/MPDCtrl/MPDCtrl.csproj b/MPDCtrl-Desktop/MPDCtrl/MPDCtrl.csproj index 52dfb58..e4158d7 100644 --- a/MPDCtrl-Desktop/MPDCtrl/MPDCtrl.csproj +++ b/MPDCtrl-Desktop/MPDCtrl/MPDCtrl.csproj @@ -5,7 +5,7 @@ net5.0-windows true MPDCtrl2.ico - 3.0.6.0 + 3.0.7.0 torum Torum 2021 diff --git a/MPDCtrl-Desktop/MPDCtrl/Models/MPC.cs b/MPDCtrl-Desktop/MPDCtrl/Models/MPC.cs index 1173e98..85ba1f5 100644 --- a/MPDCtrl-Desktop/MPDCtrl/Models/MPC.cs +++ b/MPDCtrl-Desktop/MPDCtrl/Models/MPC.cs @@ -2655,8 +2655,11 @@ private Task ParseCurrentSong(string result) { if (SongValues.ContainsKey(StatusValuePair[0].Trim())) { - // Shouldn't be happening here. - break; + // Shouldn't be happening here except "Genre" + if (StatusValuePair[0].Trim() == "Genre") + { + SongValues["Genre"] = SongValues["Genre"] + "/" + value.Replace(StatusValuePair[0].Trim() + ": ", ""); + } } else { @@ -2749,6 +2752,46 @@ private Task ParsePlaylistInfo(string result) Id: 22637 */ + /* + try + { + + resultLines.Clear(); + resultLines.Add("file: Slamhaus/Slamwave/06 The Trial.flac"); + resultLines.Add("Last-Modified: 2021-05-27T19:20:50Z"); + resultLines.Add("Title: The Trial"); + resultLines.Add("Artist: Slamhaus"); + resultLines.Add("Date: 2021"); + resultLines.Add("Comment: Visit https://slamhaus.bandcamp.com"); + resultLines.Add("Album: Slamwave"); + resultLines.Add("Track: 6"); + resultLines.Add("AlbumArtist: Slamhaus"); + resultLines.Add("Time: 340"); + resultLines.Add("duration: 339.504"); + resultLines.Add("Pos: 5"); + resultLines.Add("Id: 1438"); + resultLines.Add("file: Harris Heller/Synthwave/Sunset/01 - Zig the Zag.flac"); + resultLines.Add("Last-Modified: 2021-06-03T16:52:10Z"); + resultLines.Add("Album: Sunset"); + resultLines.Add("AlbumArtist: Harris Heller"); + resultLines.Add("Artist: Harris Heller"); + resultLines.Add("Date: 2021-03-05"); + resultLines.Add("Disc: 1"); + resultLines.Add("Genre: Electro"); + resultLines.Add("Genre: Dance"); + resultLines.Add("Title: Zig the Zag"); + resultLines.Add("Track: 1"); + resultLines.Add("Time: 126"); + resultLines.Add("duration: 126.250"); + resultLines.Add("Pos: 6"); + resultLines.Add("Id: 1439"); + } + catch (Exception ex) + { + Debug.WriteLine("Error@ParsePlaylistInfo: " + ex.Message); + } + */ + try { IsBusy?.Invoke(this, true); @@ -2797,12 +2840,31 @@ private Task ParsePlaylistInfo(string result) SongValues.Clear(); } } + /* + if (!SongValues.ContainsKey(StatusValuePair[0].Trim())) + { + SongValues.Add(StatusValuePair[0].Trim(), value.Replace(StatusValuePair[0].Trim() + ": ", "")); + } + else + { + if (StatusValuePair[0].Trim() == "Genre") + { + SongValues["Genre"] = SongValues["Genre"] + "/" + value.Replace(StatusValuePair[0].Trim() + ": ", ""); + } + } + */ + } + if (!SongValues.ContainsKey(StatusValuePair[0].Trim())) + { SongValues.Add(StatusValuePair[0].Trim(), value.Replace(StatusValuePair[0].Trim() + ": ", "")); } else { - SongValues.Add(StatusValuePair[0].Trim(), value.Replace(StatusValuePair[0].Trim() + ": ", "")); + if (StatusValuePair[0].Trim() == "Genre") + { + SongValues["Genre"] = SongValues["Genre"] + "/" + value.Replace(StatusValuePair[0].Trim() + ": ", ""); + } } } } @@ -2842,7 +2904,7 @@ private Task ParsePlaylistInfo(string result) } catch (Exception ex) { - Debug.WriteLine("Error@ParsePlaylistInfo: " + ex.Message); + Debug.WriteLine("Exception@ParsePlaylistInfo: " + ex.Message); if (Application.Current != null) { @@ -3308,13 +3370,25 @@ private Task ParseSearchResult(string result) } // start over - SongValues.Add(ValuePair[0].Trim(), line.Replace(ValuePair[0].Trim() + ": ", "")); + //SongValues.Add(ValuePair[0].Trim(), line.Replace(ValuePair[0].Trim() + ": ", "")); } + /* else { SongValues.Add(ValuePair[0].Trim(), line.Replace(ValuePair[0].Trim() + ": ", "")); } - + */ + if (!SongValues.ContainsKey(ValuePair[0].Trim())) + { + SongValues.Add(ValuePair[0].Trim(), line.Replace(ValuePair[0].Trim() + ": ", "")); + } + else + { + if (ValuePair[0].Trim() == "Genre") + { + SongValues["Genre"] = SongValues["Genre"] + "/" + line.Replace(ValuePair[0].Trim() + ": ", ""); + } + } } } @@ -3438,13 +3512,25 @@ private ObservableCollection ParsePlaylistSongsResult(string result) } // start over - SongValues.Add(ValuePair[0].Trim(), line.Replace(ValuePair[0].Trim() + ": ", "")); + //SongValues.Add(ValuePair[0].Trim(), line.Replace(ValuePair[0].Trim() + ": ", "")); } + /* else { SongValues.Add(ValuePair[0].Trim(), line.Replace(ValuePair[0].Trim() + ": ", "")); } - + */ + if (!SongValues.ContainsKey(ValuePair[0].Trim())) + { + SongValues.Add(ValuePair[0].Trim(), line.Replace(ValuePair[0].Trim() + ": ", "")); + } + else + { + if (ValuePair[0].Trim() == "Genre") + { + SongValues["Genre"] = SongValues["Genre"] + "/" + line.Replace(ValuePair[0].Trim() + ": ", ""); + } + } } } diff --git a/MPDCtrl-Desktop/MPDCtrl/ViewModels/MainViewModel.cs b/MPDCtrl-Desktop/MPDCtrl/ViewModels/MainViewModel.cs index 2401c3e..e7aa866 100644 --- a/MPDCtrl-Desktop/MPDCtrl/ViewModels/MainViewModel.cs +++ b/MPDCtrl-Desktop/MPDCtrl/ViewModels/MainViewModel.cs @@ -61,8 +61,9 @@ namespace MPDCtrl.ViewModels /// 更新履歴: + /// v3.0.7 MS Store 公開。Github issue #4 "Incomplete rendering of tracks" fix (multiple "Genre" key/tag). Exceptionをログにちゃんと保存するようにした。 /// v3.0.6 MS Store 公開。 - /// v3.0.5.2 Github issue #4 "Incomplete rendering of tracks" fix. Exceptionをログにちゃんと保存するようにした。Progress updateをステータスバーにちゃんと表示するようにした。 + /// v3.0.5.2 Fixed Queue update conflicts when consume mode is on. Progress updateをステータスバーにちゃんと表示するようにした。 /// v3.0.5.1 TextBoxをRoundCorner化してみた。DebugWindowクリアするボタンにToolTipを付けた。AlbumArtの表示タイミングを少し遅らせてスムーズにした。IDEのメッセージに対処した。 /// v3.0.5 MS Store 公開。 /// v3.0.4.3 CurrentSongのIsNowPlayingがクリアされないシチュエーションがあった。profileが一つある状態で、もう一つ追加する際にデフォルトにするのオプションが強制される状態だった。 @@ -117,7 +118,7 @@ public class MainViewModel : ViewModelBase const string _appName = "MPDCtrl"; // Application version - const string _appVer = "v3.0.6.0"; + const string _appVer = "v3.0.7.0"; public static string AppVer { @@ -4166,6 +4167,15 @@ public void OnWindowClosing(object sender, CancelEventArgs e) } catch { } + // Save error logs. + if (Application.Current != null) + { + Application.Current.Dispatcher.Invoke(() => + { + App app = App.Current as App; + app.SaveErrorLog(); + }); + } } #endregion