From 216a7235bc78d9fe3eb347da410ed06a77ea3ee5 Mon Sep 17 00:00:00 2001
From: Ave <112294121+ave9858@users.noreply.github.com>
Date: Thu, 12 Dec 2024 19:20:06 +0000
Subject: [PATCH] get it kinda working
---
js/msdl.js | 54 ++++++++++++++++++++++++++++++++++++++++++++++++------
1 file changed, 48 insertions(+), 6 deletions(-)
diff --git a/js/msdl.js b/js/msdl.js
index 2207637..52a6fbc 100644
--- a/js/msdl.js
+++ b/js/msdl.js
@@ -1,5 +1,6 @@
+const msApiUrl = "https://www.microsoft.com/software-download-connector/api/"
+const parms = "?profile=606624d44113&Locale=en-US&sessionID="
const langsUrl = "https://www.microsoft.com/en-us/api/controls/contentinclude/html?pageId=cd06bda8-ff9c-4a6e-912a-b92a21f42526&host=www.microsoft.com&segments=software-download%2cwindows11&query=&action=getskuinformationbyproductedition&sdVersion=2";
-const downUrl = "https://www.microsoft.com/en-us/api/controls/contentinclude/html?pageId=cfa9e580-a81e-4a4b-a846-7b21bf4e2e5b&host=www.microsoft.com&segments=software-download%2Cwindows11&query=&action=GetProductDownloadLinksBySku&sdVersion=2";
const sessionUrl = "https://vlscppe.microsoft.com/fp/tags?org_id=y6jn8c31&session_id="
const apiUrl = "https://api.gravesoft.dev/msdl/"
@@ -49,6 +50,47 @@ function updateContent(content, response) {
return true;
}
+function langJsonStrToHTML(jsonStr) {
+ let json = JSON.parse(jsonStr);
+ let container = document.createElement('div');
+
+ let header = document.createElement('h2');
+ header.textContent = "Select the product language";
+ container.appendChild(header);
+
+ let info = document.createElement('p');
+ info.innerHTML = "You'll need to choose the same language when you install Windows. To see what language you're currently using, go to Time and language in PC settings or Region in Control Panel.";
+ container.appendChild(info);
+
+ let select = document.createElement('select');
+ select.id = "product-languages";
+
+ let defaultOption = document.createElement('option');
+ defaultOption.value = "";
+ defaultOption.selected = "selected";
+ defaultOption.textContent = "Choose one";
+ select.appendChild(defaultOption);
+
+ json.Skus.forEach(sku => {
+ let option = document.createElement('option');
+ option.value = JSON.stringify({ id: sku.Id });
+ option.textContent = sku.LocalizedLanguage;
+ select.appendChild(option);
+ });
+
+ container.appendChild(select);
+
+ let button = document.createElement('button');
+ button.id = "submit-sku";
+ button.textContent = "Submit";
+ button.disabled = true;
+ button.setAttribute("onClick", "getDownload();");
+
+ container.appendChild(button);
+
+ return container.innerHTML;
+}
+
function onLanguageXhrChange() {
if (!(this.status == 200))
return;
@@ -59,7 +101,9 @@ function onLanguageXhrChange() {
pleaseWait.style.display = "none";
msContent.style.display = "block";
- if (!updateContent(msContent, this.responseText))
+ let langHtml = langJsonStrToHTML(this.responseText);
+
+ if (!updateContent(msContent, langHtml))
return;
let submitSku = document.getElementById('submit-sku');
@@ -120,9 +164,7 @@ function displayResponseFromServer() {
}
function getLanguages(productId) {
- let url = langsUrl + "&productEditionId=" + productId +
- "&sessionId=" + (sharedSession ? sharedSessionGUID : sessionId.value);
-
+ let url = `${msApiUrl}getskuinformationbyproductedition${parms}${sessionId.value}&ProductEditionId=${productId}`;
let xhr = new XMLHttpRequest();
xhr.onload = onLanguageXhrChange;
xhr.open("GET", url, true);
@@ -135,7 +177,7 @@ function getDownload() {
skuId = skuId ? skuId : updateVars();
- let url = downUrl + "&skuId=" + skuId + "&sessionId=" + (sharedSession ? sharedSessionGUID : sessionId.value);
+ let url = `${msApiUrl}GetProductDownloadLinksBySku${parms}${sessionId.value}&SKU=${skuId}`;
let xhr = new XMLHttpRequest();
xhr.onload = onDownloadsXhrChange;