this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Cleanup feeds/popular.py

+15 -14
+1
feedgen.py
··· 55 55 async def main(): 56 56 manager = Manager() 57 57 manager.register(RapidFireFeed) 58 + manager.register(PopularFeed) 58 59 59 60 async for commit in firehose_events(): 60 61 manager.process(commit)
+13 -14
feeds/popular.py
··· 5 5 FEED_URI = 'at://did:plc:4nsduwlpivpuur4mqkbfvm6a/app.bsky.feed.generator/popular' 6 6 7 7 def __init__(self): 8 - self.checkpoint = 0 9 - self.db_cnx = sqlite3.connect('db/popular.db') 8 + self.db_cnx = sqlite3.connect('/dev/shm/feedgens/popular.db') 10 9 self.db_cnx.create_function('exp', 1, math.exp) 11 10 with self.db_cnx: 12 11 self.db_cnx.executescript( 13 12 "pragma journal_mode = WAL;" 14 - "pragma synchronous = off;" 13 + "pragma synchronous = OFF;" 15 14 "create table if not exists posts (uri text, create_ts timestamp, update_ts timestamp, temperature int);" 16 15 "create unique index if not exists uri_idx on posts(uri);" 17 16 ) ··· 26 25 return 27 26 28 27 ts = commit['time'] 29 - like_subject = op['record']['subject']['uri'] 28 + like_subject_uri = op['record']['subject']['uri'] 30 29 31 - self.db_cnx.execute(( 32 - "insert into posts (uri, create_ts, update_ts, temperature) " 33 - "values (:uri, :ts, :ts, 1) " 34 - "on conflict (uri) do update set temperature = temperature + 1, update_ts = :ts" 35 - ), dict(uri=like_subject, ts=ts)) 30 + with self.db_cnx: 31 + self.db_cnx.execute(( 32 + "insert into posts (uri, create_ts, update_ts, temperature) " 33 + "values (:uri, :ts, :ts, 1) " 34 + "on conflict (uri) do update set temperature = temperature + 1, update_ts = :ts" 35 + ), dict(uri=like_subject_uri, ts=ts)) 36 36 37 - self.checkpoint += 1 38 - if self.checkpoint % 100 == 0: 39 - self.db_cnx.execute("delete from posts where strftime('%s', create_ts) < strftime('%s', 'now', '-3 hours')") 40 - self.db_cnx.commit() 37 + self.db_cnx.execute( 38 + "delete from posts where temperature = 1 and strftime('%s', create_ts) < strftime('%s', 'now', '-15 minutes')" 39 + ) 41 40 42 - def serve(self, limit, offset): 41 + def serve(self, limit, offset, langs): 43 42 cur = self.db_cnx.execute(( 44 43 "select uri from posts " 45 44 "order by temperature * exp( "
+1
feedweb.py
··· 30 30 def get_feed_skeleton(): 31 31 manager = Manager() 32 32 manager.register(RapidFireFeed) 33 + manager.register(PopularFeed) 33 34 34 35 try: 35 36 limit = int(request.args.get('limit', 50))