mirror of
https://github.com/wabbajack-tools/wabbajack.git
synced 2024-08-30 18:42:17 +00:00
Game type is now an enum for Nexus downloads
This commit is contained in:
parent
160ac8a4c3
commit
a6e3ef5f72
@ -47,7 +47,7 @@ namespace Compression.BSA.Test
|
||||
var state = new NexusDownloader.State
|
||||
{
|
||||
ModID = mod.ToString(),
|
||||
GameName = game.MetaData().NexusName,
|
||||
Game = game,
|
||||
FileID = file.file_id.ToString()
|
||||
};
|
||||
await state.Download(src);
|
||||
|
@ -102,7 +102,7 @@ namespace Wabbajack.BuildServer.Controllers
|
||||
return NotFound("Original state not found");
|
||||
|
||||
var nexusState = state.State as NexusDownloader.State;
|
||||
var nexusGame = GameRegistry.GetByFuzzyName(nexusState.GameName).NexusName;
|
||||
var nexusGame = nexusState.Game.MetaData().NexusName;
|
||||
var mod_files = await Db.NexusModFiles.AsQueryable()
|
||||
.Where(f => f.Game == nexusGame && f.ModId == nexusState.ModID)
|
||||
.ToListAsync();
|
||||
@ -164,8 +164,7 @@ namespace Wabbajack.BuildServer.Controllers
|
||||
{
|
||||
var origSize = _settings.PathForArchive(srcHash).Size;
|
||||
var api = await NexusApiClient.Get(Request.Headers["apikey"].FirstOrDefault());
|
||||
var allMods = await api.GetModFiles(GameRegistry.GetByFuzzyName(state.GameName).Game,
|
||||
int.Parse(state.ModID));
|
||||
var allMods = await api.GetModFiles(state.Game, int.Parse(state.ModID));
|
||||
var archive = allMods.files.Where(m => !string.IsNullOrEmpty(m.category_name))
|
||||
.OrderBy(s => Math.Abs((long)s.size - origSize))
|
||||
.Select(s => new Archive {
|
||||
@ -173,7 +172,7 @@ namespace Wabbajack.BuildServer.Controllers
|
||||
Size = (long)s.size,
|
||||
State = new NexusDownloader.State
|
||||
{
|
||||
GameName = state.GameName,
|
||||
Game = state.Game,
|
||||
ModID = state.ModID,
|
||||
FileID = s.file_id.ToString()
|
||||
}}).FirstOrDefault();
|
||||
|
@ -39,13 +39,13 @@ namespace Wabbajack.BuildServer.Models.Jobs
|
||||
{
|
||||
var files = await client.GetModFiles(GameRegistry.GetByNexusName(mod.Game).Game,
|
||||
(int)mod.ModId);
|
||||
return (mod.Game, mod.ModId, files.files);
|
||||
return (Game: GameRegistry.GetByFuzzyName(mod.Game).Game, mod.ModId, files.files);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
return default;
|
||||
}
|
||||
})).Where(t => t.Game != null).ToList();
|
||||
})).Where(t => t.Game != default).ToList();
|
||||
|
||||
var archives =
|
||||
mod_files.SelectMany(mod => mod.files.Select(file => (mod.Game, mod.ModId, File:file)).Where(f => !string.IsNullOrEmpty(f.File.category_name) ))
|
||||
@ -53,7 +53,7 @@ namespace Wabbajack.BuildServer.Models.Jobs
|
||||
{
|
||||
var state = new NexusDownloader.State
|
||||
{
|
||||
GameName = tuple.Game, ModID = tuple.ModId.ToString(), FileID = tuple.File.file_id.ToString()
|
||||
Game = tuple.Game, ModID = tuple.ModId.ToString(), FileID = tuple.File.file_id.ToString()
|
||||
};
|
||||
return new Archive {State = state, Name = tuple.File.file_name};
|
||||
}).ToList();
|
||||
|
@ -173,7 +173,7 @@ namespace Wabbajack.BuildServer.Models.Jobs
|
||||
{
|
||||
try
|
||||
{
|
||||
var gameMeta = GameRegistry.GetByFuzzyName(state.GameName);
|
||||
var gameMeta = state.Game.MetaData();
|
||||
if (gameMeta == null)
|
||||
return false;
|
||||
|
||||
|
@ -10,6 +10,7 @@ using Wabbajack.Common;
|
||||
using Wabbajack.Common.StatusFeed.Errors;
|
||||
using Wabbajack.Lib.NexusApi;
|
||||
using Wabbajack.Lib.Validation;
|
||||
using Game = Wabbajack.Common.Game;
|
||||
|
||||
namespace Wabbajack.Lib.Downloaders
|
||||
{
|
||||
@ -77,7 +78,7 @@ namespace Wabbajack.Lib.Downloaders
|
||||
ImageURL = info.picture_url,
|
||||
IsNSFW = info.contains_adult_content,
|
||||
Description = NexusApiUtils.FixupSummary(info.summary),
|
||||
GameName = general.gameName,
|
||||
Game = GameRegistry.GetByFuzzyName((string)general.gameName).Game,
|
||||
ModID = general.modID,
|
||||
FileID = general.fileID
|
||||
};
|
||||
@ -124,7 +125,7 @@ namespace Wabbajack.Lib.Downloaders
|
||||
public class State : AbstractDownloadState, IMetaState
|
||||
{
|
||||
[IgnoreMember]
|
||||
public Uri URL => new Uri($"http://nexusmods.com/{NexusApiUtils.ConvertGameName(GameName)}/mods/{ModID}");
|
||||
public Uri URL => new Uri($"http://nexusmods.com/{Game.MetaData().NexusName}/mods/{ModID}");
|
||||
|
||||
[Key(0)]
|
||||
public string Name { get; set; }
|
||||
@ -145,7 +146,7 @@ namespace Wabbajack.Lib.Downloaders
|
||||
public string Description { get; set; }
|
||||
|
||||
[Key(6)]
|
||||
public string GameName { get; set; }
|
||||
public Game Game { get; set; }
|
||||
|
||||
[Key(7)]
|
||||
public string ModID { get; set; }
|
||||
@ -158,7 +159,7 @@ namespace Wabbajack.Lib.Downloaders
|
||||
}
|
||||
|
||||
[IgnoreMember]
|
||||
public override object[] PrimaryKey { get => new object[]{GameName, ModID, FileID};}
|
||||
public override object[] PrimaryKey { get => new object[]{Game, ModID, FileID};}
|
||||
|
||||
public override bool IsWhitelisted(ServerWhitelist whitelist)
|
||||
{
|
||||
@ -180,7 +181,7 @@ namespace Wabbajack.Lib.Downloaders
|
||||
return false;
|
||||
}
|
||||
|
||||
Utils.Log($"Downloading Nexus Archive - {a.Name} - {GameName} - {ModID} - {FileID}");
|
||||
Utils.Log($"Downloading Nexus Archive - {a.Name} - {Game} - {ModID} - {FileID}");
|
||||
|
||||
return await new HTTPDownloader.State
|
||||
{
|
||||
@ -192,7 +193,7 @@ namespace Wabbajack.Lib.Downloaders
|
||||
{
|
||||
try
|
||||
{
|
||||
var gameMeta = GameRegistry.GetByMO2ArchiveName(GameName) ?? GameRegistry.GetByNexusName(GameName);
|
||||
var gameMeta = Game.MetaData();
|
||||
if (gameMeta == null)
|
||||
return false;
|
||||
|
||||
@ -212,7 +213,7 @@ namespace Wabbajack.Lib.Downloaders
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Utils.Log($"{Name} - {GameName} - {ModID} - {FileID} - Error getting Nexus download URL - {ex}");
|
||||
Utils.Log($"{Name} - {Game} - {ModID} - {FileID} - Error getting Nexus download URL - {ex}");
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -225,12 +226,12 @@ namespace Wabbajack.Lib.Downloaders
|
||||
|
||||
public override string GetManifestURL(Archive a)
|
||||
{
|
||||
return $"http://nexusmods.com/{NexusApiUtils.ConvertGameName(GameName)}/mods/{ModID}";
|
||||
return $"http://nexusmods.com/{Game.MetaData().NexusName}/mods/{ModID}";
|
||||
}
|
||||
|
||||
public override string[] GetMetaIni()
|
||||
{
|
||||
return new[] {"[General]", $"gameName={GameName}", $"modID={ModID}", $"fileID={FileID}"};
|
||||
return new[] {"[General]", $"gameName={Game.MetaData().MO2Name}", $"modID={ModID}", $"fileID={FileID}"};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -268,7 +268,7 @@ namespace Wabbajack.Lib.NexusApi
|
||||
{
|
||||
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
|
||||
|
||||
var url = $"https://api.nexusmods.com/v1/games/{ConvertGameName(archive.GameName)}/mods/{archive.ModID}/files/{archive.FileID}/download_link.json";
|
||||
var url = $"https://api.nexusmods.com/v1/games/{archive.Game.MetaData().NexusName}/mods/{archive.ModID}/files/{archive.FileID}/download_link.json";
|
||||
try
|
||||
{
|
||||
return (await Get<List<DownloadLink>>(url)).First().URI;
|
||||
@ -292,13 +292,6 @@ namespace Wabbajack.Lib.NexusApi
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<NexusFileInfo> GetFileInfo(NexusDownloader.State mod)
|
||||
{
|
||||
var url = $"https://api.nexusmods.com/v1/games/{ConvertGameName(mod.GameName)}/mods/{mod.ModID}/files/{mod.FileID}.json";
|
||||
return await GetCached<NexusFileInfo>(url);
|
||||
}
|
||||
|
||||
public class GetModFilesResponse
|
||||
{
|
||||
public List<NexusFileInfo> files { get; set; }
|
||||
@ -346,7 +339,7 @@ namespace Wabbajack.Lib.NexusApi
|
||||
|
||||
public static Uri ManualDownloadUrl(NexusDownloader.State state)
|
||||
{
|
||||
return new Uri($"https://www.nexusmods.com/{GameRegistry.GetByFuzzyName(state.GameName).NexusName}/mods/{state.ModID}?tab=files");
|
||||
return new Uri($"https://www.nexusmods.com/{state.Game.MetaData().NexusName}/mods/{state.ModID}?tab=files");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -52,7 +52,7 @@ namespace Wabbajack.Test
|
||||
{
|
||||
State = new NexusDownloader.State
|
||||
{
|
||||
GameName = "Skyrim",
|
||||
Game = Game.Skyrim,
|
||||
Author = "bill",
|
||||
ModID = "42",
|
||||
FileID = "33",
|
||||
|
@ -548,7 +548,7 @@ namespace Wabbajack.Test
|
||||
Hash = Hash.FromBase64("gCRVrvzDNH0="),
|
||||
State = new NexusDownloader.State
|
||||
{
|
||||
GameName = Game.SkyrimSpecialEdition.MetaData().NexusName,
|
||||
Game = Game.SkyrimSpecialEdition,
|
||||
ModID = "24808",
|
||||
FileID = "123501"
|
||||
}
|
||||
|
@ -148,7 +148,7 @@ namespace Wabbajack
|
||||
private async Task HandleManualNexusDownload(WebBrowserVM vm, CancellationTokenSource cancel, ManuallyDownloadNexusFile manuallyDownloadNexusFile)
|
||||
{
|
||||
var state = manuallyDownloadNexusFile.State;
|
||||
var game = GameRegistry.GetByFuzzyName(state.GameName);
|
||||
var game = state.Game.MetaData();
|
||||
var hrefs = new[]
|
||||
{
|
||||
$"/Core/Libs/Common/Widgets/DownloadPopUp?id={state.FileID}&game_id={game.NexusGameId}",
|
||||
|
Loading…
Reference in New Issue
Block a user