gonzopi

git clone https://git.tarina.org/gonzopi
Log | Files | Refs | README | LICENSE

commit 50800e5a9d1895ddd9712c0d168c51c2e5ef0462
parent 049eaf93d9333aec69632c440bbaa7c7d13a5f7f
Author: rbckman <rob@tarina.org>
Date:   Fri, 30 May 2025 17:01:13 +0100

making sublinks for new takes

Diffstat:
Mgonzopi.py | 200++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------
Msrv/templates/tree.html | 60++++++++++++++----------------------------------------------
2 files changed, 176 insertions(+), 84 deletions(-)

diff --git a/gonzopi.py b/gonzopi.py @@ -564,7 +564,7 @@ def main(): rendermenu = True updatethumb=True #BLEND - elif pressed == 'middle' and menu[selected] == 'BLEND:': + elif pressed == 'middle' and menu[selected] == 'BLEND:' and recordable == False: videolength=0 blenddir = filmfolder + filmname + '/scene' + str(scene).zfill(3) +'/shot' + str(shot).zfill(3) + '/blend/' filename=yanked @@ -687,7 +687,35 @@ def main(): #LOAD FILM elif pressed == 'middle' and menu[selected] == 'LOAD': filmname = loadfilm(filmname, filmfolder, camera, overlay) + allfilm = getfilms(filmfolder) + for i in allfilm: + if i[0] == newfilmname: + filmname_exist=True + if filmname != newfilmname and filmname_exist==False: + filmname = newfilmname + os.makedirs(filmfolder + filmname) + vumetermessage('Good luck with your film ' + filmname + '!') + #make a filmhash + print('making filmhash...') + filmhash = shortuuid.uuid() + with open(filmfolder + filmname + '/.filmhash', 'w') as f: + f.write(filmhash) + updatethumb = True + rendermenu = True + scene = 1 + shot = 1 + take = 1 + #selectedaction = 0 + newfilmname = '' + else: + filmname = newfilmname + newfilmname = '' + vumetermessage('film already exist!') + logger.info('film already exist!') + print(term.clear) + updatethumb = True loadfilmsettings = True + rendermenu = True #UPDATE elif pressed == 'middle' and menu[selected] == 'UPDATE': if webz_on() == True: @@ -1466,7 +1494,7 @@ def main(): send_serial_port(slidecommander,';'+str(slide)) videos_totalt = db.query("SELECT COUNT(*) AS videos FROM videos")[0] tot = int(videos_totalt.videos) - video_origins=datetime.datetime.now().strftime('%Y%d%m')+str(tot).zfill(5)+'_'+os.urandom(8).hex() + video_origins=datetime.datetime.now().strftime('%Y%d%m')+'_'+os.urandom(8).hex()+'_'+str(tot).zfill(5) db.insert('videos', tid=datetime.datetime.now(), filename=filmfolder+'.videos/'+video_origins+'.mp4', foldername=foldername, filmname=filmname, scene=scene, shot=shot, take=take, audiolength=0, videolength=0) os.system(gonzopifolder + '/alsa-utils-1.1.3/aplay/arecord -D hw:' + str(plughw) + ' -f '+soundformat+' -c ' + str(channels) + ' -r '+soundrate+' -vv '+ foldername + filename + '.wav &') sound_start = time.time() @@ -1612,10 +1640,14 @@ def main(): if yanked == '': camera.contrast = 0 else: + videos_totalt = db.query("SELECT COUNT(*) AS videos FROM videos")[0] + tot = int(videos_totalt.videos) + video_origins=filmfolder+'.videos/'+datetime.datetime.now().strftime('%Y%d%m')+'_'+os.urandom(8).hex()+'_'+str(tot).zfill(5) newtake = nexttakefilename(filmname, filmfolder, scene, shot) #why didnt i do this earlier cuz copy paste & that works too vumetermessage('applying effect...') - run_command('ffmpeg -i '+yanked+'.mp4 -vf "eq=contrast='+str(1.0+(int(camera.contrast)/100))+'" -c:v copy -c:a copy -y '+encoder()+newtake+'.mp4') + run_command('ffmpeg -i '+yanked+'.mp4 -vf "eq=contrast='+str(1.0+(int(camera.contrast)/100))+'" -c:v copy -c:a copy -y '+encoder()+video_origins+'.mp4') + os.system('ln -sfr '+filmfolder+'.videos/'+video_origins+'.mp4 '+newtake+'.mp4') vumetermessage('done!') yanked='' scenes, shots, takes = countlast(filmname, filmfolder) @@ -1646,8 +1678,36 @@ def main(): #UP elif pressed == 'up': if menu[selected] == 'FILM:': - filmname = loadfilm(filmname, filmfolder, camera, overlay) - loadfilmsettings = True + newfilmname = loadfilm(filmname, filmfolder, camera, overlay) + allfilm = getfilms(filmfolder) + filmname_exist=False + for i in allfilm: + if i[0] == newfilmname: + filmname_exist=True + if filmname != newfilmname and filmname_exist==False: + filmname = newfilmname + os.makedirs(filmfolder + filmname) + vumetermessage('Good luck with your film ' + filmname + '!') + #make a filmhash + print('making filmhash...') + filmhash = shortuuid.uuid() + with open(filmfolder + filmname + '/.filmhash', 'w') as f: + f.write(filmhash) + updatethumb = True + rendermenu = True + scene = 1 + shot = 1 + take = 1 + #selectedaction = 0 + newfilmname = '' + else: + filmname = newfilmname + newfilmname = '' + vumetermessage('film already exist!') + logger.info('film already exist!') + print(term.clear) + updatethumb = True + rendermenu = True elif menu[selected] == 'BRIGHT:': camera.brightness = min(camera.brightness + 1, 99) elif menu[selected] == 'CONT:': @@ -1848,8 +1908,37 @@ def main(): #DOWN elif pressed == 'down': if menu[selected] == 'FILM:': - filmname = loadfilm(filmname, filmfolder, camera, overlay) - loadfilmsettings = True + newfilmname = loadfilm(filmname, filmfolder, camera, overlay) + allfilm = getfilms(filmfolder) + filmname_exist=False + for i in allfilm: + if i[0] == newfilmname: + filmname_exist=True + if filmname != newfilmname and filmname_exist==False: + filmname = newfilmname + os.makedirs(filmfolder + filmname) + vumetermessage('Good luck with your film ' + filmname + '!') + #make a filmhash + print('making filmhash...') + filmhash = shortuuid.uuid() + with open(filmfolder + filmname + '/.filmhash', 'w') as f: + f.write(filmhash) + updatethumb = True + rendermenu = True + scene = 1 + shot = 1 + take = 1 + #selectedaction = 0 + newfilmname = '' + else: + filmname = newfilmname + newfilmname = '' + vumetermessage('film already exist!') + logger.info('film already exist!') + print(term.clear) + updatethumb = True + rendermenu = True + loadfilmsettings = True elif menu[selected] == 'BRIGHT:': camera.brightness = max(camera.brightness - 1, 0) elif menu[selected] == 'CONT:': @@ -2134,6 +2223,7 @@ def main(): except: print('not exist') #organize(filmfolder,'onthefloor') + add_organize(filmfolder, filmname) scenes, shots, takes = countlast(filmname, filmfolder) loadfilmsettings = False rendermenu = True @@ -3084,6 +3174,7 @@ def cleanupdisk(filmname, filmfolder): #-------------Load film--------------- def loadfilm(filmname, filmfolder, camera, overlay): + writemessage('Loading films...') oldmenu='' pressed = '' buttonpressed = '' @@ -3097,9 +3188,9 @@ def loadfilm(filmname, filmfolder, camera, overlay): selectedfilm = 0 selected = 0 header = 'Up and down to select and load film' - menu = 'FILM:', 'BACK' + menu = 'FILM:', 'BACK', 'NEW FILM' while True: - settings = films[selectedfilm][0], '' + settings = films[selectedfilm][0], '', '' oldmenu=writemenu(menu,settings,selected,header,showmenu,oldmenu) vumetermessage('filmsize: '+filmsize[selectedfilm]+' date: '+time.strftime('%Y-%m-%d %H:%M:%S',time.gmtime(films[selectedfilm][1]))) pressed, buttonpressed, buttontime, holdbutton, event, keydelay = getbutton(pressed, buttonpressed, buttontime, holdbutton) @@ -3131,6 +3222,11 @@ def loadfilm(filmname, filmfolder, camera, overlay): overlay = removeimage(camera, overlay) writemessage('Returning') return filmname + elif pressed == 'middle' and menu[selected] == 'NEW FILM': + overlay = removeimage(camera, overlay) + newfilm=nameyourfilm(filmfolder, filmname, abc, True) + writemessage('Returning') + return newfilm time.sleep(0.02) def slide_menu(slidecommander): @@ -3428,12 +3524,14 @@ def nameyourfilm(filmfolder, filmname, abc, newfilm): elif filmname in getfilms(filmfolder)[0]: helpmessage = 'this filmname is already taken! make a sequel!' filmname = filmname+'2' + elif '_archive' in filmname: + helpmessage = 'the filmname cant be named as an archive.' elif filmname not in getfilms(filmfolder)[0]: logger.info("New film " + filmname) - return(filmname) + return filmname except: logger.info("New film " + filmname) - return(filmname) + return filmname elif pressed == 'retake': return oldfilmname elif event in abc: @@ -3812,6 +3910,9 @@ def timelapse(beeps,camera,filmname,foldername,filename,between,duration,backlig camera.capture(foldername + filename + '.jpeg', resize=(800,450), use_video_port=True) except: logger.warning('something wrong with camera jpeg capture') + videos_totalt = db.query("SELECT COUNT(*) AS videos FROM videos")[0] + tot = int(videos_totalt.videos) + video_origins=filmfolder+'.videos/'+datetime.datetime.now().strftime('%Y%d%m')+'_'+os.urandom(8).hex()+'_'+str(tot).zfill(5) writemessage('Compiling timelapse') logger.info('Hold on, rendering ' + str(len(files)) + ' scenes') #RENDER VIDEO @@ -3840,7 +3941,7 @@ def timelapse(beeps,camera,filmname,foldername,filename,between,duration,backlig videomerge.append('copy') videomerge.append('-movflags') videomerge.append('+faststart') - videomerge.append(filename + '.mp4') + videomerge.append(video_origins + '.mp4') videomerge.append('-y') #videomerge.append(filename + '.h264') #videomerge.append(filename + '.h264') @@ -3856,6 +3957,7 @@ def timelapse(beeps,camera,filmname,foldername,filename,between,duration,backlig writemessage('video rendering ' + str(int(rendersize)) + ' of ' + str(int(videosize)) + ' kb done') run_command('rm '+scenedir+'.renderlist') print('Video rendered!') + os.system('ln -sfr '+video_origins+'.mp4 '+filename+'.mp4') ##RENDER AUDIO writemessage('Rendering sound') audiomerge = ['sox'] @@ -3893,11 +3995,11 @@ def remove(filmfolder, filmname, scene, shot, take, sceneshotortake): menu = '', '' settings = 'NO', 'YES' selected = 0 - otf_scene = countscenes(filmfolder, filmname+'_onthefloor') + otf_scene = countscenes(filmfolder, filmname+'_archive') otf_scene += 1 - otf_shot = countshots(filmname+'_onthefloor' , filmfolder, otf_scene) + otf_shot = countshots(filmname+'_archive' , filmfolder, otf_scene) otf_shot += 1 - otf_take = counttakes(filmname+'_onthefloor', filmfolder, otf_scene, otf_shot) + otf_take = counttakes(filmname+'_archive', filmfolder, otf_scene, otf_shot) otf_take += 1 oldmenu='' starttime=time.time() @@ -3914,7 +4016,7 @@ def remove(filmfolder, filmname, scene, shot, take, sceneshotortake): return elif pressed == 'middle': if selected == 1: - if '_onthefloor' in filmname: + if '_archive' in filmname: if sceneshotortake == 'take': os.system('rm ' + foldername + filename + '.h264') os.system('rm ' + foldername + filename + '.mp4') @@ -3947,33 +4049,33 @@ def remove(filmfolder, filmname, scene, shot, take, sceneshotortake): else: if sceneshotortake == 'take': writemessage('Throwing take on the floor' + str(take)) - #onthefloor = filmfolder + filmname + '_onthefloor/' + 'scene' + str(otf_scene).zfill(3) + '/shot' + str(otf_shot).zfill(3) + '/take' + str(otf_take).zfill(3) - onthefloor = filmfolder + filmname + '_onthefloor/' + 'scene' + str(otf_scene).zfill(3) + '/shot' + str(otf_shot).zfill(3) + '/' + #onthefloor = filmfolder + filmname + '_archive/' + 'scene' + str(otf_scene).zfill(3) + '/shot' + str(otf_shot).zfill(3) + '/take' + str(otf_take).zfill(3) + onthefloor = filmfolder + filmname + '_archive/' + 'scene' + str(otf_scene).zfill(3) + '/shot' + str(otf_shot).zfill(3) + '/' if os.path.isdir(onthefloor) == False: os.makedirs(onthefloor) os.system('mv ' + foldername + filename + '.h264 ' + onthefloor + '') os.system('mv ' + foldername + filename + '.mp4 ' + onthefloor + '') os.system('mv ' + foldername + filename + '.wav ' + onthefloor + '') os.system('mv ' + foldername + filename + '.jpeg ' + onthefloor + '') - os.system('cp -r '+filmfolder + filmname + "/settings.p "+filmfolder + filmname + '_onthefloor/settings.p') + os.system('cp -r '+filmfolder + filmname + "/settings.p "+filmfolder + filmname + '_archive/settings.p') take = take - 1 if take == 0: take = 1 elif sceneshotortake == 'shot' and shot > 0: writemessage('Throwing shot on the floor' + str(shot)) - onthefloor = filmfolder + filmname + '_onthefloor/' + 'scene' + str(otf_scene).zfill(3) + '/shot' + str(otf_shot).zfill(3)+'/' + onthefloor = filmfolder + filmname + '_archive/' + 'scene' + str(otf_scene).zfill(3) + '/shot' + str(otf_shot).zfill(3)+'/' os.makedirs(onthefloor,exist_ok=True) os.system('cp -r '+foldername+'* '+onthefloor) - os.system('cp -r '+filmfolder + filmname + "/settings.p "+filmfolder + filmname + '_onthefloor/settings.p') + os.system('cp -r '+filmfolder + filmname + "/settings.p "+filmfolder + filmname + '_archive/settings.p') os.system('rm -r '+foldername) take = counttakes(filmname, filmfolder, scene, shot) elif sceneshotortake == 'scene': - onthefloor = filmfolder + filmname + '_onthefloor/' + 'scene' + str(otf_scene).zfill(3) + onthefloor = filmfolder + filmname + '_archive/' + 'scene' + str(otf_scene).zfill(3) os.makedirs(onthefloor) writemessage('Throwing clips on the floor ' + str(scene)) foldername = filmfolder + filmname + '/' + 'scene' + str(scene).zfill(3) os.system('mv ' + foldername + '/* ' + onthefloor+'/' ) - os.system('cp -r '+filmfolder + filmname + "/settings.p "+filmfolder + filmname + '_onthefloor/settings.p') + os.system('cp -r '+filmfolder + filmname + "/settings.p "+filmfolder + filmname + '_archive/settings.p') scene = countscenes(filmfolder, filmname) shot = 1 take = 1 @@ -3993,7 +4095,7 @@ def remove(filmfolder, filmname, scene, shot, take, sceneshotortake): foldername = filmfolder + filmname os.system('rm -r ' + foldername) return - organize(filmfolder, filmname + '_onthefloor') + organize(filmfolder, filmname + '_archive') return elif selected == 0: return @@ -4177,6 +4279,9 @@ def add_organize(filmfolder, filmname): if 'yanked' in p: #print(p) os.system('mv -n ' + filmfolder + filmname + '/' + i + '/shot' + str(organized_nr - 1).zfill(3) + '_yanked ' + filmfolder + filmname + '/' + i + '/shot' + str(organized_nr).zfill(3)) + #if _insert in last shot + elif organized_nr==len(shots) and '_insert' in p: + os.system('mv -n ' + filmfolder + filmname + '/' + i + '/shot' + str(organized_nr).zfill(3) + '_insert ' + filmfolder + filmname + '/' + i + '/shot' + str(organized_nr).zfill(3)) elif '_insert' in p: os.system('mv -n ' + filmfolder + filmname + '/' + i + '/shot' + str(organized_nr - 1).zfill(3) + '_insert ' + filmfolder + filmname + '/' + i + '/shot' + str(organized_nr).zfill(3)) run_command('touch ' + filmfolder + filmname + '/' + i + '/shot' + str(organized_nr).zfill(3) + '/.placeholder') @@ -4197,6 +4302,8 @@ def add_organize(filmfolder, filmname): #print(i) if 'yanked' in i: os.system('mv -n ' + filmfolder + filmname + '/scene' + str(organized_nr - 1).zfill(3) + '_yanked ' + filmfolder + filmname + '/scene' + str(organized_nr).zfill(3)) + elif organized_nr==len(scenes) and '_insert' in i: + os.system('mv -n ' + filmfolder + filmname + '/scene' + str(organized_nr).zfill(3) + '_insert ' + filmfolder + filmname + '/scene' + str(organized_nr).zfill(3)) elif '_insert' in i: #print(p) os.system('mv -n ' + filmfolder + filmname + '/scene' + str(organized_nr - 1).zfill(3) + '_insert ' + filmfolder + filmname + '/scene' + str(organized_nr).zfill(3)) @@ -4246,6 +4353,7 @@ def organizedubs(foldername): def stretchaudio(filename,fps): fps_rounded=round(fps) + if int(fps_rounded) != 25: #pipe = subprocess.check_output('mediainfo --Inform="Video;%Duration%" ' + filename + '.mp4', shell=True) #videolength = pipe.decode().strip() @@ -4455,6 +4563,9 @@ def shotfiles(filmfolder, filmname, scene): #---------------Render Video------------------ def rendervideo(filmfolder, filmname, scene, filmfiles, filename, renderinfo): + videos_totalt = db.query("SELECT COUNT(*) AS videos FROM videos")[0] + tot = int(videos_totalt.videos) + #video_origins=filmfolder+'.videos/'+datetime.datetime.now().strftime('%Y%d%m')+'_'+os.urandom(8).hex()+'_'+str(tot).zfill(5) scenedir = filmfolder + filmname + '/scene' + str(scene).zfill(3) + '/' if scene == 0: scenedir = filmfolder + filmname + '/' @@ -4491,7 +4602,7 @@ def rendervideo(filmfolder, filmname, scene, filmfiles, filename, renderinfo): videomerge.append('copy') videomerge.append('-movflags') videomerge.append('+faststart') - videomerge.append(filename + '.mp4') + videomerge.append(filename+'.mp4') videomerge.append('-y') #videomerge.append(filename + '.h264') #videomerge.append(filename + '.h264') @@ -4501,11 +4612,12 @@ def rendervideo(filmfolder, filmname, scene, filmfiles, filename, renderinfo): while p.poll() is None: time.sleep(0.1) try: - rendersize = countsize(filename + '.mp4') + rendersize = countsize(filename+'.mp4') except: continue writemessage('video rendering ' + str(int(rendersize)) + ' of ' + str(int(videosize)) + ' kb done') print('Video rendered!') + #os.system('ln -sfr '+video_origins+'.mp4 '+filename+'.mp4') run_command('rm '+scenedir+'.renderlist') return @@ -4610,6 +4722,7 @@ def rendershot(filmfolder, filmname, renderfilename, scene, shot): video_origins = (os.path.realpath(renderfilename+'.mp4'))[:-4] def render(q, filmfolder, filmname, renderfilename, scene, shot): global fps, take, rendermenu, updatethumb, bitrate, muxing, db + video_origins = (os.path.realpath(renderfilename+'.mp4'))[:-4] videohash = '' oldvideohash = '' scenedir = filmfolder + filmname + '/scene' + str(scene).zfill(3) + '/shot' + str(shot).zfill(3) + '/' @@ -4626,9 +4739,9 @@ def rendershot(filmfolder, filmname, renderfilename, scene, shot): pass if faststart == False: vumetermessage('found new clip compiling...') - os.system('mv ' + renderfilename + '.mp4 ' + renderfilename + '_tmp.mp4') - call(['ffmpeg', '-i', renderfilename + '_tmp.mp4', '-r', '25', '-fflags', '+genpts+igndts', '-vsync', '1', '-c:v', 'copy', '-movflags', '+faststart', renderfilename+'.mp4', '-y'], shell=False) - run_command('rm '+renderfilename+'_tmp.mp4') + os.system('mv ' + video_origins + '.mp4 ' + video_origins + '_tmp.mp4') + call(['ffmpeg', '-i', video_origins + '_tmp.mp4', '-r', '25', '-fflags', '+genpts+igndts', '-vsync', '1', '-c:v', 'copy', '-movflags', '+faststart', video_origins+'.mp4', '-y'], shell=False) + run_command('rm '+video_origins+'_tmp.mp4') try: db.update('videos', where='filename="'+video_origins+'.mp4"', faststart=True) except: @@ -4685,7 +4798,7 @@ def rendershot(filmfolder, filmname, renderfilename, scene, shot): newshotdir = filmfolder + filmname + '/scene' + str(scene).zfill(3) + '/shot' + str(shot).zfill(3) + '/' newtakename = 'take' + str(counttakes2(newshotdir)).zfill(3) if i[0][0] < i[0][1]: - videotrim(scenedir,i[1],'both', i[0][0],i[0][1],'take') + videotrim(filmfolder,scenedir,i[1],'both', i[0][0],i[0][1],'take') #newtakename = 'take' + str(1).zfill(3) elif nr > 1: #then make new shots @@ -4696,8 +4809,10 @@ def rendershot(filmfolder, filmname, renderfilename, scene, shot): except: print('is there already prob') if i[0][0] < i[0][1]: - videotrim(scenedir,i[1],'both', i[0][0],i[0][1],newshotdir+newtakename) - add_organize(filmfolder, filmname) + videotrim(filmfolder,scenedir,i[1],'both', i[0][0],i[0][1],newshotdir+newtakename) + add_organize(filmfolder, filmname) + organize(filmfolder, filmname) + organize(filmfolder, filmname) scenes, shots, takes = browse(filmname,filmfolder,scene,shot,1) #vumetermessage('Shot ' + str(shot) + ' inserted') updatethumb = True @@ -4719,7 +4834,7 @@ def rendershot(filmfolder, filmname, renderfilename, scene, shot): settings = pickle.load(open(scenedir + ".end", "rb")) t, trimfile = settings logger.info("settings loaded") - videotrim(scenedir,trimfile,'both', s,t,'take') + videotrim(filmfolder,scenedir,trimfile,'both', s,t,'take') os.remove(scenedir+'.beginning') os.remove(scenedir+'.end') take=counttakes2(scenedir) @@ -4731,7 +4846,7 @@ def rendershot(filmfolder, filmname, renderfilename, scene, shot): settings = pickle.load(open(scenedir + ".beginning", "rb")) s, trimfile = settings logger.info("settings loaded") - videotrim(scenedir,trimfile,'beginning', s, 0,'take') + videotrim(filmfolder,scenedir,trimfile,'beginning', s, 0,'take') os.remove(scenedir+'.beginning') newaudiomix = True take=counttakes2(scenedir) @@ -4747,7 +4862,7 @@ def rendershot(filmfolder, filmname, renderfilename, scene, shot): p, trimfileoriginal = settings s=p-s logger.info("settings loaded") - videotrim(scenedir,trimfile,'end', s, 0,'take') + videotrim(filmfolder,scenedir,trimfile,'end', s, 0,'take') os.remove(scenedir+'.end') take=counttakes2(scenedir) updatethumb=True @@ -4756,12 +4871,17 @@ def rendershot(filmfolder, filmname, renderfilename, scene, shot): renderfilename = scenedir+'take' + str(counttakes2(scenedir)).zfill(3) ###---------BLEND---------- if os.path.isfile(scenedir+'blend/'+blendmodes[blendselect]+'.mp4') == True: + videos_totalt = db.query("SELECT COUNT(*) AS videos FROM videos")[0] + tot = int(videos_totalt.videos) + video_origins=filmfolder+'.videos/'+datetime.datetime.now().strftime('%Y%d%m')+'_'+os.urandom(8).hex()+'_'+str(tot).zfill(5) #compileshot(scenedir+'blend/'+blendmodes[blendselect]+'.h264',filmfolder,filmname) call(['MP4Box', '-rem', '2', scenedir+'blend/'+blendmodes[blendselect] + '.mp4'], shell=False) run_command('ffmpeg -y -i '+renderfilename+'.mp4 -i '+scenedir+'blend/'+blendmodes[blendselect]+'.mp4 '+encoder()+'-filter_complex "blend="'+blendmodes[blendselect]+' /dev/shm/blend.mp4') screen_filename = scenedir+'take' + str(counttakes2(scenedir)+1).zfill(3) run_command('cp ' + renderfilename + '.wav ' + screen_filename + '.wav') - run_command('cp /dev/shm/blend.mp4 '+screen_filename+'.mp4') + #make a new sublink + run_command('cp /dev/shm/blend.mp4 '+video_origins+'.mp4') + os.system('ln -sfr '+video_origins+'.mp4 '+screen_filename+'.mp4') run_command('rm /dev/shm/blend.mp4') run_command('rm '+scenedir+'blend/'+blendmodes[blendselect]+'.mp4') run_command('ffmpeg -y -sseof -1 -i ' + screen_filename + '.mp4 -update 1 -q:v 1 -vf scale=800:450 ' + screen_filename + '.jpeg') @@ -5949,7 +6069,7 @@ def split_list_save(foldername, splitlist): #---------------Video Trim-------------------- -def videotrim(foldername ,filename, where, s, t, make_new_take_or_shot): +def videotrim(filmfolder, foldername ,filename, where, s, t, make_new_take_or_shot): #theres two different ways of non-rerendering mp4 cut techniques that i know MP4Box and ffmpeg if make_new_take_or_shot == 'take': trim_filename = foldername+filename[:-3] + str(counttakes2(foldername)+1).zfill(3) @@ -5960,7 +6080,11 @@ def videotrim(foldername ,filename, where, s, t, make_new_take_or_shot): s=round(s, 3) t=round(t, 3) video_edit_len=round(float(t)-float(s),3) - run_command('ffmpeg -i '+filename+'.mp4 -ss '+str(s)+' -t '+str(video_edit_len)+' -c:v copy -c:a copy -y '+trim_filename+'.mp4') + videos_totalt = db.query("SELECT COUNT(*) AS videos FROM videos")[0] + tot = int(videos_totalt.videos) + video_origins=filmfolder+'.videos/'+datetime.datetime.now().strftime('%Y%d%m')+'_'+os.urandom(8).hex()+'_'+str(tot).zfill(5) + run_command('ffmpeg -i '+filename+'.mp4 -ss '+str(s)+' -t '+str(video_edit_len)+' -c:v copy -c:a copy -y '+video_origins+'.mp4') + os.system('ln -sfr '+video_origins+'.mp4 '+trim_filename+'.mp4') run_command('ffmpeg -i '+filename+'.wav -ss '+str(s)+' -t '+str(video_edit_len)+' -c:a copy -y '+trim_filename+'.wav') #run_command('ecasound -i:'+filename+'.wav -o:'+trim_filename+'.wav -ss:'+str(s)+' -t:'+str(video_edit_len)) #if os.path.exists(foldername+'dub') == True: diff --git a/srv/templates/tree.html b/srv/templates/tree.html @@ -1,71 +1,39 @@ $def with (films, film, scenes, str, filmfolder, counttakes, countshots, countscenes, shots, scene, takes, shot, take, checkvideo,randhash, if_exist) $ video = '' -$if take != None: - <h1>$film | scene $scene | shot $shot | take $take</h1> - $ video = '/'+filmfolder + film + '/scene' + str(scene).zfill(3) + '/shot' + str(shot).zfill(3) + '/take' + str(take).zfill(3) + '.mp4' -$elif shot != None: - <h1>$film | scene $scene | shot $shot</h1> - $ video = '/'+filmfolder + film + '/scene' + str(scene).zfill(3) + '/shot' + str(shot).zfill(3) + '/take' + str(takes).zfill(3) + '.mp4' - $ take = takes -$elif scene != None: - <h1>$film | scene $scene</h1> - $ video = '/'+filmfolder + film + '/scene' + str(scene).zfill(3) + '/scene.mp4' -$elif film != '': - <h1>$film</h1> - $ video = '/'+filmfolder + film + '/' + film + '.mp4' -$if video != '': - <br> - <h3><a href="javascript:history.back()">Go Back</a></h3> - <br> - $ picture = checkvideo(video,filmfolder,film,scene,shot,take) - $if picture[1] == 'video': - <video width="80%" controls> - <source src="$video?$randhash" style="width:80%; max-width:500px;" type="video/mp4"> - Your brower is caput - </video> - $elif picture[0] != '': - <img style="width:80%;" src="$picture[0]?$randhash"/> - $elif picture[1] == '': - <pre>video not rendered</pre> - <a href="">render now!</a> - <br> -$else: - <br> - <a href="/c/">camera control</a> +<br> +<a href="/c/">camera control</a> $ t=0 - +<br> $if film != '': $ i = film $ scenes=countscenes(filmfolder, i) $for s in range(scenes): - <div class='scene $str(s+1)' style="padding:10px; vertical-align:top;"> - <pre style="background-color:#680000;">scene $str(s+1)</pre> + <div class='scene $str(s+1)' style="padding:10px; vertical-align:top; display:inline-block;"> + <pre style="background-color:#680000; position:absolute; margin-top:0px; margin-left:5px;" >scene $str(s+1)</pre> $ t = counttakes(i, filmfolder, s+1, 1) $ thumbnail_url = '/'+filmfolder + i + '/scene' + str(s+1).zfill(3) + '/shot001/take' + str(t).zfill(3) + '.jpeg' - <a href="?scene=${str(s+1)}"><img style="vertical-align:middle; width:80%; max-width:100px;" src="$thumbnail_url?$randhash"/></a> - $ shots = countshots(i, filmfolder, s+1) + <a href="?scene=${str(s+1)}"><img style="vertical-align:middle; width:80%; max-width:100px; margin-top:22px;" src="$thumbnail_url?$randhash"/></a> + $ shots = countshots(i, filmfolder, s+1) $for s2 in range(shots): - <div class='shot $str(s2+1)' style="padding:10px;"> - <pre style="background-color:#fffe00; color:#000;">shot $str(s2+1)</pre> + <div class='shot $str(s2+1)' style="padding:0px;"> + <pre style="background-color:#fffe00; color:#000; position:absolute; margin-top:-1px; margin-left:5px">shot $str(s2+1)</pre> $ t2 = countshots(i, filmfolder, s+1) $ p2 = counttakes(i, filmfolder, s+1, s2+1) $ thumbnail_url = '/'+filmfolder + i + '/scene' + str(s+1).zfill(3) + '/shot' + str(s2+1).zfill(3) + '/take' + str(p2).zfill(3) + '.jpeg' $ check=if_exist(thumbnail_url) $if check == True: - <a href="?scene=${str(s+1)}&shot=${str(s2+1)}"><img style="vertical-align:middle; width:80%; max-width:80px;" src="$thumbnail_url?$randhash"/></a> + <a href="?scene=${str(s+1)}&shot=${str(s2+1)}"><img style="vertical-align:middle; width:80%; max-width:80px; margin-top:20px;" src="$thumbnail_url?$randhash"/></a> $else: $ thumbnail_url = '/static/empty.jpeg' - <a href="?scene=${str(s+1)}&shot=${str(s2+1)}"><img style="vertical-align:middle; width:80%; max-width:80px;" src="$thumbnail_url?$randhash"/></a> + <a href="?scene=${str(s+1)}&shot=${str(s2+1)}"><img style="vertical-align:middle; width:80%; max-width:80px; margin-top:20px;" src="$thumbnail_url?$randhash"/></a> $if p2 != None: $for t3 in range(p2): $ thumbnail_url = '/'+filmfolder + i + '/scene' + str(s+1).zfill(3) + '/shot' + str(s2+1).zfill(3) + '/take' + str(t3+1).zfill(3) + '.jpeg' - <div class='take $str(t3+1)' style="padding:10px;"> - <pre style="background-color:#0e2b00;">take $str(t3+1)</pre> - <a href="?scene=${str(s+1)}&shot=${str(s2+1)}&take=${str(t)}"><img style="vertical-align:middle; width:80%; max-width:50px;" src="$thumbnail_url?$randhash"/></a> - </br> + <div class='take $str(t3+1)' style="padding:0px;"> + <pre style="background-color:#0e2b00; position:absolute; margin-top:-1px; margin-left:5px">take $str(t3+1)</pre> + <a href="?scene=${str(s+1)}&shot=${str(s2+1)}&take=${str(t)}"><img style="vertical-align:middle; width:80%; max-width:70px; margin-top:20px; margin-left:0px" src="$thumbnail_url?$randhash"/></a> </div> - </br> </div> </br> </div>