Add a Google News RSS-based renderer. Minor improvements to all
[kiosk.git] / cnn_rss_renderer.py
1 import generic_news_rss_renderer
2 import re
3
4 class cnn_rss_renderer(generic_news_rss_renderer.generic_news_rss_renderer):
5     def __init__(self, name_to_timeout_dict, feed_site, feed_uris, page_title):
6         super(cnn_rss_renderer, self).__init__(
7             name_to_timeout_dict,
8             feed_site,
9             feed_uris,
10             page_title)
11         self.debug = 1
12
13     def debug_prefix(self):
14         return "cnn(%s)" % (self.page_title)
15
16     def get_headlines_page_prefix(self):
17         return "cnn-%s" % (self.page_title)
18
19     def get_details_page_prefix(self):
20         return "cnn-details-%s" % (self.page_title)
21
22     def munge_description(self, description):
23         description = re.sub('[Rr]ead full story for latest details.',
24                              '',
25                              description)
26         description = re.sub('<[^>]+>', '', description)
27         return description
28
29     def find_image(self, item):
30         image = item.findtext('media:thumbnail')
31         if image is not None:
32             image_url = image.get('url')
33             return image_url
34         return None
35
36     def should_use_https(self):
37         return False
38
39     def item_is_interesting_for_headlines(self, title, description, item):
40         if self.is_item_older_than_n_days(item, 14):
41             self.debug_print("%s: is too old!" % title)
42             return False
43         return re.search(r'[Cc][Nn][Nn][A-Za-z]*\.com', title) is None
44
45     def item_is_interesting_for_article(self, title, description, item):
46         if self.is_item_older_than_n_days(item, 7):
47             self.debug_print("%s: is too old!" % title)
48             return False
49         return (re.search(r'[Cc][Nn][Nn][A-Za-z]*\.com', title) is None and
50                 len(description) >= 65)
51
52 # Test
53 #x = cnn_rss_renderer(
54 #    {"Fetch News" : 1,
55 #     "Shuffle News" : 1},
56 #    "rss.cnn.com",
57 #    [ "/rss/cnn_topstories.rss",
58 #      "/rss/money_latest.rss",
59 #     "/rss/cnn_tech.rss",
60 #    ],
61 #    "Test" )
62 #if x.fetch_news() == 0:
63 #    print("Error fetching news, no items fetched.")
64 #x.shuffle_news()