summaryrefslogtreecommitdiff
path: root/app.py
diff options
context:
space:
mode:
Diffstat (limited to 'app.py')
-rwxr-xr-xapp.py36
1 files changed, 19 insertions, 17 deletions
diff --git a/app.py b/app.py
index 755d55c..1740f51 100755
--- a/app.py
+++ b/app.py
@@ -8,6 +8,7 @@ from collections import defaultdict
8 8
9from flask import Flask, render_template, jsonify, request, make_response 9from flask import Flask, render_template, jsonify, request, make_response
10 10
11DB_PATH = "/home/mcrute/.newsbeuter/cache.db"
11app = Flask(__name__) 12app = Flask(__name__)
12 13
13 14
@@ -95,15 +96,14 @@ class DBReader(object):
95 ''' 96 '''
96 97
97 def __init__(self, db_path): 98 def __init__(self, db_path):
98 self.db_path = db_path 99 self.con = sqlite3.connect(db_path)
100 self.con.row_factory = RSSItem.from_db_row
99 101
100 def _get_connection(self): 102 def close(self):
101 conn = sqlite3.connect(self.db_path) 103 return self.con.close()
102 conn.row_factory = RSSItem.from_db_row
103 return conn
104 104
105 def _fetch(self, where=None, params=()): 105 def _fetch(self, where=None, params=()):
106 with self._get_connection() as con: 106 with self.con as con:
107 curs = con.cursor() 107 curs = con.cursor()
108 args = { 'where': '', 'where_cond': '' } 108 args = { 'where': '', 'where_cond': '' }
109 109
@@ -114,7 +114,7 @@ class DBReader(object):
114 return curs.fetchall() 114 return curs.fetchall()
115 115
116 def update_unread(self, id, unread=True): 116 def update_unread(self, id, unread=True):
117 with self._get_connection() as con: 117 with self.con as con:
118 con.execute( 118 con.execute(
119 'UPDATE rss_item SET unread = ? WHERE id = ?', 119 'UPDATE rss_item SET unread = ? WHERE id = ?',
120 [1 if unread else 0, id]) 120 [1 if unread else 0, id])
@@ -139,14 +139,14 @@ class DBReader(object):
139 return self._fetch("i.feedurl = ?", [RSSFeed.parse_token(token)]) 139 return self._fetch("i.feedurl = ?", [RSSFeed.parse_token(token)])
140 140
141 def get_feeds(self): 141 def get_feeds(self):
142 with self._get_connection() as con: 142 with self.con as con:
143 con.row_factory = RSSFeed.from_db_row 143 con.row_factory = RSSFeed.from_db_row
144 curs = con.cursor() 144 curs = con.cursor()
145 curs.execute('SELECT rssurl, url, title FROM rss_feed') 145 curs.execute('SELECT rssurl, url, title FROM rss_feed')
146 return curs.fetchall() 146 return curs.fetchall()
147 147
148 def get_feed(self, token): 148 def get_feed(self, token):
149 with self._get_connection() as con: 149 with self.con as con:
150 con.row_factory = RSSFeed.from_db_row 150 con.row_factory = RSSFeed.from_db_row
151 curs = con.cursor() 151 curs = con.cursor()
152 curs.execute('SELECT rssurl, url, title FROM rss_feed WHERE rssurl = ?', [RSSFeed.parse_token(token)]) 152 curs.execute('SELECT rssurl, url, title FROM rss_feed WHERE rssurl = ?', [RSSFeed.parse_token(token)])
@@ -159,38 +159,40 @@ def json_list(data):
159 159
160@app.route('/') 160@app.route('/')
161def index(): 161def index():
162 reader = DBReader('../../cache.db') 162 reader = DBReader(DB_PATH)
163 return render_template('items.html', items=reader.get_unread()) 163 return render_template('items.html', items=reader.get_unread())
164 164
165 165
166@app.route('/feed/') 166@app.route('/feed/')
167def feed_list(): 167def feed_list():
168 reader = DBReader('../../cache.db') 168 reader = DBReader(DB_PATH)
169 return jsonify({ 'feeds': json_list(reader.get_feeds()) }) 169 return jsonify({ 'feeds': json_list(reader.get_feeds()) })
170 170
171 171
172@app.route('/feed/<token>') 172@app.route('/feed/<token>')
173def feed(token): 173def feed(token):
174 reader = DBReader('../../cache.db') 174 reader = DBReader(DB_PATH)
175 return jsonify(reader.get_feed(token).to_json()) 175 return jsonify(reader.get_feed(token).to_json())
176 176
177 177
178@app.route('/feed/<token>/items') 178@app.route('/feed/<token>/items')
179def feed_items(token): 179def feed_items(token):
180 reader = DBReader('../../cache.db') 180 reader = DBReader(DB_PATH)
181 return jsonify({ 'items': json_list(reader.get_unread_for_feed(token)) }) 181 unread = reader.get_unread_for_feed(token)
182 return jsonify({ 'items': json_list(unread), "count": len(unread) })
182 183
183 184
184@app.route('/feed/<token>/items/unread') 185@app.route('/feed/<token>/items/unread')
185def unread_feed_items(token): 186def unread_feed_items(token):
186 reader = DBReader('../../cache.db') 187 reader = DBReader(DB_PATH)
187 return jsonify({ 'items': json_list(reader.get_unread_for_feed(token, True)) }) 188 unread = reader.get_unread_for_feed(token, True)
189 return jsonify({ 'items': json_list(unread), "count": len(unread) })
188 190
189 191
190@app.route("/item/<int:entry_id>", methods=["GET", "POST"]) 192@app.route("/item/<int:entry_id>", methods=["GET", "POST"])
191def item(entry_id): 193def item(entry_id):
192 #post read=1 194 #post read=1
193 reader = DBReader('../../cache.db') 195 reader = DBReader(DB_PATH)
194 196
195 if request.method == 'POST': 197 if request.method == 'POST':
196 try: 198 try: