我正在为concourse制作一个github问题资源,但我在使用python3时遇到了麻烦
我有version
,这是一个字典列表,看起来是这样的。
version = [{"number": "123"}, {"modified": "2020-05-18T16:07:50Z"}, {"number": "321"}, {"modified": "2020-06-18T16:07:50Z"}, {"number": "543"}, {"modified": "2020-06-19T16:07:50Z"}]
该列表将有更多的项目,但将始终至少有1个项目。 最后修改的项目是列表中的最后一个项目。 我正在将version
传递到此代码块:
last_modified = version[-1]['modified']
endpoint = "https://api.github.com/repos/repo/issues?sort=updated&direction=asc&since=" + last_modified
connection = requests.get(endpoint, headers=headers)
for i in connection.json():
version.append( {"number": i['number'], "modified": i['updated_at']})
issues_updated_since = json.dumps(version)
return issues_updated_since
问题是我得到的是重复的,因为我只是添加项目到列表。 我需要能够只追加不是已经在列表中的项目,并在此列表中的项目,只更新那些更改了日期的项目。 我怎么能这么做呢?
这是针对自定义汇合资源的,如果有帮助,请使用check脚本。
您可以存储日期(此处为dates
),并仅在收到的版本尚不存在时才追加到version
。
last_modified = version[-1]['modified']
dates = {v['modified'] for v in version}
endpoint = "https://api.github.com/repos/repo/issues?sort=updated&direction=asc&since=" + last_modified
connection = requests.get(endpoint, headers=headers)
for i in connection.json():
if i['updated_at'] in dates:
continue
version.append({"number": i['number'], "modified": i['updated_at']})
dates.add(i['updated_at'])
issues_updated_since = json.dumps(version)
return issues_updated_since