add fetch_subreddit endpoint to retrieve and insert top posts from a specified subreddit
This commit is contained in:
@@ -18,6 +18,15 @@ class RedditConnector(BaseConnector):
|
|||||||
data = self._fetch_data(url, params)
|
data = self._fetch_data(url, params)
|
||||||
return self._parse_posts(data)
|
return self._parse_posts(data)
|
||||||
|
|
||||||
|
def get_top_subreddit_posts(self, subreddit: str, limit: int = 10, timeframe: str = 'day') -> list[Post]:
|
||||||
|
params = {
|
||||||
|
'limit': limit,
|
||||||
|
't': timeframe
|
||||||
|
}
|
||||||
|
url = f"r/{subreddit}/top.json"
|
||||||
|
data = self._fetch_data(url, params)
|
||||||
|
return self._parse_posts(data)
|
||||||
|
|
||||||
def search_posts(self,
|
def search_posts(self,
|
||||||
search: str,
|
search: str,
|
||||||
limit: int = 10,
|
limit: int = 10,
|
||||||
|
|||||||
@@ -19,5 +19,20 @@ def index(search, limit = 10):
|
|||||||
|
|
||||||
return {"status": "success", "inserted_posts": len(posts)}
|
return {"status": "success", "inserted_posts": len(posts)}
|
||||||
|
|
||||||
|
@app.route('/fetch_subreddit/<string:subreddit>/<int:limit>', methods=['GET'])
|
||||||
|
def fetch_subreddit(subreddit, limit = 10):
|
||||||
|
posts = reddit_connector.get_top_subreddit_posts(subreddit, limit=limit, timeframe='all')
|
||||||
|
|
||||||
|
for post in posts:
|
||||||
|
print(f"Post Title: {post.title}, Content: {post.content[:30]}...")
|
||||||
|
|
||||||
|
db.execute_many(
|
||||||
|
"""INSERT INTO ethnograph.posts (title, content, author_username, created_utc)
|
||||||
|
VALUES (%s, %s, %s, to_timestamp(%s));""",
|
||||||
|
[(post.title, post.content, post.author, post.timestamp) for post in posts]
|
||||||
|
)
|
||||||
|
|
||||||
|
return {"status": "success", "inserted_posts": len(posts)}
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
app.run(debug=True)
|
app.run(debug=True)
|
||||||
Reference in New Issue
Block a user