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