1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
#!/usr/bin/env python3
from __future__ import print_function
import requests, yaml, sys
from html.parser import HTMLParser
def eprint(*args, **kwargs):
print(*args, file=sys.stderr, **kwargs)
def einput(question):
eprint(question, end='')
return input()
langlist = requests.get('https://www.microsoft.com/en-US/api/controls/contentinclude/html?pageId=a8f8f489-4c7f-463a-9ca6-5cff94d8d041&host=www.microsoft.com&segments=software-download%2cwindows10ISO&query=&action=getskuinformationbyproductedition&productEditionId=244&sdVersion=2').text
objects = []
class ObjectParser(HTMLParser):
def handle_starttag(self, tag, attrs):
if tag in ['option', 'input']:
for k, v in attrs:
if k == 'value' and v:
objects.append(yaml.load(v))
parser = ObjectParser()
parser.feed(langlist)
eprint('Available languages:')
for i, lang in enumerate(objects):
eprint(' [{}] {}'.format(i, lang['language']))
choice = objects[int(einput('Your choice: '))]
objects = []
links = requests.get('https://www.microsoft.com/en-US/api/controls/contentinclude/html?pageId=cfa9e580-a81e-4a4b-a846-7b21bf4e2e5b&host=www.microsoft.com&segments=software-download%2cwindows10ISO&query=&action=GetProductDownloadLinksBySku&skuId={id}&language=dummy&sdVersion=2'.format(**choice)).text
parser.feed(links)
eprint()
eprint('Available downloads:')
for i, download in enumerate(objects):
eprint(' [{}] {} ({})'.format(i, download['Name'], download['DownloadType'][3:]))
choice = objects[int(einput('Your choice: '))]
eprint()
print(choice['Uri'])
|