@@ -34,119 +34,117 @@ def convert_date_str(input_str):
34
34
return_str = date .strftime ("%-m/%-d/%Y" )
35
35
return return_str
36
36
37
- try :
38
-
39
- CSV_FILE_NAME = 'all_vs_extensions.csv'
40
- JSON_FILE_NAME = 'all_vs_extensions.json'
41
- MS_API_URL = 'https://marketplace.visualstudio.com/_apis/public/gallery/extensionquery'
42
- MS_HEADERS = {
43
- 'content-type' : 'application/json' ,
44
- 'accept' : 'application/json;api-version=3.0-preview.1' ,
45
- 'accept-encoding' : 'gzip'
46
- }
47
- API_ENDPOINT = os .environ ['API_ENDPOINT' ]
48
- VSX_API = '%sapi' % API_ENDPOINT
49
-
50
- # Looks like 1000 is the max page size
51
- get_all_extensions_payload = {
52
- "assetTypes" : [
53
- "Microsoft.VisualStudio.Services.Icons.Default" ,
54
- "Microsoft.VisualStudio.Services.Icons.Branding" ,
55
- "Microsoft.VisualStudio.Services.Icons.Small"
56
- ],
57
- "filters" : [
58
- {
59
- "criteria" : [
60
- {
61
- "filterType" : 8 ,
62
- "value" : "Microsoft.VisualStudio.Code"
63
- },
64
- {
65
- "filterType" : 10 ,
66
- "value" : "target:\" Microsoft.VisualStudio.Code\" "
67
- },
37
+ if __name__ == '__main__' :
38
+ try :
39
+ CSV_FILE_NAME = 'all_vs_extensions.csv'
40
+ JSON_FILE_NAME = 'all_vs_extensions.json'
41
+ MS_API_URL = 'https://marketplace.visualstudio.com/_apis/public/gallery/extensionquery'
42
+ MS_HEADERS = {
43
+ 'content-type' : 'application/json' ,
44
+ 'accept' : 'application/json;api-version=3.0-preview.1' ,
45
+ 'accept-encoding' : 'gzip'
46
+ }
47
+ API_ENDPOINT = os .environ ['API_ENDPOINT' ]
48
+ VSX_API = '%sapi' % API_ENDPOINT
49
+
50
+ # Looks like 1000 is the max page size
51
+ get_all_extensions_payload = {
52
+ "assetTypes" : [
53
+ "Microsoft.VisualStudio.Services.Icons.Default" ,
54
+ "Microsoft.VisualStudio.Services.Icons.Branding" ,
55
+ "Microsoft.VisualStudio.Services.Icons.Small"
56
+ ],
57
+ "filters" : [
68
58
{
69
- "filterType" : 12 ,
70
- "value" : "37888"
59
+ "criteria" : [
60
+ {
61
+ "filterType" : 8 ,
62
+ "value" : "Microsoft.VisualStudio.Code"
63
+ },
64
+ {
65
+ "filterType" : 10 ,
66
+ "value" : "target:\" Microsoft.VisualStudio.Code\" "
67
+ },
68
+ {
69
+ "filterType" : 12 ,
70
+ "value" : "37888"
71
+ }
72
+ ],
73
+ "direction" : 2 ,
74
+ "pageSize" : 1000 ,
75
+ "pageNumber" : 1 ,
76
+ "sortBy" : 4 ,
77
+ "sortOrder" : 0 ,
78
+ "pagingToken" : None
71
79
}
72
80
],
73
- "direction" : 2 ,
74
- "pageSize" : 1000 ,
75
- "pageNumber" : 1 ,
76
- "sortBy" : 4 ,
77
- "sortOrder" : 0 ,
78
- "pagingToken" : None
79
- }
80
- ],
81
- "flags" : 870
82
- }
83
- all_extensions = []
84
- total_all_versions = 0
85
- while True :
86
- response = requests .post (MS_API_URL , headers = MS_HEADERS , data = json .dumps (get_all_extensions_payload ))
87
- if response .status_code != 200 :
88
- print ('HTTP %s error' % response .status_code )
89
- break
90
- else :
91
- vsx_results = response .json ()
92
- extensions = vsx_results ['results' ][0 ]['extensions' ]
93
- all_extensions = all_extensions + extensions
94
- for extension in extensions :
95
- versions = extension ['versions' ]
96
- total_all_versions += len (versions )
97
- total = vsx_results ['results' ][0 ]['resultMetadata' ][0 ]['metadataItems' ][0 ]['count' ]
98
- print ('Retrieved %s of %s MS Marketplace extensions. %s total versions.' % (len (all_extensions ), total , total_all_versions ))
99
- if len (all_extensions ) == total :
81
+ "flags" : 870
82
+ }
83
+ all_extensions = []
84
+ total_all_versions = 0
85
+ while True :
86
+ response = requests .post (MS_API_URL , headers = MS_HEADERS , data = json .dumps (get_all_extensions_payload ))
87
+ if response .status_code != 200 :
88
+ print ('HTTP %s error' % response .status_code )
100
89
break
101
90
else :
102
- get_all_extensions_payload ['filters' ][0 ]['pageNumber' ] = get_all_extensions_payload ['filters' ][0 ]['pageNumber' ] + 1
103
-
104
- # Output CSV File
105
- csv_file = open (CSV_FILE_NAME , 'w' )
106
- csv_file .write ("MS Publisher (Namespace), MS Extension, MS DisplayName, MS Pricing, MS Version, MS Date, VSX Version, VSX Date, VSX Publisher, VSX License, Repo\n " )
107
- for ext in extensions :
108
- print ("%s.%s" % (ext ['publisher' ]['publisherName' ], ext ['extensionName' ]))
109
- ms_extension_name , ms_publisher_name , ms_display_name , ms_latest_version , ms_last_updated , ms_repo , ms_pricing = get_ms_info (ext )
110
- vsx_extension_url = '%s/%s/%s' % (VSX_API , ms_publisher_name , ms_extension_name )
111
- response = requests .get (vsx_extension_url )
112
- if response .status_code == 200 :
113
- vsx_results = response .json ()
114
- csv_file .write ("%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s\n " % (
115
- ms_publisher_name ,
116
- ms_extension_name ,
117
- ms_display_name ,
118
- ms_pricing ,
119
- ms_latest_version ,
120
- convert_date_str (ms_last_updated ),
121
- vsx_results ['version' ],
122
- convert_date_str (vsx_results ['timestamp' ]),
123
- vsx_results ['publishedBy' ]['loginName' ],
124
- vsx_results .get ('license' , None ),
125
- ms_repo
126
- ))
127
- elif response .status_code == 404 :
128
- csv_file .write ("%s, %s, %s, %s, %s, %s, , , , %s, %s\n " % (
129
- ms_publisher_name ,
130
- ms_extension_name ,
131
- ms_display_name ,
132
- ms_pricing ,
133
- ms_latest_version ,
134
- convert_date_str (ms_last_updated ),
135
- vsx_results .get ('license' , None ),
136
- ms_repo
137
- ))
138
-
139
- else :
140
- print (response .status_code )
141
- print (response .content )
142
- response .raise_for_status ()
143
-
144
- # Output JSON File
145
- json_file = open (JSON_FILE_NAME , 'w' )
146
- json_file .write (json .dumps (all_extensions , indent = 4 ))
147
- json_file .close ()
91
+ vsx_results = response .json ()
92
+ extensions = vsx_results ['results' ][0 ]['extensions' ]
93
+ all_extensions = all_extensions + extensions
94
+ for extension in extensions :
95
+ versions = extension ['versions' ]
96
+ total_all_versions += len (versions )
97
+ total = vsx_results ['results' ][0 ]['resultMetadata' ][0 ]['metadataItems' ][0 ]['count' ]
98
+ print ('Retrieved %s of %s MS Marketplace extensions. %s total versions.' % (len (all_extensions ), total , total_all_versions ))
99
+ if len (all_extensions ) == total :
100
+ break
101
+ else :
102
+ get_all_extensions_payload ['filters' ][0 ]['pageNumber' ] = get_all_extensions_payload ['filters' ][0 ]['pageNumber' ] + 1
148
103
104
+ # Output CSV File
105
+ csv_file = open (CSV_FILE_NAME , 'w' )
106
+ csv_file .write ("MS Publisher (Namespace), MS Extension, MS DisplayName, MS Pricing, MS Version, MS Date, VSX Version, VSX Date, VSX Publisher, VSX License, Repo\n " )
107
+ for ext in extensions :
108
+ print ("%s.%s" % (ext ['publisher' ]['publisherName' ], ext ['extensionName' ]))
109
+ ms_extension_name , ms_publisher_name , ms_display_name , ms_latest_version , ms_last_updated , ms_repo , ms_pricing = get_ms_info (ext )
110
+ vsx_extension_url = '%s/%s/%s' % (VSX_API , ms_publisher_name , ms_extension_name )
111
+ response = requests .get (vsx_extension_url )
112
+ if response .status_code == 200 :
113
+ vsx_results = response .json ()
114
+ csv_file .write ("%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s\n " % (
115
+ ms_publisher_name ,
116
+ ms_extension_name ,
117
+ ms_display_name ,
118
+ ms_pricing ,
119
+ ms_latest_version ,
120
+ convert_date_str (ms_last_updated ),
121
+ vsx_results ['version' ],
122
+ convert_date_str (vsx_results ['timestamp' ]),
123
+ vsx_results ['publishedBy' ]['loginName' ],
124
+ vsx_results .get ('license' , None ),
125
+ ms_repo
126
+ ))
127
+ elif response .status_code == 404 :
128
+ csv_file .write ("%s, %s, %s, %s, %s, %s, , , , %s, %s\n " % (
129
+ ms_publisher_name ,
130
+ ms_extension_name ,
131
+ ms_display_name ,
132
+ ms_pricing ,
133
+ ms_latest_version ,
134
+ convert_date_str (ms_last_updated ),
135
+ vsx_results .get ('license' , None ),
136
+ ms_repo
137
+ ))
149
138
150
- except Exception as e :
151
- print ('Error: %s' % e )
152
- print (traceback .print_stack ())
139
+ else :
140
+ print (response .status_code )
141
+ print (response .content )
142
+ response .raise_for_status ()
143
+
144
+ # Output JSON File
145
+ json_file = open (JSON_FILE_NAME , 'w' )
146
+ json_file .write (json .dumps (all_extensions , indent = 4 ))
147
+ json_file .close ()
148
+ except Exception as e :
149
+ print ('Error: %s' % e )
150
+ traceback .print_stack ()
0 commit comments