summarylogtreecommitdiffstats
path: root/windows10-get-download-link.py
blob: 6940ec81e26e5e36d94987ca2c58c8306298ef95 (plain)
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'])