Do not send deleted files
This commit is contained in:
parent
f74f059f13
commit
125df3af66
2 changed files with 23 additions and 9 deletions
|
@ -10,8 +10,13 @@ class Config:
|
||||||
SECRET_KEY = os.environ.get('SECRET_KEY') or \
|
SECRET_KEY = os.environ.get('SECRET_KEY') or \
|
||||||
''.join(random_choices(string.ascii_letters, k=20))
|
''.join(random_choices(string.ascii_letters, k=20))
|
||||||
DATA_DIR = os.environ.get('DATA_DIR') or '/var/tmp/prolefeeder-test-data'
|
DATA_DIR = os.environ.get('DATA_DIR') or '/var/tmp/prolefeeder-test-data'
|
||||||
TMP_DIR = os.environ.get('TMP_DIR') or '/var/tmp'
|
OUT_DIR = os.environ.get('OUT_DIR') or '/var/tmp/prolefeeder-test-out'
|
||||||
MAX_LENGTH = os.environ.get('MAX_LENGTH') or 180
|
MAX_LENGTH = os.environ.get('MAX_LENGTH') or 180
|
||||||
KBITS = os.environ.get('KBITS') or 128
|
KBITS = os.environ.get('KBITS') or 128
|
||||||
|
|
||||||
DEBUG = False
|
DEBUG = False
|
||||||
|
|
||||||
|
if not os.path.exists(DATA_DIR):
|
||||||
|
raise "DATA_DIR does not exist"
|
||||||
|
if not os.path.exists(OUT_DIR):
|
||||||
|
raise "OUT_DIR does not exist"
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
from flask import (Flask, render_template, flash, redirect,
|
from flask import (Flask, render_template, flash, redirect,
|
||||||
url_for, request, send_file, abort)
|
url_for, request, send_from_directory, abort)
|
||||||
from flask_bootstrap import Bootstrap
|
from flask_bootstrap import Bootstrap
|
||||||
from flask_wtf import FlaskForm
|
from flask_wtf import FlaskForm
|
||||||
from wtforms import DateTimeField, IntegerField, SubmitField
|
from wtforms import DateTimeField, IntegerField, SubmitField
|
||||||
|
@ -11,6 +11,7 @@ import os
|
||||||
import random
|
import random
|
||||||
import re
|
import re
|
||||||
import subprocess
|
import subprocess
|
||||||
|
import time
|
||||||
|
|
||||||
from config import Config
|
from config import Config
|
||||||
|
|
||||||
|
@ -56,6 +57,16 @@ def download():
|
||||||
return render_template('download.html', form=form)
|
return render_template('download.html', form=form)
|
||||||
|
|
||||||
|
|
||||||
|
def clean_out_dir():
|
||||||
|
"""Clean up OUT_DIR"""
|
||||||
|
for fn in os.listdir(app.config['OUT_DIR']):
|
||||||
|
if not fn.startswith('prolefeeder'):
|
||||||
|
continue
|
||||||
|
creation_time = os.path.getctime(os.path.join(app.config['OUT_DIR'], fn))
|
||||||
|
if time.time() - creation_time >= 60:
|
||||||
|
os.unlink(os.path.join(app.config['OUT_DIR'], fn))
|
||||||
|
|
||||||
|
|
||||||
@app.route('/download_file/<filename>')
|
@app.route('/download_file/<filename>')
|
||||||
def download_file(filename):
|
def download_file(filename):
|
||||||
"""Download an output file"""
|
"""Download an output file"""
|
||||||
|
@ -64,12 +75,10 @@ def download_file(filename):
|
||||||
abort(404)
|
abort(404)
|
||||||
attachment_filename = attachment_filenames.pop(filename)
|
attachment_filename = attachment_filenames.pop(filename)
|
||||||
|
|
||||||
fh = open(os.path.join(app.config['TMP_DIR'], filename), 'rb')
|
clean_out_dir()
|
||||||
os.remove(os.path.join(app.config['TMP_DIR'], filename))
|
|
||||||
|
|
||||||
# XXX How to close fh?
|
return send_from_directory(app.config['OUT_DIR'], filename,
|
||||||
return send_file(fh, as_attachment=True,
|
as_attachment=True, attachment_filename=attachment_filename)
|
||||||
attachment_filename=attachment_filename)
|
|
||||||
|
|
||||||
|
|
||||||
def prepare_download(form):
|
def prepare_download(form):
|
||||||
|
@ -110,7 +119,7 @@ def prepare_download(form):
|
||||||
ss = (form.start_time.data - sources[0]['start_time']).total_seconds()
|
ss = (form.start_time.data - sources[0]['start_time']).total_seconds()
|
||||||
|
|
||||||
# Let ffmpeg do the rest of the job
|
# Let ffmpeg do the rest of the job
|
||||||
_, output_filename = mkstemp(suffix='.mp3', dir=app.config['TMP_DIR'])
|
_, output_filename = mkstemp(prefix='prolefeeder', suffix='.mp3', dir=app.config['OUT_DIR'])
|
||||||
output_filename = os.path.basename(output_filename)
|
output_filename = os.path.basename(output_filename)
|
||||||
attachment_filename = '{}_{}.mp3'.format(form.start_time.data, form.length.data)
|
attachment_filename = '{}_{}.mp3'.format(form.start_time.data, form.length.data)
|
||||||
|
|
||||||
|
@ -121,7 +130,7 @@ def prepare_download(form):
|
||||||
[os.path.join(app.config['DATA_DIR'], s['fn']) for s in sources]),
|
[os.path.join(app.config['DATA_DIR'], s['fn']) for s in sources]),
|
||||||
'-codec', 'copy',
|
'-codec', 'copy',
|
||||||
'-t', str(form.length.data * 60),
|
'-t', str(form.length.data * 60),
|
||||||
os.path.join(app.config['TMP_DIR'], output_filename)
|
os.path.join(app.config['OUT_DIR'], output_filename)
|
||||||
]
|
]
|
||||||
app.logger.debug(' '.join(c))
|
app.logger.debug(' '.join(c))
|
||||||
subprocess.call(c)
|
subprocess.call(c)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue