tangled
alpha
login
or
join now
edavis.dev
/
bsky-tools
0
fork
atom
this repo has no description
0
fork
atom
overview
issues
pulls
pipelines
feat: drop mostliked feed
Eric Davis
1 year ago
cda83b95
053dbe8d
-49
2 changed files
expand all
collapse all
unified
split
feed_manager.py
feeds
mostliked.py
-2
feed_manager.py
···
7
7
from feeds.norazone_interesting import NoraZoneInteresting
8
8
from feeds.sevendirtywords import SevenDirtyWordsFeed
9
9
from feeds.ratio import RatioFeed
10
10
-
from feeds.mostliked import MostLikedFeed
11
10
from feeds.outlinetags import OutlineTagsFeed
12
11
from feeds.popqp import PopularQuotePostsFeed
13
12
···
54
53
55
54
feed_manager = FeedManager()
56
55
feed_manager.register(PopularFeed)
57
57
-
feed_manager.register(MostLikedFeed)
-47
feeds/mostliked.py
···
1
1
-
import logging
2
2
-
3
3
-
import apsw
4
4
-
import apsw.ext
5
5
-
6
6
-
from . import BaseFeed
7
7
-
8
8
-
class MostLikedFeed(BaseFeed):
9
9
-
FEED_URI = 'at://did:plc:4nsduwlpivpuur4mqkbfvm6a/app.bsky.feed.generator/most-liked'
10
10
-
11
11
-
def __init__(self):
12
12
-
self.db_cnx = apsw.Connection('db/mostliked.db')
13
13
-
self.db_cnx.pragma('foreign_keys', True)
14
14
-
self.db_cnx.pragma('journal_mode', 'WAL')
15
15
-
16
16
-
def generate_sql(self, limit, offset, langs):
17
17
-
bindings = []
18
18
-
sql = """
19
19
-
select posts.uri, create_ts, create_ts - unixepoch('now', '-24 hours') as ttl, likes, lang
20
20
-
from posts
21
21
-
left join langs on posts.uri = langs.uri
22
22
-
where
23
23
-
"""
24
24
-
if not langs:
25
25
-
sql += " 1=1 "
26
26
-
else:
27
27
-
lang_values = list(langs.values())
28
28
-
bindings.extend(lang_values)
29
29
-
sql += " OR ".join(['lang = ?'] * len(lang_values))
30
30
-
sql += """
31
31
-
order by likes desc, create_ts desc
32
32
-
limit ? offset ?
33
33
-
"""
34
34
-
bindings.extend([limit, offset])
35
35
-
return sql, bindings
36
36
-
37
37
-
def serve_feed(self, limit, offset, langs):
38
38
-
sql, bindings = self.generate_sql(limit, offset, langs)
39
39
-
cur = self.db_cnx.execute(sql, bindings)
40
40
-
return [row[0] for row in cur]
41
41
-
42
42
-
def serve_feed_debug(self, limit, offset, langs):
43
43
-
sql, bindings = self.generate_sql(limit, offset, langs)
44
44
-
return apsw.ext.format_query_table(
45
45
-
self.db_cnx, sql, bindings,
46
46
-
string_sanitize=2, text_width=9999, use_unicode=True
47
47
-
)