From d36593c567a2ac5973f8cd9ba56df00259cf0062 Mon Sep 17 00:00:00 2001 From: Timothy Baldridge Date: Tue, 9 Aug 2022 17:41:35 -0600 Subject: [PATCH] Fix Mediafire --- Wabbajack.CLI/Wabbajack.CLI.csproj | 6 +++++ .../Downloaders/MediaFireDownloader.cs | 22 +++++++++++++++++-- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/Wabbajack.CLI/Wabbajack.CLI.csproj b/Wabbajack.CLI/Wabbajack.CLI.csproj index e6d1c19c..dcc79e8e 100644 --- a/Wabbajack.CLI/Wabbajack.CLI.csproj +++ b/Wabbajack.CLI/Wabbajack.CLI.csproj @@ -29,4 +29,10 @@ + + + InlinedFileReport.cs + + + diff --git a/Wabbajack.Lib/Downloaders/MediaFireDownloader.cs b/Wabbajack.Lib/Downloaders/MediaFireDownloader.cs index 4427a220..fd499034 100644 --- a/Wabbajack.Lib/Downloaders/MediaFireDownloader.cs +++ b/Wabbajack.Lib/Downloaders/MediaFireDownloader.cs @@ -59,10 +59,28 @@ namespace Wabbajack.Lib.Downloaders if (result.Content.Headers.ContentType!.MediaType!.StartsWith("text/html", StringComparison.OrdinalIgnoreCase)) { + var startText = "window.location.href = '"; + var body = await client.GetHtmlAsync(Url); - var node = body.DocumentNode.DescendantsAndSelf().First(d => d.HasClass("input") && d.HasClass("popsok") && + var node = body.DocumentNode.DescendantsAndSelf().FirstOrDefault(d => d.HasClass("input") && d.HasClass("popsok") && d.GetAttributeValue("aria-label", "") == "Download file"); - return new HTTPDownloader.State(node.GetAttributeValue("href", "not-found")); + if (node != null) + { + return new HTTPDownloader.State(node.GetAttributeValue("href", "not-found")); + } + else + { + + var start = body.DocumentNode.InnerHtml.IndexOf(startText, StringComparison.CurrentCultureIgnoreCase); + if (start != -1) + { + var end = body.DocumentNode.InnerHtml.IndexOf("\'", start + startText.Length, + StringComparison.CurrentCultureIgnoreCase); + var data = body.DocumentNode.InnerHtml[(start + startText.Length)..end]; + return new HTTPDownloader.State(data); + } + } + } return new HTTPDownloader.State(Url);