#!/usr/bin/env python

# Script to generate SXT animations
# Import libraries

import numpy as np
from os import system, mkdir, symlink, listdir
from shutil import rmtree
import glob

speed = 'slow'

ln_dir = '/home/jeckberg/sxt_links/'
jpg_dir = '/home/jeckberg/sxt_jpg_{0}'.format(speed)
mov_dir = '/home/jeckberg/sxt_mov/'
title_dir = '/home/jeckberg/sxt_title/'
mp3_dir = '/home/jeckberg/Bach/'

#clean up old link dir

frame_rate = np.int(30) # FPS
intro_time = np.int(10) # Seconds for intro page
intro_frames = frame_rate * intro_time

offset = np.str(intro_time)

# create temporary link dir

rmtree(ln_dir, ignore_errors=True)

mkdir(ln_dir)

# Setup your directory location for data storage
#frame_dir = '{0}mission'.format(jpg_dir)

#title page file
title = '{0}title_mission_{1}.jpg'.format(title_dir, speed)

system('ln -sf {1}/*.jpg {0}'.format(ln_dir, jpg_dir))

# Grab a list of files
files = glob.glob('{}*.jpg'.format(ln_dir))

files.sort()

# Loop through title frames
for i in np.arange(intro_frames):

    fname = '{0}frame{1}.jpg'.format(ln_dir, np.str(i).zfill(6))

    symlink(title, fname)

    # Loop through each frame

for n, frame in enumerate(files[::1], start = intro_frames):

    fname = '{0}frame{1}.jpg'.format(ln_dir, np.str(n).zfill(6))

    symlink(frame, fname)

    # Create an animation from this series

music = '{0}sxt_mission_{1}.mp3'.format(mp3_dir, speed)

infiles = '{}frame%06d.jpg'.format(ln_dir)

outfile =  '{0}sxt_mission_{1}.mov'.format(mov_dir, speed)

system('rm -f {0}'.format(outfile))

print('outfile - {}'.format(outfile))

system('ffmpeg -r {2} -i {0} -c:v libx264 -crf 0 -pix_fmt yuv420p -threads 0 {1}'.format(infiles, outfile, frame_rate))
system('ffmpeg -i {0} -itsoffset {1} -i {2} -codec copy -shortest sxt_mov/sxt_mission_{3}_a.mov'.format(outfile, offset, music, speed))
