this repo has no description

cleanup

+24
feed_manager.py
···
+
class FeedManager:
+
def __init__(self):
+
self.feeds = {}
+
+
def register(self, feed):
+
self.feeds[feed.FEED_URI] = feed()
+
+
def process_commit(self, commit):
+
for feed in self.feeds.values():
+
feed.process_commit(commit)
+
+
def serve_feed(self, feed_uri, limit, offset, langs):
+
feed = self.feeds.get(feed_uri)
+
if feed is not None:
+
return feed.serve_feed(limit, offset, langs)
+
+
def serve_feed_debug(self, feed_uri, limit, offset, langs):
+
feed = self.feeds.get(feed_uri)
+
if feed is not None:
+
return feed.serve_feed_debug(limit, offset, langs)
+
+
def run_tasks_minute(self):
+
for feed in self.feeds.values():
+
feed.run_tasks_minute()
+9 -9
feedgen.py
···
#!/usr/bin/env python3
import asyncio
-
import dag_cbor
+
from datetime import datetime, timezone
+
from io import BytesIO
import logging
-
import sys
-
import websockets
from atproto import CAR
-
from io import BytesIO
-
from datetime import datetime, timezone
+
import dag_cbor
+
import websockets
-
from feeds import FeedManager
+
from feed_manager import FeedManager
from feeds.rapidfire import RapidFireFeed
from feeds.popular import PopularFeed
from firehose_manager import FirehoseManager
···
if seq:
relay_url += f'?cursor={seq}'
-
sys.stdout.write(f'opening websocket connection to {relay_url}\n')
-
sys.stdout.flush()
+
logger = logging.getLogger('feeds.events')
+
logger.info(f'opening websocket connection to {relay_url}')
async with websockets.connect(relay_url, ping_timeout=None) as firehose:
while True:
···
repo_op = op.copy()
if op['cid'] is not None:
repo_op['cid'] = repo_op['cid'].encode('base32')
-
repo_op['record'] = car_parsed.blocks[repo_op['cid']]
+
repo_op['record'] = car_parsed.blocks.get(repo_op['cid'])
+
message['op'] = repo_op
yield message
-25
feeds/__init__.py
···
return parsed
elif parsed > utc_now:
return utc_now
-
-
class FeedManager:
-
def __init__(self):
-
self.feeds = {}
-
-
def register(self, feed):
-
self.feeds[feed.FEED_URI] = feed()
-
-
def process_commit(self, commit):
-
for feed in self.feeds.values():
-
feed.process_commit(commit)
-
-
def serve_feed(self, feed_uri, limit, offset, langs):
-
feed = self.feeds.get(feed_uri)
-
if feed is not None:
-
return feed.serve_feed(limit, offset, langs)
-
-
def serve_feed_debug(self, feed_uri, limit, offset, langs):
-
feed = self.feeds.get(feed_uri)
-
if feed is not None:
-
return feed.serve_feed_debug(limit, offset, langs)
-
-
def run_tasks_minute(self):
-
for feed in self.feeds.values():
-
feed.run_tasks_minute()
+2 -1
feeds/popular.py
···
+
import logging
import os
-
import logging
+
import apsw
from . import BaseFeed
+2 -1
feeds/rapidfire.py
···
+
import logging
import os
+
import apsw
import apsw.ext
-
import logging
from . import BaseFeed
+4 -2
feedweb.py
···
#!/usr/bin/env python3
-
from feeds import FeedManager
+
from flask import Flask, request, jsonify
+
+
from feed_manager import FeedManager
from feeds.rapidfire import RapidFireFeed
from feeds.popular import PopularFeed
-
from flask import Flask, request, jsonify
app = Flask(__name__)
···
if __name__ == '__main__':
from feedweb_utils import did_doc
app.add_url_rule('/.well-known/did.json', view_func=did_doc)
+
app.run(debug=True)
+2 -1
firehose_manager.py
···
+
import logging
+
import apsw
-
import logging
class FirehoseManager:
def __init__(self, fname='firehose.db'):