6eccb6ebab3fbb8e9b49ba6bac44568f1e7a484b
[kiosk.git] / renderer_catalog.py
1 #!/usr/bin/env python3
2
3 import bellevue_reporter_rss_renderer
4 import constants
5 import cnn_rss_renderer
6 import gdata_oauth
7 import gcal_renderer
8 import google_news_rss_renderer
9 import gkeep_renderer
10 import health_renderer
11 import local_photos_mirror_renderer
12 import mynorthwest_rss_renderer
13 import myq_renderer
14 import reddit_renderer
15 import renderer
16 import seattletimes_rss_renderer
17 import secrets
18 import stevens_renderer
19 import stranger_renderer
20 import stock_renderer
21 import twitter_renderer
22 import weather_renderer
23 import wsj_rss_renderer
24
25
26 seconds = 1
27 minutes = 60
28 hours = constants.seconds_per_hour
29 always = seconds * 1
30
31
32 oauth = gdata_oauth.OAuth(secrets.google_client_id, secrets.google_client_secret)
33 if not oauth.has_token():
34     user_code = oauth.get_user_code()
35     print("------------------------------------------------------------")
36     print(
37         (
38             'Go to %s and enter the code "%s" (no quotes, case-sensitive)'
39             % (oauth.verification_url, user_code)
40         )
41     )
42     oauth.get_new_token()
43
44
45 # Note, the 1s updates don't really update every second; there's a max
46 # frequency in the renderer thread of ~once a minute.  It just means that
47 # everytime it check these will be stale and happen.
48 __registry = [
49     stranger_renderer.stranger_events_renderer(
50         {"Fetch Events": (hours * 12), "Shuffle Events": (always)}
51     ),
52     myq_renderer.garage_door_renderer(
53         {"Poll MyQ": (minutes * 5), "Update Page": (always)}
54     ),
55     bellevue_reporter_rss_renderer.bellevue_reporter_rss_renderer(
56         {"Fetch News": (hours * 1), "Shuffle News": (always)},
57         "www.bellevuereporter.com",
58         ["/feed/"],
59         "Bellevue Reporter",
60     ),
61     mynorthwest_rss_renderer.mynorthwest_rss_renderer(
62         {"Fetch News": (hours * 1), "Shuffle News": (always)},
63         "mynorthwest.com",
64         ["/feed/"],
65         "MyNorthwest News",
66     ),
67     cnn_rss_renderer.cnn_rss_renderer(
68         {"Fetch News": (hours * 1), "Shuffle News": (always)},
69         "rss.cnn.com",
70         ["/rss/cnn_tech.rss", "/rss/money_technology.rss"],
71         "CNNTechnology",
72     ),
73     cnn_rss_renderer.cnn_rss_renderer(
74         {"Fetch News": (hours * 1), "Shuffle News": (always)},
75         "rss.cnn.com",
76         ["/rss/cnn_topstories.rss", "/rss/cnn_world.rss", "/rss/cnn_us.rss"],
77         "CNNNews",
78     ),
79     wsj_rss_renderer.wsj_rss_renderer(
80         {"Fetch News": (hours * 1), "Shuffle News": (always)},
81         "feeds.a.dj.com",
82         ["/rss/RSSWorldNews.xml"],
83         "WSJNews",
84     ),
85     wsj_rss_renderer.wsj_rss_renderer(
86         {"Fetch News": (hours * 1), "Shuffle News": (always)},
87         "feeds.a.dj.com",
88         ["/rss/RSSMarketsMain.xml", "/rss/WSJcomUSBusiness.xml"],
89         "WSJBusiness",
90     ),
91     google_news_rss_renderer.google_news_rss_renderer(
92         {"Fetch News": (minutes * 30), "Shuffle News": (always)},
93         "news.google.com",
94         ["/rss?hl=en-US&gl=US&ceid=US:en"],
95         "Google News",
96     ),
97     health_renderer.periodic_health_renderer(
98         {"Update Perioidic Job Health": (seconds * 45)}
99     ),
100     stock_renderer.stock_quote_renderer(
101         {"Update Prices": (minutes * 10)},
102         [
103             "MSFT",
104             "SPY",
105             "BTC-USD",
106             "IEMG",
107             "OPTAX",
108             "SPAB",
109             "SPHD",
110             "GC=F",
111             "VDC",
112             "VYMI",
113             "VNQ",
114             "VNQI",
115         ],
116         { "BTC-USD": "BTC",
117           "GC=F": "GOLD" },
118     ),
119     stevens_renderer.stevens_pass_conditions_renderer(
120         {"Fetch Pass Conditions": (hours * 1)},
121         "www.wsdot.com",
122         ["/traffic/rssfeeds/stevens/Default.aspx"],
123     ),
124     seattletimes_rss_renderer.seattletimes_rss_renderer(
125         {"Fetch News": (hours * 4), "Shuffle News": (always)},
126         "www.seattletimes.com",
127         ["/pacific-nw-magazine/feed/", "/life/feed/", "/outdoors/feed/"],
128         "Seattle Times Segments",
129     ),
130     weather_renderer.weather_renderer(
131         {"Fetch Weather (Bellevue)": (hours * 6)}, "home"
132     ),
133     weather_renderer.weather_renderer(
134         {"Fetch Weather (Stevens)": (hours * 6)}, "stevens"
135     ),
136     weather_renderer.weather_renderer(
137         {"Fetch Weather (Telma)": (hours * 6)}, "telma"),
138     local_photos_mirror_renderer.local_photos_mirror_renderer(
139         {"Index Photos": (hours * 24), "Choose Photo": (always)}
140     ),
141     gkeep_renderer.gkeep_renderer({"Update": (minutes * 10)}),
142     gcal_renderer.gcal_renderer(
143         {"Render Upcoming Events": (hours * 2), "Look For Triggered Events": (always)},
144         oauth,
145     ),
146     reddit_renderer.showerthoughts_reddit_renderer(
147         {"Scrape": (hours * 6), "Shuffle": (always)}
148     ),
149     reddit_renderer.til_reddit_renderer({"Scrape": (hours * 6), "Shuffle": (always)}),
150     reddit_renderer.seattle_reddit_renderer(
151         {"Scrape": (hours * 6), "Shuffle": (always)}
152     ),
153     reddit_renderer.quotes_reddit_renderer(
154         {"Scrape": (hours * 6), "Shuffle": (always)}
155     ),
156     reddit_renderer.lifeprotips_reddit_renderer(
157         {"Scrape": (hours * 6), "Shuffle": (always)}
158     ),
159     twitter_renderer.twitter_renderer(
160         {"Fetch Tweets": (minutes * 15), "Shuffle Tweets": (always)}
161     ),
162 ]
163
164
165 def get_renderers():
166     return __registry