support for ModDB, and more testing fixes

This commit is contained in:
Timothy Baldridge 2019-07-23 22:31:08 -06:00
parent dffe2a68de
commit 61862ae7dd
6 changed files with 56 additions and 7 deletions

View File

@ -19,9 +19,11 @@ namespace Wabbajack.Common
get
{
var platformType = Environment.Is64BitOperatingSystem ? "x64" : "x86";
var headerString = $"Wabbajack/{Assembly.GetEntryAssembly().GetName().Version} ({Environment.OSVersion.VersionString}; {platformType}) {RuntimeInformation.FrameworkDescription}";
var headerString = $"{AppName}/{Assembly.GetEntryAssembly().GetName().Version} ({Environment.OSVersion.VersionString}; {platformType}) {RuntimeInformation.FrameworkDescription}";
return headerString;
}
}
public static String AppName = "Automaton";
}
}

View File

@ -9,6 +9,7 @@ using System.Security.Cryptography;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Web;
using Wabbajack.Common;
namespace Wabbajack
@ -290,6 +291,30 @@ namespace Wabbajack
ModID = general.modID
};
}
else if (general.directURL != null && general.directURL.StartsWith("https://www.dropbox.com/"))
{
var uri = new UriBuilder((string)general.directURL);
var query = HttpUtility.ParseQueryString(uri.Query);
if (query.GetValues("dl").Count() > 0)
query.Remove("dl");
query.Set("dl", "1");
uri.Query = query.ToString();
result = new DirectURLArchive()
{
URL = uri.ToString()
};
}
else if (general.directURL != null && general.directURL.StartsWith("https://www.moddb.com/downloads/start"))
{
result = new MODDBArchive()
{
URL = general.directURL
};
}
else if (general.directURL != null)
{
result = new DirectURLArchive()
@ -338,13 +363,15 @@ namespace Wabbajack
IgnoreStartsWith("logs\\"),
IgnoreStartsWith("downloads\\"),
IgnoreStartsWith("webcache\\"),
IgnoreStartsWith("nxmhandler."),
IgnoreEndsWith(".pyc"),
IgnoreOtherProfiles(),
IgnoreDisabledMods(),
IncludeThisProfile(),
// Ignore the ModOrganizer.ini file it contains info created by MO2 on startup
IgnoreStartsWith("ModOrganizer.ini"),
IgnoreStartsWith(Path.Combine(Consts.GameFolderFilesDir, "Data")),
IgnoreStartsWith(Path.Combine(Consts.GameFolderFilesDir, "Papyrus Compiler")),
IgnoreStartsWith(Path.Combine(Consts.GameFolderFilesDir, "Skyrim")),
IgnoreRegex(Consts.GameFolderFilesDir + "\\\\.*\\.bsa"),
IncludeModIniData(),
DirectMatch(),

View File

@ -5,6 +5,7 @@ using System.IO;
using System.Linq;
using System.Net.Http;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using Wabbajack.Common;
@ -203,6 +204,10 @@ namespace Wabbajack
var url = NexusAPI.GetNexusDownloadLink(archive as NexusMod, NexusAPIKey);
DownloadURLDirect(archive, url);
}
else if (archive is MODDBArchive)
{
DownloadModDBArchive(archive, (archive as MODDBArchive).URL);
}
else if (archive is DirectURLArchive)
{
DownloadURLDirect(archive, (archive as DirectURLArchive).URL);
@ -214,6 +219,15 @@ namespace Wabbajack
});
}
private void DownloadModDBArchive(Archive archive, string url)
{
var client = new HttpClient();
var result = client.GetStringSync(url);
var regex = new Regex("https:\\/\\/www\\.moddb\\.com\\/downloads\\/mirror\\/.*(?=\\\")");
var match = regex.Match(result);
DownloadURLDirect(archive, match.Value);
}
private void DownloadURLDirect(Archive archive, string url)
{
HttpClient client = new HttpClient();
@ -225,7 +239,10 @@ namespace Wabbajack
var stream = response.Content.ReadAsStreamAsync();
stream.Wait();
var header = response.Content.Headers.GetValues("Content-Length").FirstOrDefault();
string header = "1";
if (response.Content.Headers.Contains("Content-Length"))
header = response.Content.Headers.GetValues("Content-Length").FirstOrDefault();
long content_size = header != null ? long.Parse(header) : 1;
var output_path = Path.Combine(DownloadFolder, archive.Name);

View File

@ -32,9 +32,11 @@ namespace Wabbajack
new Thread(() =>
{
compiler.LoadArchives();
compiler.MO2Profile = "Lexy's Legacy of The Dragonborn Special Edition";
compiler.MO2Profile = "Basic Graphics and Fixes";
compiler.Compile();
compiler.ModList.ToJSON("C:\\tmp\\modpack.json");
var installer = new Installer(compiler.ModList, "c:\\tmp\\install\\", msg => context.LogMsg(msg));
installer.Install();

View File

@ -39,9 +39,9 @@ namespace Wabbajack
};
_websocket.Connect();
_websocket.Send("{\"id\": \"" + guid + "\", \"appid\": \"Wabbajack\"}");
_websocket.Send("{\"id\": \"" + guid + "\", \"appid\": \""+ Consts.AppName+"\"}");
Process.Start($"https://www.nexusmods.com/sso?id={guid}&application=Wabbajack");
Process.Start($"https://www.nexusmods.com/sso?id={guid}&application=" + Consts.AppName);
api_key.Task.Wait();
var result = api_key.Task.Result;
@ -59,7 +59,7 @@ namespace Wabbajack
_baseHttpClient.DefaultRequestHeaders.Add("User-Agent", Consts.UserAgent);
_baseHttpClient.DefaultRequestHeaders.Add("apikey", apikey);
_baseHttpClient.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
_baseHttpClient.DefaultRequestHeaders.Add("Application-Name", "Wabbajack");
_baseHttpClient.DefaultRequestHeaders.Add("Application-Name", Consts.AppName);
_baseHttpClient.DefaultRequestHeaders.Add("Application-Version", $"{Assembly.GetEntryAssembly().GetName().Version}");
return _baseHttpClient;
}

View File

@ -46,6 +46,7 @@
</Reference>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Web" />
<Reference Include="System.Xml" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Core" />