| 
									
										
										
										
											2013-03-26 18:13:52 +01:00
										 |  |  | #!/usr/bin/env python3 | 
					
						
							| 
									
										
										
										
											2014-11-26 20:01:20 +01:00
										 |  |  | from __future__ import unicode_literals | 
					
						
							| 
									
										
										
										
											2013-03-26 18:13:52 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | import datetime | 
					
						
							| 
									
										
										
										
											2014-01-05 04:49:43 +01:00
										 |  |  | import io | 
					
						
							|  |  |  | import json | 
					
						
							| 
									
										
										
										
											2013-03-29 19:42:33 +01:00
										 |  |  | import textwrap | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-01-05 04:49:43 +01:00
										 |  |  | atom_template = textwrap.dedent("""\
 | 
					
						
							| 
									
										
										
										
											2014-01-05 05:04:46 +01:00
										 |  |  |     <?xml version="1.0" encoding="utf-8"?> | 
					
						
							|  |  |  |     <feed xmlns="http://www.w3.org/2005/Atom"> | 
					
						
							| 
									
										
										
										
											2014-01-05 05:16:16 +01:00
										 |  |  |         <link rel="self" href="http://rg3.github.io/youtube-dl/update/releases.atom" /> | 
					
						
							| 
									
										
										
										
											2014-01-05 05:04:46 +01:00
										 |  |  |         <title>youtube-dl releases</title> | 
					
						
							|  |  |  |         <id>https://yt-dl.org/feed/youtube-dl-updates-feed</id> | 
					
						
							|  |  |  |         <updated>@TIMESTAMP@</updated> | 
					
						
							| 
									
										
										
										
											2014-01-05 04:49:43 +01:00
										 |  |  |         @ENTRIES@ | 
					
						
							| 
									
										
										
										
											2014-01-05 05:04:46 +01:00
										 |  |  |     </feed>""")
 | 
					
						
							| 
									
										
										
										
											2014-01-05 04:49:43 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | entry_template = textwrap.dedent("""
 | 
					
						
							| 
									
										
										
										
											2014-01-05 05:04:46 +01:00
										 |  |  |     <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"> | 
					
						
							| 
									
										
										
										
											2014-01-05 04:49:43 +01:00
										 |  |  |             <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> | 
					
						
							| 
									
										
										
										
											2014-01-05 05:04:46 +01:00
										 |  |  |         </content> | 
					
						
							|  |  |  |         <author> | 
					
						
							|  |  |  |             <name>The youtube-dl maintainers</name> | 
					
						
							|  |  |  |         </author> | 
					
						
							|  |  |  |         <updated>@TIMESTAMP@</updated> | 
					
						
							|  |  |  |     </entry> | 
					
						
							| 
									
										
										
										
											2014-01-05 04:49:43 +01:00
										 |  |  |     """)
 | 
					
						
							| 
									
										
										
										
											2013-03-26 18:13:52 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | now = datetime.datetime.now() | 
					
						
							| 
									
										
										
										
											2014-01-05 05:04:46 +01:00
										 |  |  | now_iso = now.isoformat() + 'Z' | 
					
						
							| 
									
										
										
										
											2013-03-26 18:13:52 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-01-05 04:49:43 +01:00
										 |  |  | atom_template = atom_template.replace('@TIMESTAMP@', now_iso) | 
					
						
							| 
									
										
										
										
											2013-03-29 19:42:33 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | versions_info = json.load(open('update/versions.json')) | 
					
						
							|  |  |  | versions = list(versions_info['versions'].keys()) | 
					
						
							|  |  |  | versions.sort() | 
					
						
							| 
									
										
										
										
											2013-03-26 18:13:52 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-01-05 05:04:46 +01:00
										 |  |  | entries = [] | 
					
						
							| 
									
										
										
										
											2013-03-29 19:42:33 +01:00
										 |  |  | for v in versions: | 
					
						
							| 
									
										
										
										
											2014-01-05 05:16:16 +01:00
										 |  |  |     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) | 
					
						
							| 
									
										
										
										
											2014-01-05 05:04:46 +01:00
										 |  |  |     entry = entry.replace('@VERSION@', v) | 
					
						
							| 
									
										
										
										
											2014-01-05 04:49:43 +01:00
										 |  |  |     entries.append(entry) | 
					
						
							| 
									
										
										
										
											2013-03-26 18:13:52 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-03-29 19:42:33 +01:00
										 |  |  | entries_str = textwrap.indent(''.join(entries), '\t') | 
					
						
							|  |  |  | atom_template = atom_template.replace('@ENTRIES@', entries_str) | 
					
						
							| 
									
										
										
										
											2013-03-26 18:13:52 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-01-05 04:49:43 +01:00
										 |  |  | with io.open('update/releases.atom', 'w', encoding='utf-8') as atom_file: | 
					
						
							|  |  |  |     atom_file.write(atom_template) |