aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjwansek <eddie.atten.ea29@gmail.com>2023-02-27 00:05:41 +0000
committerjwansek <eddie.atten.ea29@gmail.com>2023-02-27 00:05:41 +0000
commit7c53f89ccdd92e308d14d069e2e070f7a1c2da26 (patch)
treeb16a2405e88070abe29b909314cfbd5b3d21d2cf
parent2831eb8af07b1c387f17cf4d9a4b3a1b1aa47bb5 (diff)
downloadeda.gay-7c53f89ccdd92e308d14d069e2e070f7a1c2da26.tar.gz
eda.gay-7c53f89ccdd92e308d14d069e2e070f7a1c2da26.zip
Added q&a page
-rwxr-xr-xapp.py10
-rw-r--r--curiouscat.py47
-rwxr-xr-xdatabase.py46
-rw-r--r--templates/questions.html.j213
4 files changed, 111 insertions, 5 deletions
diff --git a/app.py b/app.py
index 75558f8..556d61a 100755
--- a/app.py
+++ b/app.py
@@ -236,6 +236,16 @@ def serve_random():
localimg = "/img/random.jpg?seed=%i" % random.randint(0, 9999)
)
+@app.route("/questions")
+def serve_questions():
+ with database.Database() as db:
+ return flask.render_template(
+ "questions.html.j2",
+ **get_template_items("random image", db),
+ curiouscat_username = db.get_curiouscat_username(),
+ qnas = db.get_curiouscat_qnas()
+ )
+
if __name__ == "__main__":
try:
if sys.argv[1] == "--production":
diff --git a/curiouscat.py b/curiouscat.py
new file mode 100644
index 0000000..90cdaf6
--- /dev/null
+++ b/curiouscat.py
@@ -0,0 +1,47 @@
+import datetime
+import requests
+import json
+
+def get_curiouscat_qnas_after(name, last_timestamp = None):
+ if last_timestamp is None:
+ url = "https://curiouscat.live/api/v2/profile?username=%s&count=100" % (name)
+ else:
+ url = "https://curiouscat.live/api/v2/profile?username=%s&count=100&max_timestamp=%d" % (name, last_timestamp)
+
+ req = requests.get(url)
+ return req.json()["posts"]
+
+def get_all_curiouscat_qnas(name):
+ out = []
+ period = get_curiouscat_qnas_after(name)
+ out += period
+ while len(period) == 100:
+ oldest = min([i["timestamp"] for i in period])
+ period = get_curiouscat_qnas_after("jwnskanzkwk", last_timestamp = oldest - 1)
+
+ out += period
+
+ return post_process(out, name)
+
+def get_all_curiouscat_qnas_before(name, min_dt):
+ url = "https://curiouscat.live/api/v2/profile?username=%s&count=100&min_timestamp=%d" % (name, int(min_dt.timestamp()) + 1)
+ req = requests.get(url)
+ return post_process(req.json()["posts"], "name")
+
+def post_process(cc, name):
+ return [
+ {
+ "id": i["id"],
+ "link": "https://curiouscat.me/%s/post/%d" % (name, i["id"]),
+ "datetime": datetime.datetime.fromtimestamp(i["timestamp"]),
+ "question": i["comment"],
+ "answer": i["reply"]
+ }
+ for i in cc
+ ]
+
+if __name__ == "__main__":
+ import database
+
+ with database.Database() as db:
+ print(db.append_curiouscat_qnas(get_all_curiouscat_qnas_before("jwnskanzkwk", db.get_biggest_curiouscat_timestamp()))) \ No newline at end of file
diff --git a/database.py b/database.py
index c8bf5ff..8829615 100755
--- a/database.py
+++ b/database.py
@@ -3,7 +3,9 @@ from dataclasses import dataclass
from github import Github
from lxml import html
import configparser
+import curiouscat
import threading
+import operator
import datetime
import requests
import twython
@@ -304,9 +306,45 @@ class Database:
self.__connection.commit()
+ def get_curiouscat_username(self):
+ with self.__connection.cursor() as cursor:
+ cursor.execute("SELECT link FROM headerLinks WHERE name = 'curiouscat';")
+ return urlparse(cursor.fetchone()[0]).path.split("/")[1]
+
+ def append_curiouscat_qnas(self, qnas):
+ with self.__connection.cursor() as cursor:
+ for qna in qnas:
+ cursor.execute("SELECT curiouscat_id FROM qnas WHERE curiouscat_id = %s;", (qna["id"], ))
+ if cursor.fetchone() is None:
+
+ cursor.execute("INSERT INTO `qnas` VALUES (%s, %s, %s, %s, %s);", (
+ qna["id"], qna["link"], qna["datetime"], qna["question"], qna["answer"]
+ ))
+ print("Appended question with timestamp %s" % datetime.datetime.fromtimestamp(qna["id"]).isoformat())
+
+ else:
+ print("Skipped question with timestamp %s" % datetime.datetime.fromtimestamp(qna["id"]).isoformat())
+ self.__connection.commit()
+
+ def get_biggest_curiouscat_timestamp(self):
+ with self.__connection.cursor() as cursor:
+ cursor.execute("SELECT MAX(`timestamp`) FROM `qnas`;")
+ return cursor.fetchone()[0]
+
+ def get_curiouscat_qnas(self):
+ with self.__connection.cursor() as cursor:
+ cursor.execute("SELECT * FROM qnas;")
+ return sorted(cursor.fetchall(), key = operator.itemgetter(2), reverse = True)
+
def update_cache():
# print("updating cache...")
with Database() as db:
+ db.append_curiouscat_qnas(
+ curiouscat.get_all_curiouscat_qnas_before(
+ db.get_curiouscat_username(),
+ db.get_biggest_curiouscat_timestamp()
+ )
+ )
db.fetch_diary()
db.update_twitter_cache(request_recent_tweets(10000))
# print("Done updating twitter cache...")
@@ -359,8 +397,6 @@ def request_recent_commits(since = datetime.datetime.now() - datetime.timedelta(
if __name__ == "__main__":
- print(request_recent_commits())
- #import app
- #with Database() as db:
- # print(app.get_sidebar_img(db))
- # # print(db.get_sidebar_images())
+ # print(request_recent_commits())
+ with Database() as db:
+ print(db.get_curiouscat_qnas())
diff --git a/templates/questions.html.j2 b/templates/questions.html.j2
new file mode 100644
index 0000000..fd53120
--- /dev/null
+++ b/templates/questions.html.j2
@@ -0,0 +1,13 @@
+{% extends "template.html.j2" %}
+{% block content %}
+ <h4><a href="https://curiouscat.live/{{ curiouscat_username }}">ask a question!</a></h4>
+ <dl>
+ {% for id_, link, dt, question, answer in qnas %}
+ <dt><a href="{{ link }}">{{ dt.isoformat() }}</a></dt>
+ <dd>
+ <dt class="question">{{ question }}</dt>
+ <dd class="answer">{{ answer }}</dd>
+ </dd>
+ {% endfor %}
+ </dl>
+{% endblock %} \ No newline at end of file