henry_flower: A melancholy wolf (Default)
henry_flower ([personal profile] henry_flower) wrote2019-03-21 10:51 am

Лінки до віндюка

Ти йому кажеш "так майкрософта дає охфіціїні лінки для завантаження", воно тобі "га? не знав!", а згодом все одно лізе на московитський трекер та зкачує "полегшену збірку" якогось васі.

Це не закінчеться ніколи. Країна ментальних радіориночників.

Just for fun, осьо є мейкфайла, який виколупує лінки без участі бовзера:


#!/usr/bin/make -f

edition.url := https://www.microsoft.com/en-us/software-download/windows10ISO/
session_id := $(shell uuidgen)
curl := curl -sfL
SHELL := bash -o pipefail

.PHONY: urls
urls: platforms.html
	adieu -pe '$$("a.button").get().map( v => $$(v).attr("href")).join`\n`' $<

.PHONY: edition.html
edition.html:; $(curl) '$(edition.url)' > $@

edition.list: edition.html
	adieu -pe '$$("option:not([value=])").get().map( v => $$(v).attr("value") + " " + $$(v.parent).attr("label")).join`\n`' < $< > $@

# dialog(1) invocation
%.answer: %.list
	cut -d" " -f 2- $< | tr "\n" \\0 \
	 | xargs -0 dialog --keep-tite --no-items --menu "$(dialog_$*_menu)" 0 0 0 2> $@

dialog_edition_menu = Select edition

lang.html: edition.list edition.answer
	adieu -pe 'v=$$("#SoftwareDownload_LanguageSelectionByProductEdition"); [`https://www.microsoft.com/en-us/api/controls/contentinclude/html?pageId=$${v.data("defaultpageid")}`, `host=$${v.data("host")}` , `segments=$${v.data("host-segments")}`, "action=getskuinformationbyproductedition", "sessionId=$(session_id)", "productEditionId=$(answer-1)", "sdVersion=2"].join`&`' edition.html | xargs $(curl) > $@

answer-1 = $(call answer,$<,$(word 2,$^),1)
answer = $(shell grep -m1 "`cat $2`" $1 | cut -d" " -f $3)

lang.list: lang.html
	adieu -pe '$$("option:not([value=])").get().map( v => JSON.parse($$(v).attr("value")).id + " " + $$(v).html()).join`\n`' $< > $@

dialog_lang_menu = Select the product language

platforms.html: lang.list lang.answer
	adieu -pe 'v=$$("#SoftwareDownload_DownloadLinks"); [`https://www.microsoft.com/en-us/api/controls/contentinclude/html?pageId=$${v.data("defaultpageid")}`, `host=$${v.data("host")}` , `segments=$${v.data("host-segments")}`, "action=GetProductDownloadLinksBySku", "sessionId=$(session_id)", "skuId=$(answer-1)", `language=$${encodeURIComponent("$(answer-2)")}`, "sdVersion=2"].join`&`' edition.html | xargs $(curl) > $@

answer-2 = $(call answer,$<,$(word 2,$^),2-)

.DELETE_ON_ERROR:
.INTERMEDIATE: edition.html edition.list edition.answer lang.html lang.list lang.answer platforms.html

Потребує curl, dialog(1) та npm i -g adieu.

jonathan_simba: (Default)

[personal profile] jonathan_simba 2019-03-21 12:08 pm (UTC)(link)
Witchcraft!!
jurgen: (Default)

[personal profile] jurgen 2019-03-21 02:28 pm (UTC)(link)
Помню был ржач, когда кто-то нашёл в zvercd скрытый radmin.
waqur: (Default)

[personal profile] waqur 2019-03-24 06:44 pm (UTC)(link)
а для семёрочки? а LTSC?
waqur: (Default)

[personal profile] waqur 2019-03-24 07:47 pm (UTC)(link)
о! вот поэтому и торренты во все поля