Start moving to ytdl-org
[youtube-dl] / devscripts / gh-pages / update-feed.py
index 2219418cefca74cfd522e07dcd693742eed9f768..506a623772e0c2195f6b3692575f5942e84c046c 100755 (executable)
@@ -1,4 +1,5 @@
 #!/usr/bin/env python3
+from __future__ import unicode_literals
 
 import datetime
 import io
@@ -7,45 +8,65 @@ import textwrap
 
 
 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>https://yt-dl.org/feed/youtube-dl-updates-feed</atom:id>
-        <atom:updated>@TIMESTAMP@</atom:updated>
+    <?xml version="1.0" encoding="utf-8"?>
+    <feed xmlns="http://www.w3.org/2005/Atom">
+        <link rel="self" href="http://ytdl-org.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@
-    </atom:feed>""")
+    </feed>""")
 
 entry_template = textwrap.dedent("""
-    <atom:entry>
-        <atom:id>https://yt-dl.org/feed/youtube-dl-updates-feed/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">
+    <entry>
+        <id>https://yt-dl.org/feed/youtube-dl-updates-feed/youtube-dl-@VERSION@</id>
+        <title>New version @VERSION@</title>
+        <link href="http://ytdl-org.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>
-        </atom:content>
-        <atom:author>
-            <atom:name>The youtube-dl maintainers</atom:name>
-        </atom:author>
-        <atom:updated>@TIMESTAMP@</atom:updated>
-    </atom:entry>
+        </content>
+        <author>
+            <name>The youtube-dl maintainers</name>
+        </author>
+        <updated>@TIMESTAMP@</updated>
+    </entry>
     """)
 
 now = datetime.datetime.now()
-now_iso = now.isoformat()
+now_iso = now.isoformat() + 'Z'
 
 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()
 
+entries = []
 for v in versions:
-    entry = entry_template.replace('@TIMESTAMP@',v.replace('.','-'))
-    entry = entry.replace('@VERSION@',v)
+    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')
@@ -53,4 +74,3 @@ atom_template = atom_template.replace('@ENTRIES@', entries_str)
 
 with io.open('update/releases.atom', 'w', encoding='utf-8') as atom_file:
     atom_file.write(atom_template)
-