Skip to content

Commit 193eb22

Browse files
cjyabrahamaliok
andauthored
Modify the projects import to use the new landscape2 API (#591)
* Modify the projects import to use the new landscape2 API Signed-off-by: Chris Abraham <[email protected]> * Adds comment to clarify logic Co-authored-by: Ali Ok <[email protected]> Signed-off-by: Chris Abraham <[email protected]> --------- Signed-off-by: Chris Abraham <[email protected]> Co-authored-by: Ali Ok <[email protected]>
1 parent 9d7ae12 commit 193eb22

File tree

2 files changed

+42
-32
lines changed

2 files changed

+42
-32
lines changed

.github/workflows/updateprojects.py

+41-31
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,7 @@
1212

1313
projectsCsvFile = os.path.dirname(os.path.realpath(__file__))+'/../../website/data/projects.json'
1414

15-
landscapeBaseURL = 'https://landscape.netlify.app'
16-
landscapeHostedProjects = landscapeBaseURL+'/api/items?project=hosted'
17-
landscapeSingleItem = landscapeBaseURL+'/data/items/{}.json'
15+
landscapeBaseURL = 'https://landscape.cncf.io/api/projects/all.json'
1816

1917
# add an entry at the top as the header. unfortunately, we can't have comments in JSON files
2018
csvRows = [{
@@ -23,34 +21,46 @@
2321
"project": "AUTOGENERATED"
2422
}]
2523

26-
with urllib.request.urlopen(landscapeHostedProjects) as hostedProjectsResponse:
27-
for projectStage in json.load(hostedProjectsResponse):
28-
for project in projectStage['items']:
29-
with urllib.request.urlopen(landscapeSingleItem.format(project['id'])) as singleItemResponse:
30-
projectData = json.load(singleItemResponse)
31-
print("Processing {}...".format(projectData['name']))
32-
csvRows.append({
33-
'name': projectData['name'],
34-
'path': projectData['path'].split(' / ')[1] if 'path' in projectData else None,
35-
'description': projectData['description'] if 'description' in projectData else None,
36-
'homepage_url': projectData['homepage_url'] if 'homepage_url' in projectData else None,
37-
'project': projectData['project'] if 'project' in projectData else None,
38-
'repo_url': projectData['repo_url'] if 'repo_url' in projectData else None,
39-
'logo': projectData['href'] if 'href' in projectData else None,
40-
'twitter': projectData['twitter'] if 'twitter' in projectData else None,
41-
'crunchbase': projectData['crunchbase'] if 'crunchbase' in projectData else None,
42-
'chat_channel': projectData['extra']['chat_channel'] if 'extra' in projectData and 'chat_channel' in projectData['extra'] else None,
43-
'accepted': projectData['extra']['accepted'] if 'extra' in projectData and 'accepted' in projectData['extra'] else None,
44-
'dev_stats_url': projectData['extra']['dev_stats_url'] if 'extra' in projectData and 'dev_stats_url' in projectData['extra'] else None,
45-
'artwork_url': projectData['extra']['artwork_url'] if 'extra' in projectData and 'artwork_url' in projectData['extra'] else None,
46-
'stack_overflow_url': projectData['extra']['stack_overflow_url'] if 'extra' in projectData and 'stack_overflow_url' in projectData['extra'] else None,
47-
'blog_url': projectData['extra']['blog_url'] if 'extra' in projectData and 'blog_url' in projectData['extra'] else None,
48-
'mailing_list_url': projectData['extra']['mailing_list_url'] if 'extra' in projectData and 'mailing_list_url' in projectData['extra'] else None,
49-
'slack_url': projectData['extra']['slack_url'] if 'extra' in projectData and 'slack_url' in projectData['extra'] else None,
50-
'gitter_url': projectData['extra']['gitter_url'] if 'extra' in projectData and 'gitter_url' in projectData['extra'] else None,
51-
'youtube_url': projectData['extra']['youtube_url'] if 'extra' in projectData and 'youtube_url' in projectData['extra'] else None,
52-
'language': projectData['github_data']['languages'][0]['name'] if 'github_data' in projectData and 'languages' in projectData['github_data'] and len(projectData['github_data']['languages']) > 0 else None
53-
})
24+
with urllib.request.urlopen(landscapeBaseURL) as hostedProjectsResponse:
25+
for project in json.load(hostedProjectsResponse):
26+
print("Processing {}...".format(project['name']))
27+
28+
repo_url = None
29+
language = None
30+
if 'repositories' in project and len(project['repositories']) > 0:
31+
for repo in project['repositories']:
32+
if repo['primary']:
33+
repo_url = repo['url']
34+
if len(repo['languages']) > 0:
35+
largest_value = max(repo['languages'].values())
36+
for key, value in repo['languages'].items():
37+
if value == largest_value:
38+
language = key
39+
# only use the information from the first "primary" repository
40+
break
41+
42+
csvRows.append({
43+
'name': project['name'],
44+
'path': project['subcategory'] if 'subcategory' in project else None,
45+
'description': project['description'] if 'description' in project else None,
46+
'homepage_url': project['homepage_url'] if 'homepage_url' in project else None,
47+
'project': project['maturity'] if 'maturity' in project else None,
48+
'repo_url': repo_url if repo_url else None,
49+
'logo': project['logo_url'] if 'logo_url' in project else None,
50+
'twitter': project['twitter_url'] if 'twitter_url' in project else None,
51+
'crunchbase': project['crunchbase_url'] if 'crunchbase_url' in project else None,
52+
'chat_channel': project['chat_channel'] if 'chat_channel' in project else None,
53+
'accepted': project['accepted_at'] if 'accepted_at' in project else None,
54+
'dev_stats_url': project['devstats_url'] if 'devstats_url' in project else None,
55+
'artwork_url': project['artwork_url'] if 'artwork_url' in project else None,
56+
'stack_overflow_url': project['stack_overflow_url'] if 'stack_overflow_url' in project else None,
57+
'blog_url': project['blog_url'] if 'blog_url' in project else None,
58+
'mailing_list_url': project['mailing_list_url'] if 'mailing_list_url' in project else None,
59+
'slack_url': project['slack_url'] if 'slack_url' in project else None,
60+
'gitter_url': project['gitter_url'] if 'gitter_url' in project else None,
61+
'youtube_url': project['youtube_url'] if 'youtube_url' in project else None,
62+
'language': language if language else None
63+
})
5464

5565
json_object = json.dumps(csvRows, indent=4)
5666

website/layouts/shortcodes/projects-details.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{{ range $.Site.Data.projects }}
22
{{ if eq .project ($.Get "level") }}
33

4-
<img class="project-logo" alt="{{ .name }} logo" src="https://landscape.netlify.app/{{ .logo }}">
4+
<img class="project-logo" alt="{{ .name }} logo" src="{{ .logo }}">
55
<h3 id="{{ urlize .name }}">{{ .name }}</h3>
66
<p><em>{{ .description }}</em></p>
77

0 commit comments

Comments
 (0)