#!/usr/bin/env python3 import datetime import textwrap import json import subprocess atom_template=textwrap.dedent("""\ youtube-dl releases youtube-dl-updates-feed @TIMESTAMP@ @ENTRIES@ """) entry_template=textwrap.dedent(""" youtube-dl-@VERSION@ New version @VERSION@ Downloads available at https://yt-dl.org/downloads/@VERSION@/ @CHANGES@ The youtube-dl maintainers @TIMESTAMP@ """) now = datetime.datetime.now() now_iso = now.isoformat() atom_template = atom_template.replace('@TIMESTAMP@',now_iso) entries=[] versions_info = json.load(open('update/versions.json')) versions = list(versions_info['versions'].keys()) versions.sort() for v in versions: entry = entry_template.replace('@TIMESTAMP@',v.replace('.','-')) entry = entry.replace('@VERSION@',v) changes = versions_info['versions'][v].get('changelog', '') if changes: # We only convert the changelog to html with pandoc if it's not an empty string pandoc_cmd = ['pandoc', '--from', 'markdown', '--to', 'html'] pandoc = subprocess.Popen(pandoc_cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE) changes = pandoc.communicate(input=changes.encode('utf-8'))[0].decode('utf-8') changes = u'Changelog: {}'.format(changes) entry = entry.replace('@CHANGES@', changes) entries.append(entry) entries_str = textwrap.indent(''.join(entries), '\t') atom_template = atom_template.replace('@ENTRIES@', entries_str) with open('update/releases.atom','w',encoding='utf-8') as atom_file: atom_file.write(atom_template)
Downloads available at https://yt-dl.org/downloads/@VERSION@/
@CHANGES@