1 import argparse
2 import os
3 import requests
4
5
6 HEADERS = {
7 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 '
8 '(KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36'
9 }
10
11 ext_url="https://{0}.gallery.vsassets.io/_apis/public/gallery/publisher/{1}/extension/{2}/{3}/assetbyname/Microsoft.VisualStudio.Services.VSIXPackage"
12
13 def download_ext(publisher,name,ver):
14 url=ext_url.format(publisher,publisher,name,ver)
15 print(url)
16 res=requests.get(url,headers=HEADERS)
17 res.raise_for_status()
18 playFile = open(publisher+'.'+name+'.vsix', 'wb')
19 for chunk in res.iter_content(1024):
20 playFile.write(chunk)
21 playFile.close()
22
23
24 def arg_parse():
25 parse=argparse.ArgumentParser(description='VSCode Extension Download CLI Tools')
26 parse.add_argument("-i",'--identifier',type=str,help='extension unique identifier')
27 parse.add_argument('-v','--version',type=str,help='extension version')
28 return parse
29
30 def command_parse():
31 parse=arg_parse()
32 args=vars(parse.parse_args())
33 print(args)
34
35 key=args["identifier"]
36
37 index=key.find('.')
38 publisher=key[:index]
39 name=key[index+1:]
40 download_ext(publisher,name,args['version'])
41
42
43 if __name__ == "__main__":
44 command_parse()
45