Fix unlock music and saving time
This commit is contained in:
parent
0fd5fc7227
commit
cd5c06c97d
@ -1,4 +1,6 @@
|
|||||||
using System.Diagnostics.CodeAnalysis;
|
using System.Diagnostics.CodeAnalysis;
|
||||||
|
using ChoETL;
|
||||||
|
using Domain.Enums;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
namespace Application.Api;
|
namespace Application.Api;
|
||||||
@ -19,21 +21,30 @@ public class UnlockAllMusicCommandHandler : RequestHandlerBase<UnlockAllMusicCom
|
|||||||
[SuppressMessage("ReSharper.DPA", "DPA0006: Large number of DB commands")]
|
[SuppressMessage("ReSharper.DPA", "DPA0006: Large number of DB commands")]
|
||||||
public override async Task<ServiceResult<bool>> Handle(UnlockAllMusicCommand request, CancellationToken cancellationToken)
|
public override async Task<ServiceResult<bool>> Handle(UnlockAllMusicCommand request, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
var unlocks = await CardDbContext.CardDetails.Where(
|
var exists = await CardDbContext.CardDetails.AnyAsync(
|
||||||
detail => detail.CardId == request.CardId &&
|
detail => detail.CardId == request.CardId, cancellationToken);
|
||||||
detail.Pcol1 == 10 &&
|
|
||||||
detail.ScoreUi6 == 1).ToListAsync(cancellationToken: cancellationToken);
|
if (!exists)
|
||||||
if (unlocks.Count == 0)
|
|
||||||
{
|
{
|
||||||
logger.LogWarning("Attempt to unlock for card {Card} that does not exist or is empty!", request.CardId);
|
logger.LogWarning("Attempt to unlock for card {Card} that does not exist or is empty!", request.CardId);
|
||||||
return ServiceResult.Failed<bool>(ServiceError.CustomMessage("Unlock failed"));
|
return ServiceResult.Failed<bool>(ServiceError.CustomMessage("Unlock failed"));
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (var unlock in unlocks)
|
var unlockables = Config.UnlockRewards
|
||||||
|
.Where(config => config.RewardType == RewardType.Music)
|
||||||
|
.Select(config => new CardDetailDto
|
||||||
{
|
{
|
||||||
unlock.ScoreUi2 = 1;
|
CardId = request.CardId,
|
||||||
}
|
Pcol1 = 10,
|
||||||
CardDbContext.CardDetails.UpdateRange(unlocks);
|
Pcol2 = config.TargetId,
|
||||||
|
Pcol3 = 0,
|
||||||
|
LastPlayTenpoId = "1337",
|
||||||
|
LastPlayTime = DateTime.Now,
|
||||||
|
ScoreUi2 = 1,
|
||||||
|
ScoreUi6 = 1
|
||||||
|
}.DtoToCardDetail());
|
||||||
|
|
||||||
|
await CardDbContext.CardDetails.UpsertRange(unlockables).RunAsync(cancellationToken);
|
||||||
await CardDbContext.SaveChangesAsync(cancellationToken);
|
await CardDbContext.SaveChangesAsync(cancellationToken);
|
||||||
|
|
||||||
return new ServiceResult<bool>(true);
|
return new ServiceResult<bool>(true);
|
||||||
|
@ -21,7 +21,8 @@ public class ReadMusicQueryHandler : RequestHandlerBase<ReadMusicQuery, string>
|
|||||||
{
|
{
|
||||||
var dto = unlock.MusicToDto();
|
var dto = unlock.MusicToDto();
|
||||||
dto.Id = i;
|
dto.Id = i;
|
||||||
dto.CalcFlag = Random.Shared.NextDouble() >= 0.5 ? 1 : 0;
|
dto.CalcFlag = dto.NewFlag;
|
||||||
|
dto.NewFlag = 0;
|
||||||
return dto;
|
return dto;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
using System.Diagnostics.CodeAnalysis;
|
using System.Diagnostics.CodeAnalysis;
|
||||||
|
using Domain.Config;
|
||||||
|
using Domain.Enums;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
using Microsoft.Extensions.Options;
|
||||||
using Quartz;
|
using Quartz;
|
||||||
|
|
||||||
namespace Application.Jobs;
|
namespace Application.Jobs;
|
||||||
@ -10,12 +13,15 @@ public class MaintainNullValuesJob : IJob
|
|||||||
|
|
||||||
private readonly ICardDbContext cardDbContext;
|
private readonly ICardDbContext cardDbContext;
|
||||||
|
|
||||||
|
private readonly GameConfig config;
|
||||||
|
|
||||||
public static readonly JobKey KEY = new("MaintainNullValuesJob");
|
public static readonly JobKey KEY = new("MaintainNullValuesJob");
|
||||||
|
|
||||||
public MaintainNullValuesJob(ILogger<MaintainNullValuesJob> logger, ICardDbContext cardDbContext)
|
public MaintainNullValuesJob(ILogger<MaintainNullValuesJob> logger, ICardDbContext cardDbContext, IOptions<GameConfig> options)
|
||||||
{
|
{
|
||||||
this.logger = logger;
|
this.logger = logger;
|
||||||
this.cardDbContext = cardDbContext;
|
this.cardDbContext = cardDbContext;
|
||||||
|
config = options.Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
[SuppressMessage("ReSharper.DPA", "DPA0007: Large number of DB records",
|
[SuppressMessage("ReSharper.DPA", "DPA0007: Large number of DB records",
|
||||||
@ -46,5 +52,23 @@ public class MaintainNullValuesJob : IJob
|
|||||||
count = await cardDbContext.SaveChangesAsync(new CancellationToken());
|
count = await cardDbContext.SaveChangesAsync(new CancellationToken());
|
||||||
|
|
||||||
logger.LogInformation("Closed {Count} matches", count);
|
logger.LogInformation("Closed {Count} matches", count);
|
||||||
|
|
||||||
|
logger.LogInformation("Starting to remove previously new songs");
|
||||||
|
var unlockables = config.UnlockRewards
|
||||||
|
.Where(c => c.RewardType == RewardType.Music).ToDictionary(rewardConfig => rewardConfig.TargetId);
|
||||||
|
var targets = await cardDbContext.CardDetails.Where(detail => detail.Pcol1 == 10).ToListAsync();
|
||||||
|
foreach (var target in targets)
|
||||||
|
{
|
||||||
|
if (unlockables.ContainsKey((int)target.Pcol2))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
target.ScoreUi2 = 0;
|
||||||
|
target.ScoreUi6 = 0;
|
||||||
|
}
|
||||||
|
cardDbContext.CardDetails.UpdateRange(targets);
|
||||||
|
count = await cardDbContext.SaveChangesAsync(new CancellationToken());
|
||||||
|
|
||||||
|
logger.LogInformation("Fixed {Count} records", count);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -3,10 +3,6 @@ Microsoft Visual Studio Solution File, Format Version 12.00
|
|||||||
# Visual Studio Version 16
|
# Visual Studio Version 16
|
||||||
VisualStudioVersion = 16.0.32126.315
|
VisualStudioVersion = 16.0.32126.315
|
||||||
MinimumVisualStudioVersion = 10.0.40219.1
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GC-local-server-rewrite", "GC-local-server-rewrite\GC-local-server-rewrite.csproj", "{D5FFF2E8-6591-4967-8883-A28F453F0524}"
|
|
||||||
EndProject
|
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharedProject", "SharedProject\SharedProject.csproj", "{C01D0576-9D4E-4535-8055-C4905433A1EB}"
|
|
||||||
EndProject
|
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GCRelayServer", "GCRelayServer\GCRelayServer.csproj", "{268178DF-6345-4D9E-A389-9E809CBF39C9}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GCRelayServer", "GCRelayServer\GCRelayServer.csproj", "{268178DF-6345-4D9E-A389-9E809CBF39C9}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MainServer", "MainServer\MainServer.csproj", "{B8C6CA7E-5E58-43BC-8E03-84306916DE39}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MainServer", "MainServer\MainServer.csproj", "{B8C6CA7E-5E58-43BC-8E03-84306916DE39}"
|
||||||
@ -27,14 +23,6 @@ Global
|
|||||||
Release|Any CPU = Release|Any CPU
|
Release|Any CPU = Release|Any CPU
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
{D5FFF2E8-6591-4967-8883-A28F453F0524}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{D5FFF2E8-6591-4967-8883-A28F453F0524}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{D5FFF2E8-6591-4967-8883-A28F453F0524}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{D5FFF2E8-6591-4967-8883-A28F453F0524}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{C01D0576-9D4E-4535-8055-C4905433A1EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{C01D0576-9D4E-4535-8055-C4905433A1EB}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{C01D0576-9D4E-4535-8055-C4905433A1EB}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{C01D0576-9D4E-4535-8055-C4905433A1EB}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{268178DF-6345-4D9E-A389-9E809CBF39C9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{268178DF-6345-4D9E-A389-9E809CBF39C9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{268178DF-6345-4D9E-A389-9E809CBF39C9}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{268178DF-6345-4D9E-A389-9E809CBF39C9}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{268178DF-6345-4D9E-A389-9E809CBF39C9}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{268178DF-6345-4D9E-A389-9E809CBF39C9}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
@ -14,13 +14,6 @@
|
|||||||
"TargetNum": 1,
|
"TargetNum": 1,
|
||||||
"KeyNum": 1
|
"KeyNum": 1
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"RewardId" : 2,
|
|
||||||
"RewardType" : "Music",
|
|
||||||
"TargetId" : 11,
|
|
||||||
"TargetNum": 1,
|
|
||||||
"KeyNum": 1
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"RewardId": 3,
|
"RewardId": 3,
|
||||||
"RewardType": "Avatar",
|
"RewardType": "Avatar",
|
||||||
@ -41,6 +34,349 @@
|
|||||||
"TargetId": 1,
|
"TargetId": 1,
|
||||||
"TargetNum": 1,
|
"TargetNum": 1,
|
||||||
"KeyNum": 1
|
"KeyNum": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"RewardId": 6,
|
||||||
|
"RewardType": "Music",
|
||||||
|
"TargetId": 464,
|
||||||
|
"TargetNum": 1,
|
||||||
|
"KeyNum": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"RewardId": 7,
|
||||||
|
"RewardType": "Music",
|
||||||
|
"TargetId": 498,
|
||||||
|
"TargetNum": 1,
|
||||||
|
"KeyNum": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"RewardId": 8,
|
||||||
|
"RewardType": "Music",
|
||||||
|
"TargetId": 551,
|
||||||
|
"TargetNum": 1,
|
||||||
|
"KeyNum": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"RewardId": 9,
|
||||||
|
"RewardType": "Music",
|
||||||
|
"TargetId": 561,
|
||||||
|
"TargetNum": 1,
|
||||||
|
"KeyNum": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"RewardId": 10,
|
||||||
|
"RewardType": "Music",
|
||||||
|
"TargetId": 565,
|
||||||
|
"TargetNum": 1,
|
||||||
|
"KeyNum": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"RewardId": 11,
|
||||||
|
"RewardType": "Music",
|
||||||
|
"TargetId": 615,
|
||||||
|
"TargetNum": 1,
|
||||||
|
"KeyNum": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"RewardId": 12,
|
||||||
|
"RewardType": "Music",
|
||||||
|
"TargetId": 471,
|
||||||
|
"TargetNum": 1,
|
||||||
|
"KeyNum": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"RewardId": 13,
|
||||||
|
"RewardType": "Music",
|
||||||
|
"TargetId": 676,
|
||||||
|
"TargetNum": 1,
|
||||||
|
"KeyNum": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"RewardId": 14,
|
||||||
|
"RewardType": "Music",
|
||||||
|
"TargetId": 659,
|
||||||
|
"TargetNum": 1,
|
||||||
|
"KeyNum": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"RewardId": 15,
|
||||||
|
"RewardType": "Music",
|
||||||
|
"TargetId": 291,
|
||||||
|
"TargetNum": 1,
|
||||||
|
"KeyNum": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"RewardId": 16,
|
||||||
|
"RewardType": "Music",
|
||||||
|
"TargetId": 371,
|
||||||
|
"TargetNum": 1,
|
||||||
|
"KeyNum": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"RewardId": 17,
|
||||||
|
"RewardType": "Music",
|
||||||
|
"TargetId": 494,
|
||||||
|
"TargetNum": 1,
|
||||||
|
"KeyNum": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"RewardId": 18,
|
||||||
|
"RewardType": "Music",
|
||||||
|
"TargetId": 520,
|
||||||
|
"TargetNum": 1,
|
||||||
|
"KeyNum": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"RewardId": 19,
|
||||||
|
"RewardType": "Music",
|
||||||
|
"TargetId": 558,
|
||||||
|
"TargetNum": 1,
|
||||||
|
"KeyNum": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"RewardId": 20,
|
||||||
|
"RewardType": "Music",
|
||||||
|
"TargetId": 577,
|
||||||
|
"TargetNum": 1,
|
||||||
|
"KeyNum": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"RewardId": 21,
|
||||||
|
"RewardType": "Music",
|
||||||
|
"TargetId": 583,
|
||||||
|
"TargetNum": 1,
|
||||||
|
"KeyNum": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"RewardId": 22,
|
||||||
|
"RewardType": "Music",
|
||||||
|
"TargetId": 666,
|
||||||
|
"TargetNum": 1,
|
||||||
|
"KeyNum": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"RewardId": 23,
|
||||||
|
"RewardType": "Music",
|
||||||
|
"TargetId": 612,
|
||||||
|
"TargetNum": 1,
|
||||||
|
"KeyNum": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"RewardId": 24,
|
||||||
|
"RewardType": "Music",
|
||||||
|
"TargetId": 697,
|
||||||
|
"TargetNum": 1,
|
||||||
|
"KeyNum": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"RewardId": 25,
|
||||||
|
"RewardType": "Music",
|
||||||
|
"TargetId": 321,
|
||||||
|
"TargetNum": 1,
|
||||||
|
"KeyNum": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"RewardId": 26,
|
||||||
|
"RewardType": "Music",
|
||||||
|
"TargetId": 78,
|
||||||
|
"TargetNum": 1,
|
||||||
|
"KeyNum": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"RewardId": 27,
|
||||||
|
"RewardType": "Music",
|
||||||
|
"TargetId": 668,
|
||||||
|
"TargetNum": 1,
|
||||||
|
"KeyNum": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"RewardId": 28,
|
||||||
|
"RewardType": "Music",
|
||||||
|
"TargetId": 685,
|
||||||
|
"TargetNum": 1,
|
||||||
|
"KeyNum": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"RewardId": 29,
|
||||||
|
"RewardType": "Music",
|
||||||
|
"TargetId": 686,
|
||||||
|
"TargetNum": 1,
|
||||||
|
"KeyNum": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"RewardId": 30,
|
||||||
|
"RewardType": "Music",
|
||||||
|
"TargetId": 700,
|
||||||
|
"TargetNum": 1,
|
||||||
|
"KeyNum": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"RewardId": 31,
|
||||||
|
"RewardType": "Music",
|
||||||
|
"TargetId": 11,
|
||||||
|
"TargetNum": 1,
|
||||||
|
"KeyNum": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"RewardId": 32,
|
||||||
|
"RewardType": "Music",
|
||||||
|
"TargetId": 13,
|
||||||
|
"TargetNum": 1,
|
||||||
|
"KeyNum": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"RewardId": 33,
|
||||||
|
"RewardType": "Music",
|
||||||
|
"TargetId": 149,
|
||||||
|
"TargetNum": 1,
|
||||||
|
"KeyNum": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"RewardId": 34,
|
||||||
|
"RewardType": "Music",
|
||||||
|
"TargetId": 273,
|
||||||
|
"TargetNum": 1,
|
||||||
|
"KeyNum": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"RewardId": 35,
|
||||||
|
"RewardType": "Music",
|
||||||
|
"TargetId": 320,
|
||||||
|
"TargetNum": 1,
|
||||||
|
"KeyNum": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"RewardId": 36,
|
||||||
|
"RewardType": "Music",
|
||||||
|
"TargetId": 378,
|
||||||
|
"TargetNum": 1,
|
||||||
|
"KeyNum": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"RewardId": 37,
|
||||||
|
"RewardType": "Music",
|
||||||
|
"TargetId": 384,
|
||||||
|
"TargetNum": 1,
|
||||||
|
"KeyNum": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"RewardId": 38,
|
||||||
|
"RewardType": "Music",
|
||||||
|
"TargetId": 622,
|
||||||
|
"TargetNum": 1,
|
||||||
|
"KeyNum": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"RewardId": 39,
|
||||||
|
"RewardType": "Music",
|
||||||
|
"TargetId": 475,
|
||||||
|
"TargetNum": 1,
|
||||||
|
"KeyNum": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"RewardId": 40,
|
||||||
|
"RewardType": "Music",
|
||||||
|
"TargetId": 492,
|
||||||
|
"TargetNum": 1,
|
||||||
|
"KeyNum": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"RewardId": 41,
|
||||||
|
"RewardType": "Music",
|
||||||
|
"TargetId": 570,
|
||||||
|
"TargetNum": 1,
|
||||||
|
"KeyNum": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"RewardId": 42,
|
||||||
|
"RewardType": "Music",
|
||||||
|
"TargetId": 548,
|
||||||
|
"TargetNum": 1,
|
||||||
|
"KeyNum": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"RewardId": 43,
|
||||||
|
"RewardType": "Music",
|
||||||
|
"TargetId": 672,
|
||||||
|
"TargetNum": 1,
|
||||||
|
"KeyNum": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"RewardId": 44,
|
||||||
|
"RewardType": "Music",
|
||||||
|
"TargetId": 632,
|
||||||
|
"TargetNum": 1,
|
||||||
|
"KeyNum": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"RewardId": 45,
|
||||||
|
"RewardType": "Music",
|
||||||
|
"TargetId": 670,
|
||||||
|
"TargetNum": 1,
|
||||||
|
"KeyNum": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"RewardId": 46,
|
||||||
|
"RewardType": "Music",
|
||||||
|
"TargetId": 680,
|
||||||
|
"TargetNum": 1,
|
||||||
|
"KeyNum": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"RewardId": 47,
|
||||||
|
"RewardType": "Music",
|
||||||
|
"TargetId": 682,
|
||||||
|
"TargetNum": 1,
|
||||||
|
"KeyNum": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"RewardId": 48,
|
||||||
|
"RewardType": "Music",
|
||||||
|
"TargetId": 701,
|
||||||
|
"TargetNum": 1,
|
||||||
|
"KeyNum": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"RewardId": 49,
|
||||||
|
"RewardType": "Music",
|
||||||
|
"TargetId": 711,
|
||||||
|
"TargetNum": 1,
|
||||||
|
"KeyNum": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"RewardId": 50,
|
||||||
|
"RewardType": "Music",
|
||||||
|
"TargetId": 720,
|
||||||
|
"TargetNum": 1,
|
||||||
|
"KeyNum": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"RewardId": 51,
|
||||||
|
"RewardType": "Music",
|
||||||
|
"TargetId": 749,
|
||||||
|
"TargetNum": 1,
|
||||||
|
"KeyNum": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"RewardId": 52,
|
||||||
|
"RewardType": "Music",
|
||||||
|
"TargetId": 875,
|
||||||
|
"TargetNum": 1,
|
||||||
|
"KeyNum": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"RewardId": 53,
|
||||||
|
"RewardType": "Music",
|
||||||
|
"TargetId": 876,
|
||||||
|
"TargetNum": 1,
|
||||||
|
"KeyNum": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"RewardId": 54,
|
||||||
|
"RewardType": "Music",
|
||||||
|
"TargetId": 877,
|
||||||
|
"TargetNum": 1,
|
||||||
|
"KeyNum": 1
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
24
doc/genunlock.py
Normal file
24
doc/genunlock.py
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
import csv
|
||||||
|
import sqlite3
|
||||||
|
import json
|
||||||
|
|
||||||
|
|
||||||
|
con = sqlite3.connect('music471omni.db3')
|
||||||
|
cur = con.cursor()
|
||||||
|
id = 6
|
||||||
|
with open('unlockables.csv', encoding='utf8') as csvfile:
|
||||||
|
reader = csv.reader(csvfile, delimiter=',')
|
||||||
|
for row in reader:
|
||||||
|
name = row[0]
|
||||||
|
res = cur.execute("SELECT music_id FROM music_unlock where title=:t", {"t":name})
|
||||||
|
for music_id in res:
|
||||||
|
config = {
|
||||||
|
"RewardId": id,
|
||||||
|
"RewardType": "Music",
|
||||||
|
"TargetId": music_id[0],
|
||||||
|
"TargetNum": 1,
|
||||||
|
"KeyNum": 1
|
||||||
|
}
|
||||||
|
id += 1
|
||||||
|
print(json.dumps(config, indent=4) + ",")
|
||||||
|
|
49
doc/unlockables.csv
Normal file
49
doc/unlockables.csv
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
曲名,アーティスト,収録日,必要キー数
|
||||||
|
Perverse Love Rock!,中沢伴行 (I've) feat. IA,先行配信2016/09/01通常配信2016/10/05,2
|
||||||
|
ネトゲ廃人シュプレヒコール,さつき が てんこもり feat. 初音ミク,先行配信2016/10/20通常配信2017/01/12,5
|
||||||
|
深海シティアンダーグラウンド,田中B feat. 鏡音リン,先行配信2017/04/13通常配信2017/07/21,2
|
||||||
|
あのね…実はわたし、夢眠ねむなんだ…,夢眠ネム,先行配信2017/06/12通常配信2017/09/07,5
|
||||||
|
月夜ノ森,ぼのりす feat. 初音ミク,先行配信2017/07/12通常配信2017/10/27,3
|
||||||
|
ビットチューン,out of service feat. IA,先行配信2018/01/18通常配信2018/07/02,2
|
||||||
|
Miraculous Encounter,インターネット社 feat. GUMI,先行配信2018/02/21通常配信2018/07/02,2
|
||||||
|
人生リセットボタン,kemu feat. GUMI,2018/07/02,8
|
||||||
|
ボロボロだ,n-buna feat. 初音ミク,先行配信2018/06/06通常配信2018/08/23,10
|
||||||
|
D+D→T+p,Minstrel feat. LIQU@。,2015/09/07,5
|
||||||
|
カミノヒ,COSIO(ZUNTATA) × ランコ(豚乙女),先行配信2016/05/30通常配信2016/08/12,5
|
||||||
|
"Help me, ERINNNNNN!! -Cranky remix-",ビートまりお × Cranky,先行配信2016/07/29通常配信2016/09/28,5
|
||||||
|
Dream Coaster,A-One,先行配信2016/12/01通常配信2017/02/27,3
|
||||||
|
コノハズク,豚乙女,先行配信2017/05/01通常配信2017/08/09,10
|
||||||
|
DIVINE PLACE,TatshMusicCircle,先行配信2017/08/09通常配信2017/11/08,10
|
||||||
|
東方輝仁裂,MASAKI,先行配信2017/11/08通常配信2018/03/20,30
|
||||||
|
秘神マターラ-HYPER TECHNO MIX-,Yu Shimoda(ZUNTATA),2018/07/25,15
|
||||||
|
揺蕩うLove (feat. らっぷびと),魂音泉,先行配信2018/05/01通常配信2018/08/02,10
|
||||||
|
Say Around,A-One,2018/10/10,10
|
||||||
|
2112410403927243233368,253215,先行配信2015/04/01通常配信2015/06/02,25
|
||||||
|
ピアノ・ソナタ「月光」第三楽章,ICON,2018/07/18,9
|
||||||
|
EZ Mode,Akira Complex,2018/10/17,15
|
||||||
|
UP & DOWN,KO3,2018/10/24,15
|
||||||
|
Never Stop (GC Mix),Relect,2018/11/21,15
|
||||||
|
Fun-House,COSIO (ZUNTATA),2016/03/10,5
|
||||||
|
Cardiac Rhythm,COSIO,2015/03/25,5
|
||||||
|
Flyaway,櫻井浩司,2016/03/10,5
|
||||||
|
メシアの邂逅,Tatsh,2015/04/22,15
|
||||||
|
Got noir forever.,E.G.G.,2015/02/25,25
|
||||||
|
orbital,namae.,2016/03/10,5
|
||||||
|
Got hive of Ra,E.G.G.,先行配信2016/09/28通常配信2016/12/14,25
|
||||||
|
Got recover run,E.G.G.,先行配信2017/12/14通常配信2018/04/16,25
|
||||||
|
Warrior,Cranky,先行配信2017/02/20通常配信2017/05/22,15
|
||||||
|
TECHNO COMPLEX,DJ MURASAME a.k.a. Tatsh,先行配信2017/03/16通常配信2017/06/19,10
|
||||||
|
"Good Night, Bad Luck.",t+pazolite,先行配信2017/06/26通常配信2017/09/22,30
|
||||||
|
Got more raves? -xiRemix-,xi,先行配信2018/03/29通常配信2018/07/02,25
|
||||||
|
MOVING FASTER FT. LINDSEY MARIE,Daniel Seven,2018/07/11,15
|
||||||
|
Crimson Phoenix,xi vs MASAKI,先行配信2018/03/29通常配信2018/08/02,15
|
||||||
|
HAPPY! LUCKY! FUTURE WORLD!,EmoCo.,2018/08/16,15
|
||||||
|
Cosmic Express,Snail's House,2018/08/30,15
|
||||||
|
Xand-Roid,Tatsh,2018/09/14,20
|
||||||
|
Pegasus,NaMiRa,2018/11/21,15
|
||||||
|
Little Higher,nora2r,2018/12/05,15
|
||||||
|
Got sorted view.,E.G.G.,2019/03/13,25
|
||||||
|
Lemegeton -little key of solomon-,Team Grimoire vs MASAKI,2019/03/28,30
|
||||||
|
希,technoplanet feat. Shun [RIGEL],2021/12/01,15
|
||||||
|
Valkyrja Requiem,iTIC,2021/12/08,15
|
||||||
|
コスモスタート,打打だいず,2021/12/15,15
|
|
Loading…
Reference in New Issue
Block a user