3 from __future__ import print_function
5 __author__ = "Oleg Broytman <phd@phdru.name>"
6 __copyright__ = "Copyright (C) 2006-2017 PhiloSoft Design"
7 __docformat__ = "epytext en"
9 __all__ = ["get_news", "write_if_changed"]
12 from datetime import date
14 from urlparse import urljoin
16 from urllib.parse import urljoin
20 except NameError: # PY3
22 def open(fname, mode):
23 return std_open(fname, mode, encoding='koi8-r')
25 class NewsItem(object):
26 baseURL = "https://phdru.name/"
31 def __init__(self, date, title, rel_link):
34 self.rel_link = rel_link
37 return urljoin(self.baseURL, self.rel_link)
39 def rfc822_date(self):
40 y, m, d = self.date.split('-')
41 d = date(int(y), int(m), int(d))
42 return d.strftime("%a, %d %b %Y %H:%M:%S +0300")
45 def get_news_header(lang):
46 news_tmpl_file = open("news.tmpl-%s" % lang, 'r')
47 header = news_tmpl_file.read()
48 news_tmpl_file.close()
52 def get_news_items(lang):
53 news_items_file = open("news_%s" % lang, 'r')
54 news_text = news_items_file.read()
55 news_items_file.close()
58 for line in news_text.split('\n'):
60 date, rel_link, title = line.split(None, 2)
61 news_items.append(NewsItem(date, title, rel_link))
69 @type lang: a string 'en' or 'ru'
70 @return: a tuple of (lnaguge-dependent header, a list of new items)
73 return get_news_header(lang), get_news_items(lang)
76 def write_if_changed(filename, new_text):
78 infile = open(filename, 'r')
79 old_text = infile.read()
84 if old_text != new_text:
85 print("Writing", filename)
86 outfile = open(filename, 'w')
87 outfile.write(new_text)