Boxを開いている状態で曲をダウンロードするとクラッシュする問題を修正 (#199)
* Boxを開いている状態で曲をダウンロードするとクラッシュする問題を修正 * 入れ子のboxに対応
This commit is contained in:
parent
2f94599b96
commit
8f04433245
@ -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タイトル}/"));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user