-
Lukas Ruge authoredLukas Ruge authored
media_ticket_generator.py 2.55 KiB
# requires requests==2.28.2
# requires xmltodict==0.13.0
# requires python-frontmatter==1.0.0
import requests
import xmltodict
import frontmatter
import glob
import os
import sys
api_key = os.environ.get('REDMINE_API_KEY')
known_uids = []
url = 'https://chaotikum.org/conferences/all/frab.xml'
response = requests.get(url)
data = xmltodict.parse(response.content)
for day in data['schedule']['day']:
if 'event' in day['room']:
if '@guid' in day['room']['event']:
known_uids.append(day['room']['event']['@guid'])
else:
for event in day['room']['event']:
known_uids.append(event['@guid'])
else:
for room in day['room']:
if '@guid' in room['event']:
known_uids.append(room['event']['@guid'])
else:
for event in room['event']:
known_uids.append(event['@guid'])
files = glob.glob('_media/*.md')
for file in files:
post = frontmatter.load(file)
if 'uid' in post.keys():
uid = post['uid']
if uid not in known_uids:
if api_key is None:
print("No environment variable REDMINE_API_KEY present.", file=sys.stderr)
sys.exit(1)
else:
print('new uid, create ticket in redmine')
title = post['title']
content = post.content
print('Title:' + title)
print('uid:' + uid)
print(content)
# https://www.redmine.org/projects/redmine/wiki/rest_issues
# https://www.redmine.org/projects/redmine/wiki/rest_api
# https://www.redmine.org/issues/31186
url = f"https://redmine.chaotikum.org/issues.json?key={api_key}"
post_content = {}
post_content['issue'] = {};
post_content['issue']["project_id"] = 38
post_content['issue']["subject"] = title
post_content['issue']["description"] = content
post_content['issue']["custom_fields"] = []
uuid_field = {}
uuid_field['id'] = 11
uuid_field['value'] = uid
uuid_field['name'] = "Video-UUID"
post_content['issue']["custom_fields"].append(uuid_field)
speaker_field = {}
speaker_field['id'] = 8
speaker_field['value'] = "Speaker"
speaker_field['name'] = "Sprecher"
post_content['issue']["custom_fields"].append(speaker_field)
r = requests.post(url=url, json=post_content)
print(r.json())