Skip to content
Snippets Groups Projects
Commit e35d39d2 authored by Frederik Arnold's avatar Frederik Arnold
Browse files

Merge branch 'release/v.1.3.2'

parents c4dd9949 16830ea6
No related branches found
No related tags found
No related merge requests found
Pipeline #37371 passed
......@@ -16,6 +16,7 @@ stages:
- badge
- upload
- release
- zenodo
test:
stage: test
......@@ -65,4 +66,14 @@ release_job:
name: 'Lotte $CI_COMMIT_TAG'
description: 'Release $CI_COMMIT_TAG'
only:
- tags
\ No newline at end of file
- tags
zenodo_upload:
stage: zenodo
before_script:
- pip install requests
script:
- git archive --format zip --output Lotte-$CI_COMMIT_TAG.zip $CI_COMMIT_TAG
- python zenodo.py --access-token $ZENODO_ACCESS_TOKEN --id 6123229 --title Lotte --version $CI_COMMIT_TAG --file-path Lotte-$CI_COMMIT_TAG.zip
only:
- tags
\ No newline at end of file
[metadata]
# replace with your username:
name = Lotte
version = 1.3.1
version = 1.3.2
author = Frederik Arnold
author_email = frederik.arnold@hu-berlin.de
description = Lotte is a tool for quotation detection in texts and can deal with common properties of quotations, for example, ellipses or inaccurate quotations.
......
import requests
import json
from argparse import ArgumentParser
# base_url = 'https://sandbox.zenodo.org/api/'
base_url = 'https://zenodo.org/api/'
def __get_latest_url(global_id, access_token):
request_url = f"{base_url}deposit/depositions/{global_id}?access_token={access_token}"
response = requests.get(request_url)
response.raise_for_status()
data = response.json()
if 'latest_draft' in data['links']:
raise Exception('There is already a draft!')
return data['links']['newversion']
def __create_new_version(new_version_url, access_token):
response = requests.post(new_version_url, params={'access_token': access_token})
response.raise_for_status()
data = response.json()
return data
def __update_metadata(draft_url, access_token, data):
request_url = f"{draft_url}?access_token={access_token}"
headers = {"Content-Type": "application/json"}
response = requests.put(request_url, data=json.dumps(data), headers=headers)
response.raise_for_status()
def __upload_file(draft_url, access_token, filename, file_path):
request_url = f'{draft_url}/files?access_token={access_token}'
data = {'name': filename}
files = {'file': open(file_path, 'rb')}
response = requests.post(request_url, data=data, files=files)
response.raise_for_status()
def main():
argument_parser = ArgumentParser()
argument_parser.add_argument("--access-token", dest="access_token",
help="The access token", required=True)
argument_parser.add_argument("--id", dest="global_id",
help="The global id", required=True)
argument_parser.add_argument("--title", dest="title",
help="The title", required=True)
argument_parser.add_argument("--version", dest="version",
help="The version", required=True)
argument_parser.add_argument("--file-path", dest="file_path",
help="The file path", required=True)
args = argument_parser.parse_args()
access_token = args.access_token
global_id = args.global_id
title = args.title
version = args.version
file_path = args.file_path
if version.startswith('v.'):
version = version[2:]
elif version.startswith('v'):
version = version[1:]
new_version_url = __get_latest_url(global_id, access_token)
new_version_data = __create_new_version(new_version_url, access_token)
draft_url = new_version_data['links']['latest_draft']
updated_metadata = {'metadata': new_version_data['metadata']}
del updated_metadata['metadata']['doi']
updated_metadata['metadata']['title'] = f'{title} v.{version}'
updated_metadata['metadata']['version'] = version
__update_metadata(draft_url, access_token, updated_metadata)
filename = f'{title}-v.{version}.zip'
__upload_file(draft_url, access_token, filename, file_path)
if __name__ == '__main__':
main()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment