b-jokes/helpers/jokes.py
Administrator f5d2418555 remove old
2022-10-10 20:59:09 +03:00

50 lines
1.3 KiB
Python

import datetime
import logging
import random
from time import sleep
from requests import get
from helpers.mongo import mongo
def fetch_jokes():
i = 1
while True:
info = get(f"https://baneks.ru/{i}")
if info.status_code == 200:
logging.info(i)
content = info.text
anek = content.split("<p>")[1].split("</p>")[0].replace("<br />", "")
if '<a href="random">' in anek:
break
if mongo.jokes_collection.find_one({"id": i}) is None:
mongo.jokes_collection.insert_one({
"id": i,
"text": anek
})
i += 1
def get_random() -> str:
count_docs = mongo.jokes_collection.count_documents({})
rnd = random.randrange(1, count_docs + 1)
anek = mongo.jokes_collection.aggregate([{"$sample": {"size": 1}}]).next()
return anek['text']
def remove_old():
mongo.events_collection.delete_many({"date": {"$lt": datetime.datetime.now() - datetime.timedelta(days=31)}})
def poll_jokes():
while True:
logging.info("removing old stats")
remove_old()
logging.info("old removed")
logging.info("start fetching jokes")
fetch_jokes()
logging.info("finished fetching jokes")
logging.info("sleeping a day")
sleep(60 * 60 * 24)