1
0
mirror of synced 2025-02-17 19:09:25 +01:00

Boxを開いている状態で曲をダウンロードするとクラッシュする問題を修正 (#199)

* Boxを開いている状態で曲をダウンロードするとクラッシュする問題を修正

* 入れ子のboxに対応
This commit is contained in:
Takkkom 2022-05-25 22:58:21 +09:00 committed by GitHub
parent 2f94599b96
commit 8f04433245
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 45 additions and 16 deletions

View File

@ -98,30 +98,53 @@ namespace TJAPlayer3
public void UpdateDownloadBox()
{
C曲リストード downloadBox = null;
for (int i = 0; i < TJAPlayer3.Songs管理.list曲ルート.Count; i++)
{
if (TJAPlayer3.Songs管理.list曲ルート[i].strジャンル == "Download")
{
downloadBox = TJAPlayer3.Songs管理.list曲ルート[i];
if (downloadBox.r親ード != null) downloadBox = downloadBox.r親ード;
}
}
//無いかもしれないが万が一Boxのを選んだ状態でダウンロードした場合のために
while (TJAPlayer3.stage選曲.act曲リスト.r現在選択中の曲.r親ード != null)
{
TJAPlayer3.stage選曲.act曲リスト.tBOXを出る();
}
if (downloadBox != null)
{
var flatten = TJAPlayer3.stage選曲.act曲リスト.flattenList(downloadBox.list子リスト);
for (int i = 0; i < downloadBox.list子リスト.Count; i++)
{
if (downloadBox.list子リスト[i].eード種別 != C曲リストード.Eード種別.BACKBOX)
{
downloadBox.list子リスト.Remove(downloadBox.list子リスト[i]);
i--;
}
downloadBox.list子リスト.Remove(downloadBox.list子リスト[i]);
i--;
}
var path = downloadBox.arスコア[0]..;
if (flatten.Count > 0)
{
int index = list曲ルート.IndexOf(flatten[0]);
//t曲を検索してリストを作成する(@"Songs\S3 Download", true, downloadBox.list子リスト, downloadBox);
t曲を検索してリストを作成する(path, true, downloadBox.list子リスト, downloadBox);
tSongsDBになかった曲をファイルから読み込んで反映する(downloadBox.list子リスト);
if (!list曲ルート.Contains(downloadBox))
{
for (int i = 0; i < flatten.Count; i++)
{
this.list曲ルート.Remove(flatten[i]);
}
list曲ルート.Insert(index, downloadBox);
}
t曲を検索してリストを作成する(path, true, downloadBox.list子リスト, downloadBox);
this.t曲リストへ後処理を適用する(downloadBox.list子リスト, $"/{downloadBox.strタイトル}/");
tSongsDBになかった曲をファイルから読み込んで反映する(downloadBox.list子リスト);
downloadBox.list子リスト.Insert(0, CSongDict.tGenerateBackButton(downloadBox, $"/{downloadBox.strタイトル}/"));
}
}
}

View File

@ -454,7 +454,7 @@ namespace TJAPlayer3
var song = apiMethods.FetchedSongsList[this.cdnSongListIndex - 1];
var zipPath = $@"Cache\{song.Md5}.zip";
if (System.IO.Directory.Exists($@"Songs\S3 Download\{song.Md5}"))
if (System.IO.Directory.Exists($@"Songs\X4 Downloaded Songs\{song.Md5}"))
{
TJAPlayer3.Skin.soundError.t再生する();
}
@ -544,22 +544,28 @@ namespace TJAPlayer3
var song = apiMethods.FetchedSongsList[this.cdnSongListIndex - 1];
var zipPath = $@"Cache\{song.SongTitle}-{song.Md5}.zip";
try
{
// Download zip from cdn
System.Net.WebClient wc = new System.Net.WebClient();
wc.DownloadFile($"{dbCDNData.BaseUrl}{GetAssignedLanguageValue(dbCDNData.Download)}{song.Id}", zipPath);
wc.Dispose();
if (!System.IO.File.Exists(zipPath))
{
System.Net.WebClient wc = new System.Net.WebClient();
wc.DownloadFile($"{dbCDNData.BaseUrl}{dbCDNData.Download["default"]}{song.Id}", zipPath);
wc.Dispose();
}
// Fetch closest Download folder node
C曲リストード downloadBox = null;
for (int i = 0; i < TJAPlayer3.Songs管理.list曲ルート.Count; i++)
{
if (TJAPlayer3.Songs管理.list曲ルート[i].strジャンル == "Download"
&& TJAPlayer3.Songs管理.list曲ルート[i].eード種別 == C曲リストード.Eード種別.BOX)
downloadBox = TJAPlayer3.Songs管理.list曲ルート[i];
if (TJAPlayer3.Songs管理.list曲ルート[i].strジャンル == "Download")
{
downloadBox = TJAPlayer3.Songs管理.list曲ルート[i];
if (downloadBox.r親ード != null) downloadBox = downloadBox.r親ード;
}
}
// If there is at least one download folder, transfer the zip contents in it