commit 3844a15b65d1d2384a3e229b9d61311671b39ad1
parent c6be9a523ab532d015251df6b424af0445bd964b
Author: rbckman <rob@tarina.org>
Date: Fri, 7 Aug 2026 03:00:51 +0300
heartrank fixes, combo rank next
Diffstat:
| M | server.py | | | 46 | +++++++++++++++++++++++++--------------------- |
1 file changed, 25 insertions(+), 21 deletions(-)
diff --git a/server.py b/server.py
@@ -929,6 +929,17 @@ def pushcombines(postid):
def formattime(timeadded):
return timeadded.strftime("%Y-%m-%d %H:%M:%S")
+def sort_by_name_then_time(dir_path):
+ with os.scandir(basedir+dir_path) as entries:
+ # Sort by modification time (newest first)
+ sorted_by_modified = sorted(
+ entries,
+ key=lambda x: x.stat().st_mtime,
+ reverse=False
+ )
+ sorted_filenames = [entry.name for entry in sorted_by_modified]
+ return sorted_filenames
+
def getfeed():
timebase=session.timebase
feedbase=session.feedbase
@@ -943,54 +954,49 @@ def getfeed():
#backend program will also sync posts and likes to trustees
if feedbase == "heart" and timebase == "today":
one_day_before = now - datetime.timedelta(days=1)
- now = now.strftime('%Y-%m-%d %H:%M:%S')
- one_day_before=one_day_before.strftime('%Y-%m-%d %H:%M:%S')
#goodies = db.query("SELECT * FROM published WHERE timeadded BETWEEN '"+one_day_before+"' AND '"+now+"' ORDER BY hearts DESC LIMIT 1000;")
#posts=os.listdir('/p/posts/')
#make function get_files_by_time newest_first and by today week month year
- posts = os.listdir('/p/heartrank/')
+ posts = sort_by_name_then_time('/p/heartrank/')
for p in posts:
#check modtime here day
+ p=p.split('-')[0]
lastupdate = os.path.getmtime(basedir+'p/posts/'+p+'/meta')
- if lastupdate > one_day_before:
- l=loadjson('p/heartrank/'+p+'/meta')
+ if datetime.datetime.fromtimestamp(lastupdate) > one_day_before:
+ l=loadjson('p/posts/'+p+'/meta')
goodies.append(l)
- heartranked=[]
-
elif feedbase == "heart" and timebase == "week":
one_day_before = now - datetime.timedelta(weeks=1)
- now = now.strftime('%Y-%m-%d %H:%M:%S')
- one_day_before=one_day_before.strftime('%Y-%m-%d %H:%M:%S')
#goodies = db.query("SELECT * FROM published WHERE timeadded BETWEEN '"+one_day_before+"' AND '"+now+"' ORDER BY hearts DESC LIMIT 1000;")
- posts = os.listdir(basedir+'r/heartrank/')
+ posts = sort_by_name_then_time('/p/heartrank/')
for p in posts:
#check modtime here day
+ p=p.split('-')[0]
+ print(p)
lastupdate = os.path.getmtime(basedir+'p/posts/'+p+'/meta')
- if lastupdate > one_day_before:
+ print(lastupdate)
+ print(one_day_before)
+ if datetime.datetime.fromtimestamp(lastupdate) > one_day_before:
l=loadjson('p/posts/'+p+'/meta')
goodies.append(l)
elif feedbase == "heart" and timebase == "month":
one_day_before = now - datetime.timedelta(weeks=4)
- now = now.strftime('%Y-%m-%d %H:%M:%S')
- one_day_before=one_day_before.strftime('%Y-%m-%d %H:%M:%S')
#goodies = db.query("SELECT * FROM published WHERE timeadded BETWEEN '"+one_day_before+"' AND '"+now+"' ORDER BY hearts DESC LIMIT 1000;")
- posts = os.listdir(basedir+'r/heartrank/')
+ posts = sort_by_name_then_time('/p/heartrank/')
for p in posts:
#check modtime here day
lastupdate = os.path.getmtime(basedir+'p/posts/'+p+'/meta')
- if lastupdate > one_day_before:
+ if datetime.datetime.fromtimestamp(lastupdate) > one_day_before:
l=loadjson('p/posts/'+p+'/meta')
goodies.append(l)
elif feedbase == "heart" and timebase == "year":
one_day_before = now - datetime.timedelta(weeks=54)
- now = now.strftime('%Y-%m-%d %H:%M:%S')
- one_day_before=one_day_before.strftime('%Y-%m-%d %H:%M:%S')
#goodies = db.query("SELECT * FROM published WHERE timeadded BETWEEN '"+one_day_before+"' AND '"+now+"' ORDER BY hearts DESC LIMIT 1000;")
posts = os.listdir(basedir+'r/heartrank/')
for p in posts:
#check modtime here day
lastupdate = os.path.getmtime(basedir+'p/posts/'+p+'/meta')
- if lastupdate > one_day_before:
+ if datetime.datetime.fromtimestamp(lastupdate) > one_day_before:
l=loadjson('p/posts/'+p+'/meta')
goodies.append(l)
elif feedbase == "heart" and timebase == "" or feedbase == "heart" and timebase == "all":
@@ -1002,15 +1008,13 @@ def getfeed():
#TIME
elif feedbase == "time" and timebase == "today":
one_day_before = now - datetime.timedelta(days=1)
- now = now.strftime('%Y-%m-%d %H:%M:%S')
- one_day_before=one_day_before.strftime('%Y-%m-%d %H:%M:%S')
#goodies = db.query("SELECT * FROM published WHERE timeadded BETWEEN '"+one_day_before+"' AND '"+now+"' ORDER BY ID DESC LIMIT 1000;")
posts = get_dirs_by_time('p/posts/', reverse=True)
print(posts)
for p in posts:
#check modtime here day
lastupdate = os.path.getmtime('p/posts/'+p+'/meta')
- if lastupdate > one_day_before:
+ if datetime.datetime.fromtimestamp(lastupdate) > one_day_before:
l=loadjson('p/posts/'+p+'/meta')
goodies.append(l)
elif feedbase == "time" and timebase == "week":