heartranked

git clone https://git.tarina.org/heartranked
Log | Files | Refs

commit f8e09e2d06c2b9b04e1f1af199e418564f1adbd0
parent a600b135977c36c78442654aeb297f5a366f19a1
Author: rbckman <rob@tarina.org>
Date:   Mon,  3 Aug 2026 19:07:23 +0300

fixes

Diffstat:
Mserver.py | 345+++++++++++++++++++++++++++++++++++++++++++------------------------------------
1 file changed, 187 insertions(+), 158 deletions(-)

diff --git a/server.py b/server.py @@ -48,17 +48,14 @@ urls = ( '/upload', 'upload', '/rendered', 'rendered', '/uploads?', 'uploads', - '/config', 'config', + '/config', 'config') #Load from settings - webmaster = settings.webmaster baseurl = settings.baseurl siteurl = baseurl -allowed = settings.allowed postadmin = settings.postadmin postadmin_signature = settings.postadmin_signature - basedir = os.path.dirname(os.path.realpath(__file__))+'/' templatedir = basedir + 'html/' staticdir = basedir + 'public_html/' @@ -72,6 +69,15 @@ session = web.session.Session(app,store,initializer={'login':0, 'privilege':0, ' allowedchar = '_','-','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','1','2','3','4','5','6','7','8','9','0' +def runfirst(): + os.makedirs(basedir+'p/posts',exist_ok=True) + os.makedirs(basedir+'p/deleted',exist_ok=True) + os.makedirs(basedir+'u/',exist_ok=True) + os.makedirs(basedir+'r/',exist_ok=True) + os.makedirs(basedir+'r/visitors',exist_ok=True) + +runfirst() + def logged(): if session.login > 0: return True @@ -101,7 +107,7 @@ def savejson(thename, thedict): #hearts will be files as usernames with timestamp in a hearts folder in post folder. be stored and checked in u/hearts and post/hearts # be sure to add home domain setting to username #make save list a dict use same names - #postmeta=load(thename) + #postmeta=loadjson(thename) for key, i in thedict.items(): postmeta=createpost(key,i) with open(basedir+thename, "w") as f: @@ -110,7 +116,7 @@ def savejson(thename, thedict): def loadjson(thename): with open(basedir+thename, 'r') as f: - settings = json.load(f) + settings = json.loadjson(f) for key, i in settings.items(): postmeta=creatpost(key,i) return postmeta @@ -124,20 +130,20 @@ def adduser(name, password, mail): password = password.encode("utf-8") salt = bcrypt.gensalt() password_hashed = bcrypt.hashpw(password, salt) - tot = len(os.listdir(basedir+'users/')) + tot = len(os.listdir(basedir+'/r/users/')) print('users alltsomallt: ' + str(tot)) if tot > 1: adminlevel=3 else: adminlevel=5 savedict={'name':name, 'originalname':originalname, 'password':password, 'hashed':hashed,'mail':mail,'adminlevel':adminlevel} - savejson('users/'+name, savedict) + savejson('r/users/'+name, savedict) print("new user added") return def adminlevel(user): #level = db.query("SELECT adminlevel FROM rymdadmin WHERE name='"+user+"';")[0] - level=load('users', user) + level=loadjson('r/users/'+user) #1 session logout, web.py bug #2 rights to see pics and comment #3 rights to upoload @@ -147,14 +153,14 @@ def adminlevel(user): def stopresetpass(mail): t = None - if os.path.exists(basedir+'stopresetpass/'+mail) == True: - t=load('stopresetpass/'+mail) + if os.path.exists(basedir+'r/stopresetpass/'+mail) == True: + t=loadjson('r/stopresetpass/'+mail) else: savedict={'timeadded':time.time()} - savejson('stopresetpass/'+mail, savedict) + savejson('r/stopresetpass/'+mail, savedict) return savedict={'timeadded':time.time()} - savejson('stopresetpass/'+mail, savedict) + savejson('r/stopresetpass/'+mail, savedict) latest = time.time() - t print(latest) if latest < 600: @@ -165,14 +171,14 @@ def stopresetpass(mail): def stopflood(ip,referer): t = None - if os.path.exists(basedir+'stopflood/'+ip) == True: - t=load('stopflood/'+ip) + if os.path.exists(basedir+'r/stopflood/'+ip) == True: + t=loadjson('r/stopflood/'+ip) else: savedict={'timeadded':time.time()} - savejson('stopflood/'+ip, savedict) + savejson('r/stopflood/'+ip, savedict) return savedict={'timeadded':time.time()} - savejson('stopflood/'+ip, savedict) + savejson('r/stopflood/'+ip, savedict) latest = time.time() - t print(latest) if latest < 1: @@ -182,7 +188,7 @@ def stopflood(ip,referer): return False def getinvitation(secretinvitation): - invite=load('invites/'+secretinvitation) + invite=loadjson('r/invites/'+secretinvitation) if invitation == secretinvitation: if invite == '': return True @@ -206,9 +212,9 @@ class login(): loginform = self.form() return render.login(loginform, fejl, resetpasslink) if session.login == 3: - return web.seeother('/heartranked') + return web.seeother('/') if session.login == 5: - raise web.seeother('/heartranked') + raise web.seeother('/') def POST(self): referer = web.ctx.env.get('HTTP_REFERER',baseurl) ip = web.ctx['ip'] @@ -233,13 +239,13 @@ class login(): adminlevel(p.name) print('BACKURL: '+session.backurl) if session.login == 5: - raise web.seeother('/heartranked') + raise web.seeother('/') if session.backurl != '': backurl = session.backurl session.backurl = '' raise web.seeother(backurl) else: - raise web.seeother('/heartranked') + raise web.seeother('/') return web.seeother('/login?error=fejl') class register(): @@ -275,7 +281,7 @@ class register(): formfail = 'Too shoort passcode. Min 5 char.' except: pass - totusers = len(os.listdir(basedir+'users/')) + totusers = len(os.listdir(basedir+'r/users/')) registerform.fill(user=urllib.parse.unquote_plus(n), mail=urllib.parse.unquote_plus(m), invite=w.invite) return render.register(registerform, formfail, totusers) else: @@ -293,7 +299,7 @@ class register(): if len(i.password) < 5: raise web.seeother('/register?invite='+i.invite+'&fail=kortlosen'+r) #rymdadmins = db.select('rymdadmin', what='name, mail') - rymdadmins = os.listdir(basedir+'users/') + rymdadmins = os.listdir(basedir+'r/users/') for p in rymdadmins: if p.name.lower() == i.user.lower(): raise web.seeother('/register?invite='+i.invite+'&fail=nametaken' +r) @@ -331,7 +337,7 @@ class like: user = i.user postid = i.postid #l = db.query("SELECT * FROM likes WHERE bild='"+postid+"' AND user='"+session.user+"';") - l = loadjson('posts/'+postid+'/likes/'+session.user) + l = loadjson('p/posts/'+postid+'/hearts/'+session.user) print(session.user) if l: user_likes = True @@ -340,16 +346,16 @@ class like: if user_likes == False: #db.insert('likes', user=session.user, bild=postid, datum=datetime.datetime.now()) savedict={'timeadded':datetime.datetime.now()} - savejson('posts/'+postid+'/hearts/'+session.user, savedict) + savejson('p/posts/'+postid+'/hearts/'+session.user, savedict) savejson('u/'+session.user+'/hearts/'+session.user, savedict) user_likes = True elif user_likes == True: #db.query("DELETE FROM likes WHERE bild='"+postid+"' AND user='"+session.user+"';") - deletepost(basedir+'posts/'+postid+'/hearts/'+session.user) + deletepost(basedir+'p/posts/'+postid+'/hearts/'+session.user) deletepost(basedir+'u/'+session.user+'/hearts/'+session.user) user_likes = False #likes = db.query("SELECT Count(*) AS likes FROM likes WHERE bild='"+postid+"';")[0] - likes = len(os.listdir(basedir+'posts/'+postid+'/hearts/')) + likes = len(os.listdir(basedir+'/p/posts/'+postid+'/hearts/')) # Example: Update like count in your database # This is a placeholder; replace with your database logic # Return JSON response @@ -364,7 +370,7 @@ class user(): #db.update('published', where="postid='" + data.soundname +"'", public=data.public) public=data.public savedict={'timeadded':datetime.datetime.now()} - savejson('posts/'+postid+'/meta') + savejson('p/posts/'+postid+'/meta') elif data.showuploads=='yes': uploads = [] uploads = get_files_by_modtime('public_html/u/' + user + '/images/web/',newest_first=True) @@ -372,15 +378,15 @@ class user(): elif data.onair and data.soundname: #db.update('published', where="postid='" + data.soundname +"'", playing=data.onair) onair={"onair":data.onair} - savejson('posts/'+postid+'/meta') + savejson('p/posts/'+postid+'/meta') #soundname='aurora_ruderalis-greatful_bread' #filetype='flac' #postid = hashlib.md5(str(random.getrandbits(256)).encode('utf-8')).hexdigest() #db.insert('sound', postid=postid, filename=soundname, sort=filetype, title=soundname, uploaddate=datetime.datetime.now(), uppladdare=user, lastmod=datetime.datetime.now(), moddedby=user) #usersounds = db.query("SELECT * FROM published WHERE creator='"+user+"' ORDER BY timeadded DESC;") - usersound=load('posts/') + usersound=loadjson('p/posts/') #sounds = db.select('published') - sounds=os.listdir(basedir+'posts/') + sounds=os.listdir(basedir+'p/posts/') creditsounds = [] for i in sounds: try: @@ -400,9 +406,9 @@ class invites(): def GET(self): if session.login > 2: #user = db.select('rymdadmin', where='name="'+session.user+'"')[0] - user = loadjson('users/'+session.user) + user = loadjson('r/users/'+session.user) #invites = db.select('invites', where='createdby="'+session.user+'"') - invites = loadjson('invites/'+session.user) + invites = loadjson('r/invites/'+session.user) tuningform = self.form() w = web.input(epost=None, render=None) formfail = '' @@ -411,13 +417,13 @@ class invites(): if w.render == 'yes': secretinvitekey = hashlib.md5(str(random.getrandbits(256)).encode('utf-8')).hexdigest() #db.insert('invites', secretinvitation=secretinvitekey, created=datetime.datetime.now(), createdby=session.user) - thedict={"secretinvitekey":secretinvitekey,"timeadded":datetime.datetime.now(),"creator":session.user) - savejson('invites/'+session.user, thedict) + thedict={"secretinvitekey":secretinvitekey,"timeadded":datetime.datetime.now(),"creator":session.user} + savejson('r/invites/'+session.user, thedict) return render.invites(tuningform, formfail, user.name, invites) def POST(self): if session.login > 2: #user = db.select('rymdadmin', where='name="'+session.user+'"')[0] - user = loadjson('users/'+session.user) + user = loadjson('r/users/'+session.user) tuningform = self.form() i = web.input() if i.mail == '': @@ -426,11 +432,11 @@ class invites(): raise web.seeother('/tuning?fail=notmail') secretinvitekey = hashlib.md5(str(random.getrandbits(256)).encode('utf-8')).hexdigest() #db.insert('invites', secretinvitation=secretinvitekey, created=datetime.datetime.now(), createdby=session.user) - thedict={"secretinvitekey":secretinvitekey,"timeadded":datetime.datetime.now(),"creator":session.user) - savejson('invites/'+session.user, thedict) + thedict={"secretinvitekey":secretinvitekey,"timeadded":datetime.datetime.now(),"creator":session.user} + savejson('r/invites/'+session.user, thedict) msg = "YO! You are the One! " + user.name + " is your Morpheous. Follow this rabbit https://robinbackman.com/register?invite="+secretinvitekey sendmail(i.mail, 'Invitation to HEART RANKED!', msg) - return web.seeother('/heartranked') + return web.seeother('/') class tuning(): form = web.form.Form( @@ -442,12 +448,10 @@ class tuning(): web.form.Button('Spara')) def GET(self): if session.login > 2: - print('asdfasdfasdf') #user = db.select('rymdadmin', where='name="'+session.user+'"')[0] - user = loadjson('users/'+session.user) + user = loadjson('r/users/'+session.user) tuningform = self.form() w = web.input(namn=None,epost=None,fail=None,upd=None) - print('asdfasdfasdfkdakkakka') formfail = '' if w.fail == 'wrongpass': formfail = formfail + 'wrong passcode' @@ -503,14 +507,14 @@ class tuning(): password_hashed = bcrypt.hashpw(password, salt) #db.update('rymdadmin', where='name="'+session.user+'"', displayname=i.user, password=password_hashed, mail=i.mail.lower()) thedict={'displayname':i.user,'password':password_hashed,'mail':i.mail.lower()} - savejson('users/'+session.user, thedict) + savejson('r/users/'+session.user, thedict) return web.seeother('/tuning?upd=yes') if '@' not in i.mail: raise web.seeother('/tuning?fail=notmail') #update without passwordchange #db.update('rymdadmin', where='name="'+session.user+'"', displayname=i.user, mail=i.mail.lower()) thedict={'displayname':i.user,'mail':i.mail.lower()} - savejson('users/'+session.user, thedict) + savejson('r/users/'+session.user, thedict) return web.seeother('/tuning?upd=yes') else: raise web.seeother('/tuning?fail=wrongpass') @@ -561,7 +565,7 @@ class forgotpass(): password_hashed = bcrypt.hashpw(password, salt) #db.update('rymdadmin', where='name="'+p.name+'"', password=password_hashed) thedict={'password':password_hashed} - savejson('users/'+p.name, thedict) + savejson('r/users/'+p.name, thedict) print("lösenordet uppdaterat!") msg = "Your new passcode is: " + unencrypted_password + ' , once you logg in with this enter a new passcode by pressin your name, it a um link. Take care now bye bye then.' sendmail(p.mail, 'Heart Ranked Passcode', msg) @@ -631,7 +635,7 @@ def save_new_gif(new_frames, old_gif_information, new_path): def getdisplayname(user): try: #displayname = db.query("SELECT displayname FROM rymdadmin WHERE name='"+user+"';")[0] - displayname = loadjson('users/'+session.user) + displayname = loadjson('r/users/'+session.user) displayname = displayname.displayname except: displayname = user @@ -705,19 +709,38 @@ def callsubprocess(cmd): def visitorlog(ip, referer, environ): #last = db.query('SELECT ip AS ip FROM visitors WHERE id=(SELECT MAX(id) FROM visitors)') - last = get_files_by_modtime('visitors/'+ip,newest_first=True) - lastip=load('visitors/'+last[0]) + last = get_files_by_modtime('r/visitors/',newest_first=True) + if last: + lastip=loadjson('r/visitors/'+last[0]) + else: + lastip='' + try: + country = '' + country = os.popen('geoiplookup '+ip).read() + print(country) + if country != '': + countrycode = country.split(':')[1].split(',')[0].lower().strip() + country = country.split(':')[1].split(',')[1].strip() + else: + country='none' + #print('fuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu: '+ country) + #db.insert('visitors', ip=ip, referer=referer, environ=environ, country=country, countrycode=countrycode, time=datetime.datetime.now()) + thedict={'ip':ip,'referer':referer,'environ':environ,'country':country,'countrycode':countrycode,'time':datetime.datetime.now()} + savejson('r/visitors/'+ip,thedict) + except: + pass + print("added to visitor log") if lastip != ip: - country = '' - country = os.popen('geoiplookup '+ip).read() - #print(soundtype) - countrycode = country.split(':')[1].split(',')[0].lower().strip() - country = country.split(':')[1].split(',')[1].strip() - #print('fuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu: '+ country) try: + country = '' + country = os.popen('geoiplookup '+ip).read() + #print(soundtype) + countrycode = country.split(':')[1].split(',')[0].lower().strip() + country = country.split(':')[1].split(',')[1].strip() + #print('fuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu: '+ country) #db.insert('visitors', ip=ip, referer=referer, environ=environ, country=country, countrycode=countrycode, time=datetime.datetime.now()) thedict={'ip':ip,'referer':referer,'environ':environ,'country':country,'countrycode':countrycode,'time':datetime.datetime.now()} - savejson('visitors/'+ip,thedict) + savejson('r/visitors/'+ip,thedict) except: pass print("added to visitor log") @@ -726,9 +749,9 @@ def visitorlog(ip, referer, environ): def getvisitors(): #visitors = db.select('visitors') #visitors = db.query('SELECT * FROM visitors ORDER BY time DESC LIMIT 10000') - visitors = get_files_by_modtime('visitors/'+ip,newest_first=True) + visitors = get_files_by_modtime('r/visitors/'+ip,newest_first=True) #total = db.query('SELECT COUNT(*) AS total_visits FROM visitors') - total=len(os.listdir('visitors/')) + total=len(os.listdir(basedir+'r/visitors/')) #unique = db.query('SELECT COUNT(DISTINCT ip) AS unique_visits FROM visitors') unique=[] for i in visitors: @@ -741,20 +764,24 @@ def getvisitors(): def getvisits(): #limit=100 #visits = db.query("SELECT * FROM visitors ORDER BY time DESC LIMIT " + str(limit)) - visits=load('visitors/') + visitors=[] + v=os.listdir(basedir+'r/visitors/') + for i in v: + visit=loadjson('r/visitors/'+i) + visitors.append(visit) #visitors = db.select('visitors') - visitors=load('visitors/') + #visitors=loadjson('r/visitors/') #total = db.query('SELECT COUNT(*) AS total_visits FROM visitors') - total=len(os.listdir('visitors/')) + total=len(os.listdir(basedir+'r/visitors/')) #unique = db.query('SELECT COUNT(DISTINCT ip) AS unique_visits FROM visitors') unique=[] for i in visitors: for p in visitors: - if i == p: + if i.ip == p.ip: unique.append(i) uniquevisits=len(unique) countrylist=[] - for i in visits: + for i in visitors: if i.countrycode not in countrylist: countrylist.append(i.countrycode) #print('fuuuuuuuuuuuuuuu: '+i.countrycode) @@ -770,20 +797,20 @@ class logout: def GET(self): session.login = 0 session.user = None - raise web.seeother('/heartranked') + raise web.seeother('/') def getlikes(postid, user): user_likes = False #l = db.query("SELECT Count(*) AS likes FROM likes WHERE bild='"+postid+"';")[0] - l=len(os.listdir('posts/'+postid+'/hearts/') + l=len(os.listdir(basedir+'p/posts/'+postid+'/hearts/')) #db.update('published', where='postid="'+postid+'"', hearts=l.likes) - thedict={'hearts:'l} - savejson('posts/'+postid+'/meta',thedict) - thedict={'postid:'postid} - savejson('heartranked/'+str(l),thedict) + thedict={'hearts':l} + savejson('p/posts/'+postid+'/meta',thedict) + thedict={'hearts':l} + savejson('/p/posts/'+postid+'/hearts/'+user,thedict) if user: #m = db.query("SELECT * FROM likes WHERE bild='"+postid+"' AND user='"+user+"';") - m=load('posts/'+postid+'/hearts/'+user) + m=loadjson('/p/posts/'+postid+'/hearts/'+user) if m: user_likes = True else: @@ -802,7 +829,7 @@ def postexist(postid): return False try: #l = db.select('published', where="postid='"+postid+"'")[0] - l=load('posts/'+postid+'/meta') + l=loadjson('/p/posts/'+postid+'/meta') except: return False try: @@ -816,7 +843,7 @@ def postexist(postid): def getcombines(postid): #l = db.query("SELECT Count(*) AS combines FROM published WHERE combine='"+postid+"';")[0] - l=len(os.listdir('posts/'+postid+'/combos/')) + l=len(os.listdir(basedir+'/p/posts/'+postid+'/combos/')) #m = db.query("SELECT * FROM likes WHERE bild='"+postid+"' AND user='"+user+"';") #db.update('published', where='postid="'+postid+'"', combines=0) if l.combines > 0: @@ -826,11 +853,11 @@ def getcombines(postid): def pushcombines(postid): #l = db.query("SELECT Count(*) AS combines FROM published WHERE postid='"+postid+"';")[0] - l=len(os.listdir('posts/'+postid+'/combos/')) + l=len(os.listdir(basedir+'/p/posts/'+postid+'/combos/')) #m = db.query("SELECT * FROM likes WHERE bild='"+postid+"' AND user='"+user+"';") #db.update('published', where='postid="'+postid+'"', combines=l.combines) thedict={'combines':l} - savejson('posts/'+postid+'/meta',thedict) + savejson('/p/posts/'+postid+'/meta',thedict) if l.combines >= 0: return "⚭ " + str(l) else: @@ -854,15 +881,15 @@ def getfeed(): 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('posts/') + #posts=os.listdir('/p/posts/') #make function get_files_by_modtime newest_first and by today week month year posts = os.listdir('heartrank/') goodies=[] for p in posts: #check modtime here day - lastupdate = os.path.getmtime('heartrank/'+p) + lastupdate = os.path.getmtime(basedir+'r/heartrank/'+p) if lastupdate > one_day_before: - l=load('posts/'+p) + l=loadjson('p/posts/'+p) goodies.append(l) print(goodies) elif feedbase == "heart" and timebase == "week": @@ -871,13 +898,13 @@ def getfeed(): 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('heartrank/') + posts = os.listdir(basedir+'r/heartrank/') goodies=[] for p in posts: #check modtime here day - lastupdate = os.path.getmtime('heartrank/'+p) + lastupdate = os.path.getmtime(basedir+'r/heartrank/'+p) if lastupdate > one_day_before: - l=load('posts/'+p) + l=loadjson('p/posts/'+p) goodies.append(l) print(goodies) elif feedbase == "heart" and timebase == "month": @@ -886,13 +913,13 @@ def getfeed(): 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('heartrank/') + posts = os.listdir(basedir+'r/heartrank/') goodies=[] for p in posts: #check modtime here day - lastupdate = os.path.getmtime('heartrank/'+p) + lastupdate = os.path.getmtime(basedir+'r/heartrank/'+p) if lastupdate > one_day_before: - l=load('posts/'+p) + l=loadjson('p/posts/'+p) goodies.append(l) print(goodies) elif feedbase == "heart" and timebase == "year": @@ -901,21 +928,21 @@ def getfeed(): 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('heartrank/') + posts = os.listdir(basedir+'r/heartrank/') goodies=[] for p in posts: #check modtime here day - lastupdate = os.path.getmtime('heartrank/'+p) + lastupdate = os.path.getmtime(basedir+'r/heartrank/'+p) if lastupdate > one_day_before: - l=load('posts/'+p) + l=loadjson('p/posts/'+p) goodies.append(l) print(goodies) elif feedbase == "heart" and timebase == "" or feedbase == "heart" and timebase == "all": #goodies = db.query("SELECT * FROM published ORDER BY hearts DESC LIMIT 1000;") - posts = os.listdir('heartrank/') + posts = os.listdir(basedir+'r/heartrank/') goodies=[] for p in posts: - l=load('posts/'+p) + l=loadjson('p/posts/'+p) goodies.append(l) print(goodies) #TIME @@ -924,12 +951,12 @@ def getfeed(): 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_files_by_modtime('posts/',newest_first=True) + posts = get_files_by_modtime('p/posts/',newest_first=True) for p in posts: #check modtime here day - lastupdate = os.path.getmtime('posts/'+p) + lastupdate = os.path.getmtime('p/posts/'+p) if lastupdate > one_day_before: - l=load('posts/'+p) + l=loadjson('p/posts/'+p) goodies.append(l) print(goodies) elif feedbase == "time" and timebase == "week": @@ -938,12 +965,12 @@ def getfeed(): 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_files_by_modtime('posts/',newest_first=True) + posts = get_files_by_modtime('p/posts/',newest_first=True) for p in posts: #check modtime here day - lastupdate = os.path.getmtime('posts/'+p) + lastupdate = os.path.getmtime('p/posts/'+p) if lastupdate > one_day_before: - l=load('posts/'+p) + l=loadjson('p/posts/'+p) goodies.append(l) elif feedbase == "time" and timebase == "month": now = datetime.datetime.now() @@ -951,12 +978,12 @@ def getfeed(): 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_files_by_modtime('posts/',newest_first=True) + posts = get_files_by_modtime('p/posts/',newest_first=True) for p in posts: #check modtime here day - lastupdate = os.path.getmtime('posts/'+p) + lastupdate = os.path.getmtime('p/posts/'+p) if lastupdate > one_day_before: - l=load('posts/'+p) + l=loadjson('p/posts/'+p) goodies.append(l) elif feedbase == "time" and timebase == "year": now = datetime.datetime.now() @@ -964,18 +991,18 @@ def getfeed(): 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_files_by_modtime('posts/',newest_first=True) + posts = get_files_by_modtime('p/posts/',newest_first=True) for p in posts: #check modtime here day - lastupdate = os.path.getmtime('posts/'+p) + lastupdate = os.path.getmtime('p/posts/'+p) if lastupdate > one_day_before: - l=load('posts/'+p) + l=loadjson('p/posts/'+p) goodies.append(l) elif feedbase == "time" and timebase == "" or feedbase == "time" and timebase == "all": #goodies = db.query("SELECT * FROM published ORDER BY ID DESC LIMIT 1000;") - posts = get_files_by_modtime('posts/',newest_first=True) + posts = get_files_by_modtime('/p/posts/',newest_first=True) for p in posts: - l=load('posts/'+p) + l=loadjson('p/posts/'+p) goodies.append(l) #COMBO elif feedbase == "combo" and timebase == "today": @@ -983,13 +1010,13 @@ def getfeed(): 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 combines DESC LIMIT 1000;") - posts = os.listdir('comborank/') + posts = os.listdir(basedir+'r/comborank/') goodies=[] for p in posts: #check modtime here day - lastupdate = os.path.getmtime('comborank/'+p) + lastupdate = os.path.getmtime(basedir+'r/comborank/'+p) if lastupdate > one_day_before: - l=load('posts/'+p) + l=loadjson('p/posts/'+p) goodies.append(l) print(goodies) elif feedbase == "combo" and timebase == "week": @@ -1002,9 +1029,9 @@ def getfeed(): goodies=[] for p in posts: #check modtime here day - lastupdate = os.path.getmtime('comborank/'+p) + lastupdate = os.path.getmtime(basedir+'r/comborank/'+p) if lastupdate > one_day_before: - l=load('posts/'+p) + l=loadjson('p/posts/'+p) goodies.append(l) elif feedbase == "combo" and timebase == "month": now = datetime.datetime.now() @@ -1012,13 +1039,13 @@ def getfeed(): 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 combines DESC LIMIT 1000;") - posts = os.listdir('comborank/') + posts = os.listdir(basedir+'r/comborank/') goodies=[] for p in posts: #check modtime here day - lastupdate = os.path.getmtime('comborank/'+p) + lastupdate = os.path.getmtime(basedir+'r/comborank/'+p) if lastupdate > one_day_before: - l=load('posts/'+p) + l=loadjson('p/posts/'+p) goodies.append(l) elif feedbase == "combo" and timebase == "year": now = datetime.datetime.now() @@ -1026,29 +1053,29 @@ def getfeed(): 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 combines DESC LIMIT 1000;") - posts = os.listdir('comborank/') + posts = os.listdir(basedir+'r/comborank/') goodies=[] for p in posts: #check modtime here day - lastupdate = os.path.getmtime('comborank/'+p) + lastupdate = os.path.getmtime(basedir+'r/comborank/'+p) if lastupdate > one_day_before: - l=load('posts/'+p) + l=loadjson('p/posts/'+p) goodies.append(l) elif feedbase == "combo" and timebase == "" or feedbase == "combo" and timebase == "all": #goodies = db.query("SELECT * FROM published ORDER BY combines DESC LIMIT 1000;") - posts = os.listdir('comborank/') + posts = os.listdir('r/comborank/') goodies=[] for p in posts: - l=load('posts/'+p) + l=loadjson('p/posts/'+p) goodies.append(l) elif feedbase == "Idontevenknow": goodies = db.query("SELECT * FROM published ORDER BY combines DESC LIMIT 1000;") else: #goodies = db.query("SELECT * FROM published ORDER BY ID DESC LIMIT 1000;") - posts = os.listdir('posts/') + posts = os.listdir('p/posts/') goodies=[] for p in posts: - l=load('posts/'+p) + l=loadjson('p/posts/'+p) goodies.append(l) return goodies @@ -1057,24 +1084,24 @@ def getcombofeed(show): feedbase=session.feedbase if feedbase == "heart": #comboposts = db.query("SELECT * FROM published WHERE combine='"+show+"' ORDER BY hearts DESC LIMIT 1000;") - posts = os.listdir('hearts/'+show) + posts = os.listdir(basedir+'r/heartrank/') comboposts=[] for p in posts: - l=load('posts/'+p) + l=loadjson('p/posts/'+p) comboposts.append(l) elif feedbase == "combo": #comboposts = db.query("SELECT * FROM published WHERE combine='"+show+"' ORDER BY combines DESC LIMIT 1000;") - posts = os.listdir('combos/'+show) + posts = os.listdir(basedir+'r/combos/') comboposts=[] for p in posts: - l=load('posts/'+p) + l=loadjson('p/posts/'+p) comboposts.append(l) else: #comboposts = db.query("SELECT * FROM published WHERE combine='"+show+"' ORDER BY ID DESC LIMIT 1000;") - posts = get_files_by_modtime('posts/',newest_first=True) + posts = get_files_by_modtime(basedir+'p/posts/',newest_first=True) comboposts=[] for p in posts: - l=load('posts/'+p) + l=loadjson('p/posts/'+p) comboposts.append(l) return comboposts @@ -1108,7 +1135,7 @@ class heartranked: #search try: #bilder_totalt = db.query("SELECT COUNT(*) AS sound FROM published")[0] - bilder_totalt=os.listdir('posts/') + bilder_totalt=os.listdir('p/posts/') tot = int(bilder_totalt) print('bilder alltsomallt: ' + str(tot)) except: @@ -1132,7 +1159,7 @@ class heartranked: #tot = db.query("SELECT Count(*) AS sound FROM published WHERE creator LIKE '%"+session.search+"%';")[0] #b1 = tot.sound for i in bilder_totalt: - searchthis=load('posts/'+i) + searchthis=loadjson('p/posts/'+i) for p in dir(searchthis): if session.search in p: search_result.append(searchthis) @@ -1161,9 +1188,9 @@ class heartranked: print(session.bildsida) if session.search == '': #bilder = db.query("SELECT * FROM published ORDER BY id DESC LIMIT " + str(limit) + " OFFSET " + str(offset)) - posts=len(os.listdir('posts/') + posts=os.listdir(basedir+'p/posts/') for p in posts: - this=load('posts/'+p) + this=loadjson('p/posts/'+p) bilder.append(this) else: bilder = search_result @@ -1192,9 +1219,10 @@ class heartranked: if i.remove != None: try: #user = db.select('published', where="postid='"+i.remove+"'")[0] - post=load('posts/'+i.remove+'/meta') - if post.creator == session.user: - os.system('mv -r posts/'+i.remove+'/ deleted/'+i.remove) + post=loadjson('p/posts/'+i.remove+'/meta') + if post.creator == session.user: + #os.system('mv -r '+basedir+'posts/'+i.remove+'/ deleted/'+i.remove) + print('move to a deleted folder, make backend clean things up for real') except: pass if session.login > 3: @@ -1213,7 +1241,7 @@ class heartranked: searchform = self.form() i = web.input() if i.search != '': - raise web.seeother('/heartranked?search='+i.search) + raise web.seeother('/?search='+i.search) storage = {"content": ""} class editor: @@ -1232,11 +1260,11 @@ class editor: text2='' try: #olduser = db.select('unpublished', where="postid='"+i.remix+"'")[0] - olduser=loadjson('posts/'+i.remix+'/meta') + olduser=loadjson('p/posts/'+i.remix+'/meta') #text = db.select('unpublished', where="postid='"+i.remix+"'")[0] - text=loadtext('posts/'+i.remix+'/intro') + text=loadtext('p/posts/'+i.remix+'/intro') #text2 = db.select('unpublished', where="postid='"+i.remix+"'")[0] - text2=loadtext('posts/'+i.remix+'/post') + text2=loadtext('p/posts/'+i.remix+'/post') except: pass try: @@ -1257,7 +1285,7 @@ class editor: if i.public=='yes': try: #text = db.select('published', where="postid='"+session.postid+"'")[0] - text=loadpost('posts/'+session.postid+'/post') + text=loadpost('p/posts/'+session.postid+'/post') except: session.postid = '' else: @@ -1269,7 +1297,7 @@ class editor: if i.public=='yes': try: #text2 = db.select('published', where="postid='"+session.postid+"'")[0] - text2=loadpost('posts/'+session.postid+'/intro') + text2=loadpost('p/posts/'+session.postid+'/intro') except: session.postid = '' else: @@ -1292,16 +1320,16 @@ class editor: createpost=True try: #iftext = db.select('published', where="postid='"+session.postid+"'")[0] - iftext = loadjson('posts/'+session.postid+'/post') + iftext = loadjson('p/posts/'+session.postid+'/post') createpost=False except: iftext = '' if createpost == False: #db.update('published', where='postid="'+session.postid+'"', postid=session.postid, soundname=soundname, description=description1, description2=description2, timeadded=datetime.datetime.now(), creator=session.user) thedict={'postid':session.postid, 'soundname':soundname, 'timeadded':datetime.datetime.now(), 'creator':session.user, 'combine':i.combine, 'remix':i.remix} - savejson('posts/'+session.postid+'/meta',thedict) - savetext('posts/'+session.postid+'/post', description) - savetext('posts/'+session.postid+'/intro', description2) + savejson('p/posts/'+session.postid+'/meta',thedict) + savetext('p/posts/'+session.postid+'/post', description) + savetext('p/posts/'+session.postid+'/intro', description2) raise web.seeother('/editor?public=yes') else: print('make a new post') @@ -1316,31 +1344,31 @@ class editor: if createpost == True: try: #combine = db.select('unpublished', where="postid='"+session.postid+"'")[0] - combine=load('u/'+session.user+'/posts/'+session.postid+'/meta') + combine=loadjson('u/'+session.user+'/posts/'+session.postid+'/meta') combine=combine.combo except: combine = '' try: #remix = db.select('unpublished', where="postid='"+session.postid+"'")[0] - remix=load('u/'+session.user+'/posts/'+session.postid+'/meta') + remix=loadjson('u/'+session.user+'/posts/'+session.postid+'/meta') remix=remix.remix except: remix = '' if combine != '': #get how many combos there was for this combined post befor and update count. this way we keep track of combo track. NO! make it creator. OBVIOUSLY. - savetext('posts/'+combine+'/combos/'+session.postid,session.user) - if remix != '' - savetext('posts/'+remix+'/remixes/'+session.postid,session.user) + savetext('p/posts/'+combine+'/combos/'+session.postid,session.user) + if remix != '': + savetext('p/posts/'+remix+'/remixes/'+session.postid,session.user) #db.insert('published', postid=session.postid, soundname=soundname, description=description1, description2=description2, timeadded=datetime.datetime.now(), creator=session.user, combine=combine, remix=remix) thedict={'postid':session.postid,'soundname':soundname,'timeadded':datetime.datetime.now(),'creator':session.user,'combine':combine,'remix':remix} - savejson('posts/'+session.postid+'/meta',thedict) - savetext('posts/'+session.postid+'/post', description) - savetext('posts/'+session.postid+'/intro', description2) + savejson('p/posts/'+session.postid+'/meta',thedict) + savetext('p/posts/'+session.postid+'/post', description) + savetext('p/posts/'+session.postid+'/intro', description2) try: #l = db.query("SELECT Count(*) AS combines FROM published WHERE combine='"+combine+"';")[0] - l=len(os.listdir('posts/'+postid+'/combos/')) + l=len(os.listdir(basedir+'p/posts/'+postid+'/combos/')) thedict={'combines':l} - savejson('posts/'+postid+'/meta',thedict) + savejson('p/posts/'+postid+'/meta',thedict) #m = db.query("SELECT * FROM likes WHERE bild='"+postid+"' AND user='"+user+"';") #db.update('published', where='postid="'+combine+'"', combines=l.combines) except: @@ -1348,9 +1376,9 @@ class editor: pass try: #l = db.query("SELECT Count(*) AS combines FROM published WHERE combine='"+combine+"';")[0] - l=len(os.listdir('posts/'+postid+'/remixes/')) + l=len(os.listdir(basedir+'p/posts/'+postid+'/remixes/')) thedict={'remixes':l} - savejson('posts/'+postid+'/meta',thedict) + savejson('p/posts/'+postid+'/meta',thedict) #m = db.query("SELECT * FROM likes WHERE bild='"+postid+"' AND user='"+user+"';") #db.update('published', where='postid="'+combine+'"', combines=l.combines) except: @@ -1380,7 +1408,7 @@ class savepost: iftext = '' try: #iftext = db.select('unpublished', where="postid='"+session.postid+"'")[0] - iftext=loadjson('/u/'+session.user+'/posts/'+session.postid+'/meta') + iftext=loadjson('u/'+session.user+'/posts/'+session.postid+'/meta') iftext = iftext.postid except: iftext = '' @@ -1424,16 +1452,16 @@ class rendered: if session.postid != '': if i.public == None: #unpublished = db.select('unpublished', where='postid="'+session.postid+'"')[0] - description='u/'+session.user+'/posts/'+session.postid+'/intro' - description2='u/'+session.user+'/posts/'+session.postid+'/post' + description=loadtext('u/'+session.user+'/posts/'+session.postid+'/intro') + description2=loadtext('u/'+session.user+'/posts/'+session.postid+'/post') if description == None or description2 == None: return '' else: return markdown.markdown(description+'\n\n---\n\n'+description2) elif i.public == 'yes': #published = db.select('published', where='postid="'+session.postid+'"')[0] - description='posts/'+session.postid+'/intro' - description2='posts/'+session.postid+'/post' + description=loadtext('p/posts/'+session.postid+'/intro') + description2=loadtext('p/posts/'+session.postid+'/post') if description == None or description2 == None: return '' else: @@ -1597,4 +1625,5 @@ class uploads: uploaded = getfiles(staticdir+'upload/') return render.uploads(uploaded) -application = app.wsgifunc() +#application = app.wsgifunc() +app.run()