this repo has no description
1#!/usr/bin/env python3
2
3from flask import Flask, request, jsonify
4
5from feed_manager import FeedManager
6from feeds.rapidfire import RapidFireFeed
7from feeds.popular import PopularFeed
8
9app = Flask(__name__)
10
11@app.route('/xrpc/app.bsky.feed.getFeedSkeleton')
12def get_feed_skeleton():
13 manager = FeedManager()
14 manager.register(RapidFireFeed)
15 # manager.register(PopularFeed)
16
17 try:
18 limit = int(request.args.get('limit', 50))
19 except ValueError:
20 limit = 50
21
22 try:
23 offset = int(request.args.get('cursor', 0))
24 except ValueError:
25 offset = 0
26
27 if request.args['feed'].endswith('-dev'):
28 feed_uri = request.args['feed'].replace('-dev', '')
29 else:
30 feed_uri = request.args['feed']
31
32 langs = request.accept_languages
33
34 if request.args.get('debug', '0') == '1':
35 headers = {'Content-Type': 'text/plain; charset=utf-8'}
36 debug = manager.serve_feed_debug(feed_uri, limit, offset, langs)
37 return debug, headers
38
39 posts = manager.serve_feed(feed_uri, limit, offset, langs)
40 offset += len(posts)
41
42 return dict(cursor=str(offset), feed=[dict(post=uri) for uri in posts])
43
44if __name__ == '__main__':
45 from feedweb_utils import did_doc
46 app.add_url_rule('/.well-known/did.json', view_func=did_doc)
47
48 app.run(debug=True)