diff options
Diffstat (limited to 'devscripts/gh-pages')
| -rwxr-xr-x | devscripts/gh-pages/update-feed.py | 92 | 
1 files changed, 56 insertions, 36 deletions
| diff --git a/devscripts/gh-pages/update-feed.py b/devscripts/gh-pages/update-feed.py index 16571a924..0ba15ae0f 100755 --- a/devscripts/gh-pages/update-feed.py +++ b/devscripts/gh-pages/update-feed.py @@ -1,56 +1,76 @@  #!/usr/bin/env python3  import datetime - +import io +import json  import textwrap -import json -atom_template=textwrap.dedent("""\ -								<?xml version='1.0' encoding='utf-8'?> -								<atom:feed xmlns:atom="http://www.w3.org/2005/Atom"> -									<atom:title>youtube-dl releases</atom:title> -									<atom:id>youtube-dl-updates-feed</atom:id> -									<atom:updated>@TIMESTAMP@</atom:updated> -									@ENTRIES@ -								</atom:feed>""") - -entry_template=textwrap.dedent(""" -								<atom:entry> -									<atom:id>youtube-dl-@VERSION@</atom:id> -									<atom:title>New version @VERSION@</atom:title> -									<atom:link href="http://rg3.github.io/youtube-dl" /> -									<atom:content type="xhtml"> -										<div xmlns="http://www.w3.org/1999/xhtml"> -											Downloads available at <a href="https://yt-dl.org/downloads/@VERSION@/">https://yt-dl.org/downloads/@VERSION@/</a> -										</div> -									</atom:content> -									<atom:author> -										<atom:name>The youtube-dl maintainers</atom:name> -									</atom:author> -									<atom:updated>@TIMESTAMP@</atom:updated> -								</atom:entry> -								""") +atom_template = textwrap.dedent("""\ +    <?xml version="1.0" encoding="utf-8"?> +    <feed xmlns="http://www.w3.org/2005/Atom"> +        <link rel="self" href="http://rg3.github.io/youtube-dl/update/releases.atom" /> +        <title>youtube-dl releases</title> +        <id>https://yt-dl.org/feed/youtube-dl-updates-feed</id> +        <updated>@TIMESTAMP@</updated> +        @ENTRIES@ +    </feed>""") -now = datetime.datetime.now() -now_iso = now.isoformat() +entry_template = textwrap.dedent(""" +    <entry> +        <id>https://yt-dl.org/feed/youtube-dl-updates-feed/youtube-dl-@VERSION@</id> +        <title>New version @VERSION@</title> +        <link href="http://rg3.github.io/youtube-dl" /> +        <content type="xhtml"> +            <div xmlns="http://www.w3.org/1999/xhtml"> +                Downloads available at <a href="https://yt-dl.org/downloads/@VERSION@/">https://yt-dl.org/downloads/@VERSION@/</a> +            </div> +        </content> +        <author> +            <name>The youtube-dl maintainers</name> +        </author> +        <updated>@TIMESTAMP@</updated> +    </entry> +    """) -atom_template = atom_template.replace('@TIMESTAMP@',now_iso) +now = datetime.datetime.now() +now_iso = now.isoformat() + 'Z' -entries=[] +atom_template = atom_template.replace('@TIMESTAMP@', now_iso)  versions_info = json.load(open('update/versions.json'))  versions = list(versions_info['versions'].keys())  versions.sort() +entries = []  for v in versions: -	entry = entry_template.replace('@TIMESTAMP@',v.replace('.','-')) -	entry = entry.replace('@VERSION@',v) -	entries.append(entry) +    fields = v.split('.') +    year, month, day = map(int, fields[:3]) +    faked = 0 +    patchlevel = 0 +    while True: +        try: +            datetime.date(year, month, day) +        except ValueError: +            day -= 1 +            faked += 1 +            assert day > 0 +            continue +        break +    if len(fields) >= 4: +        try: +            patchlevel = int(fields[3]) +        except ValueError: +            patchlevel = 1 +    timestamp = '%04d-%02d-%02dT00:%02d:%02dZ' % (year, month, day, faked, patchlevel) + +    entry = entry_template.replace('@TIMESTAMP@', timestamp) +    entry = entry.replace('@VERSION@', v) +    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) +with io.open('update/releases.atom', 'w', encoding='utf-8') as atom_file: +    atom_file.write(atom_template) | 
