Skip to content

Commit bb4053a

Browse files
committedJul 20, 2024·
Fix various download issues
1 parent 5a215c1 commit bb4053a

File tree

5 files changed

+35
-9
lines changed

5 files changed

+35
-9
lines changed
 

‎downloader/Downloader/Models/ITabView.cs

+1
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,5 @@ namespace Downloader.Models;
55
public interface ITabView
66
{
77
public void AfterInit();
8+
public void OnDataRefresh();
89
}

‎downloader/Downloader/ViewModels/ImportAlbumsViewModel.cs

+20-6
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,11 @@
66
using MsBox.Avalonia.Enums;
77
using ReactiveUI;
88
using System;
9-
using System.IO;
109
using System.Linq;
1110
using System.Text.Json;
1211
using System.Threading.Tasks;
1312
using System.Web;
1413
using System.Windows.Input;
15-
using System.Xml.Linq;
1614

1715
namespace Downloader.ViewModels;
1816

@@ -31,32 +29,40 @@ public ImportAlbumsViewModel(MainViewModel mainViewModel)
3129
IsImporting = true;
3230
_ = Task.Run(async () =>
3331
{
32+
string reqUrl;
33+
LastFmApi json;
3434
try
3535
{
3636
var songs = _mainViewModel.Data.Musics.Where(x => x.Album == null);
3737
if (ImportLocalOnly)
3838
{
3939
songs = songs.Where(x => x.Source == "localfile");
4040
}
41+
int i = 0;
42+
var songCount = songs.Count();
4143
foreach (var s in songs)
4244
{
43-
var reqUrl = $"https://ws.audioscrobbler.com/2.0/?method=track.getInfo&api_key={LastFmApiKey}&artist={HttpUtility.UrlEncode(s.Artist)}&track={HttpUtility.UrlEncode(s.Name)}&format=json";
44-
var json = JsonSerializer.Deserialize<LastFmApi>(await _mainViewModel.Client.GetStringAsync(reqUrl));
45+
reqUrl = $"https://ws.audioscrobbler.com/2.0/?method=track.getInfo&api_key={LastFmApiKey}&artist={HttpUtility.UrlEncode(s.Artist)}&track={HttpUtility.UrlEncode(s.Name)}&format=json";
46+
json = JsonSerializer.Deserialize<LastFmApi>(await _mainViewModel.Client.GetStringAsync(reqUrl), _mainViewModel.JsonOptions);
4547

46-
if (json.Message != null && json.Track.Album != null && json.Track.Album.Image.Any())
48+
if (json.Message == null && json.Track.Album != null && json.Track.Album.Image.Any())
4749
{
4850
string album = json.Track.Album.Title;
4951
var url = json.Track.Album.Image.Last().Text;
5052
if (url != string.Empty)
5153
{
5254
var path = _mainViewModel.GetAlbumName(s.Artist, album);
53-
if (_mainViewModel.Data.Albums.Any(x => x.Key == path))
55+
if (!_mainViewModel.Data.Albums.Any(x => x.Key == path))
5456
{
5557
await foreach (var prog in ProcessManager.DownloadImageAsync(_mainViewModel.Client, url, $"{_mainViewModel.DataFolderPath}/icon/{path}.png")) { }
58+
s.Album = path;
5659
_mainViewModel.SaveImage(path, album, url);
5760
}
5861
}
5962
}
63+
64+
i++;
65+
ImportAlbums = i / (float)songCount;
6066
}
6167
}
6268
catch (Exception ex)
@@ -69,6 +75,9 @@ public ImportAlbumsViewModel(MainViewModel mainViewModel)
6975
}
7076
finally
7177
{
78+
_mainViewModel.SaveData();
79+
UpdateAffectedFiles();
80+
ImportAlbums = 0f;
7281
IsImporting = false;
7382
}
7483
});
@@ -86,6 +95,11 @@ public void AfterInit()
8695
UpdateAffectedFiles();
8796
}
8897

98+
public void OnDataRefresh()
99+
{
100+
UpdateAffectedFiles();
101+
}
102+
89103
private MainViewModel _mainViewModel;
90104

91105
public ICommand ImportAll { get; }

‎downloader/Downloader/ViewModels/ImportSongsViewModel.cs

+3-1
Original file line numberDiff line numberDiff line change
@@ -137,10 +137,12 @@ private void UpdatePreview()
137137

138138
public void AfterInit()
139139
{
140-
ImportSong = 0;
141140
UpdatePreview();
142141
}
143142

143+
public void OnDataRefresh()
144+
{ }
145+
144146
private string[] _allFiles = [];
145147
private string[] _songPreview = [];
146148

‎downloader/Downloader/ViewModels/MainViewModel.cs

+8-2
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ public MainViewModel()
6666
..DataImportChoices,
6767
target.Path.LocalPath
6868
];
69-
DataImportIndex = files.Count - 1;
69+
DataImportIndex = DataImportChoices.Length - 1;
7070
}
7171
}
7272
});
@@ -141,6 +141,11 @@ public void LateInit()
141141

142142
public const string AudioFormat = "mp3";
143143

144+
public void SaveData()
145+
{
146+
File.WriteAllText(DataPath, JsonSerializer.Serialize(Data, JsonOptions));
147+
}
148+
144149
public void SaveImage(string key, string name, string source)
145150
{
146151
Data.Albums.Add(key, new()
@@ -221,8 +226,9 @@ public async ValueTask<bool> AddMusicAsync(string songName, string? source, stri
221226
fileMethod(normMusicPath, $"{DataFolderPath}/normalized/{outMusicPath}");
222227

223228
// Update the JSON with all we did
224-
File.WriteAllText(DataPath, JsonSerializer.Serialize(Data, JsonOptions));
229+
SaveData();
225230
UpdateMainUI();
231+
foreach (var view in Views) view.OnDataRefresh();
226232
return true;
227233
}
228234
catch (Exception ex)

‎downloader/Downloader/ViewModels/YoutubeDownloadViewModel.cs

+3
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,9 @@ public void AfterInit()
179179
ClearAll();
180180
}
181181

182+
public void OnDataRefresh()
183+
{ }
184+
182185
public ICommand DownloadCmd { get; }
183186

184187
private MainViewModel _mainViewModel;

0 commit comments

Comments
 (0)
Please sign in to comment.