import json, os, re, subprocess, sys from datetime import datetime from pathlib import Path DEAL_CONVERT_PATH = os.environ.get('LIGA_BOARDS_DEAL_CONVERT_PATH') PBN_EVENT_TAG = re.compile('\[Event ".*"\]') def deal_convert(source_file, target_files, params=''): command = 'python2 %s %s %s %s' % (DEAL_CONVERT_PATH, params, source_file, ' '.join(target_files)) try: subprocess.check_output(command, stderr=subprocess.STDOUT, universal_newlines=True, shell=True) except subprocess.CalledProcessError as ex: print('ERROR: %s' % (ex.output), file=sys.stderr) def ensure_pbn(source_id, config_name, event_name): target_path = Path('output') / config_name / 'files' / (source_id + '.pbn') if target_path.exists(): return source_path = Path('pbns') / config_name / (source_id + '.pbn') target_path.parent.mkdir(parents=True, exist_ok=True) deal_convert(str(source_path), [str(target_path)], '--jfr') with open(target_path) as target_file: pbn_content = target_file.read() pbn_content = re.sub(PBN_EVENT_TAG, '[Event "%s"]' % (event_name), pbn_content) with open(target_path, 'w') as target_file: target_file.write(pbn_content) def ensure_pdf(source_id, config_name): target_path = Path('output') / config_name / 'files' / (source_id + '.pdf') if target_path.exists(): return source_path = Path('output') / config_name / 'files' / (source_id + '.pbn') deal_convert(str(source_path), [str(target_path)]) config_dir = Path('config') for config_path in config_dir.glob('*.json'): config_name = config_path.stem print('Found config "%s" in %s' % (config_name, config_path), file=sys.stderr) with open(config_path) as config_file: config = json.load(config_file) output_dir = Path('output') / config_name output_dir.mkdir(parents=True, exist_ok=True) content = '' for section in config['sections']: content += '%s' % (section['title']) for dealset in section['sets']: set_enabled = False set_finished = True set_content = '%s' % (dealset['title']) for pbn in dealset['files']: if pbn.get('enabled', 0): ensure_pbn(pbn['path'], config_name, pbn['title']) ensure_pdf(pbn['path'], config_name) set_enabled = True set_content += '' set_content += '%s' % (pbn['name']) for filetype in ('pbn', 'pdf'): set_content += '%s' % (pbn['path'], filetype, filetype) set_content += '' else: set_finished = False if set_finished: set_content += '' set_content += '%s' % (dealset['zip'].get('title', 'cały mecz')) set_content += 'zip' % (dealset['zip']['id']) set_content += '' if set_enabled: content += set_content content += ' ' with open('template/%s.html' % (config_name)) as template_file: template = template_file.read() with open('template/%s.logo.html' % (config_name)) as logoh_file: template = template.replace('', logoh_file.read()) template = template.replace('', content) template = template.replace('', datetime.now().strftime('%Y-%m-%d %X')) with open(output_dir / 'index.html', 'w') as output_file: output_file.write(template)