3 from __future__ import print_function
5 __author__ = "Oleg Broytman <phd@phdru.name>"
6 __copyright__ = "Copyright (C) 2006-2024 PhiloSoft Design"
7 __docformat__ = "epytext en"
9 __all__ = ["get_news", "write_if_changed"]
12 from datetime import date
13 from urllib.parse import urljoin
16 def open(fname, mode):
17 return std_open(fname, mode, encoding='koi8-r')
20 class NewsItem(object):
21 baseURL = "https://phdru.name/"
26 def __init__(self, date, title, rel_link):
29 self.rel_link = rel_link
32 return urljoin(self.baseURL, self.rel_link)
34 def rfc822_date(self):
35 y, m, d = self.date.split('-')
36 d = date(int(y), int(m), int(d))
37 return d.strftime("%a, %d %b %Y %H:%M:%S +0300")
40 def get_news_header(lang):
41 news_tmpl_file = open("news.tmpl-%s" % lang, 'r')
42 header = news_tmpl_file.read()
43 news_tmpl_file.close()
48 def get_news_items(lang):
49 news_items_file = open("news_%s" % lang, 'r')
50 news_text = news_items_file.read()
51 news_items_file.close()
54 for line in news_text.split('\n'):
56 date, rel_link, title = line.split(None, 2)
57 news_items.append(NewsItem(date, title, rel_link))
66 @type lang: a string 'en' or 'ru'
67 @return: a tuple of (lnaguge-dependent header, a list of new items)
70 return get_news_header(lang), get_news_items(lang)
73 def write_if_changed(filename, new_text):
75 infile = open(filename, 'r')
76 old_text = infile.read()
81 if old_text != new_text:
82 print("Writing", filename)
83 outfile = open(filename, 'w')
84 outfile.write(new_text)