Skip to content

Commit de3c895

Browse files
committed
Make temp directory on demand
1 parent bee2db7 commit de3c895

File tree

12 files changed

+65
-77
lines changed

12 files changed

+65
-77
lines changed

auto_editor/__main__.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
import auto_editor
77
from auto_editor.edit import edit_media
88
from auto_editor.ffwrapper import FFmpeg
9-
from auto_editor.utils.func import setup_tempdir
109
from auto_editor.utils.log import Log
1110
from auto_editor.utils.types import (
1211
Args,
@@ -315,9 +314,8 @@ def main() -> None:
315314
if not args.input:
316315
log.error("You need to give auto-editor an input file.")
317316

318-
temp = setup_tempdir(args.temp_dir, log)
319-
log = Log(args.debug, args.quiet, temp, args.progress == "machine", no_color)
320-
log.debug(f"Temp Directory: {temp}")
317+
is_machine = args.progress == "machine"
318+
log = Log(args.debug, args.quiet, args.temp_dir, is_machine, no_color)
321319

322320
ffmpeg = FFmpeg(
323321
args.ffmpeg_location,
@@ -328,7 +326,7 @@ def main() -> None:
328326
paths = valid_input(args.input, ffmpeg, args, log)
329327

330328
try:
331-
edit_media(paths, ffmpeg, args, temp, log)
329+
edit_media(paths, ffmpeg, args, log)
332330
except KeyboardInterrupt:
333331
log.error("Keyboard Interrupt")
334332
log.cleanup()

auto_editor/analyze.py

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from dataclasses import dataclass
66
from fractions import Fraction
77
from math import ceil
8+
from tempfile import gettempdir
89
from typing import TYPE_CHECKING
910

1011
import av
@@ -33,7 +34,6 @@ class FileSetup:
3334
strict: bool
3435
tb: Fraction
3536
bar: Bar
36-
temp: str
3737
log: Log
3838

3939

@@ -176,7 +176,6 @@ class Levels:
176176
tb: Fraction
177177
bar: Bar
178178
no_cache: bool
179-
temp: str
180179
log: Log
181180

182181
@property
@@ -214,9 +213,7 @@ def read_cache(self, tag: str, obj: dict[str, Any]) -> None | np.ndarray:
214213
if self.no_cache:
215214
return None
216215

217-
workfile = os.path.join(
218-
os.path.dirname(self.temp), f"ae-{__version__}", "cache.npz"
219-
)
216+
workfile = os.path.join(gettempdir(), f"ae-{__version__}", "cache.npz")
220217

221218
try:
222219
npzfile = np.load(workfile, allow_pickle=False)
@@ -235,7 +232,7 @@ def cache(self, arr: np.ndarray, tag: str, obj: dict[str, Any]) -> np.ndarray:
235232
if self.no_cache:
236233
return arr
237234

238-
workdur = os.path.join(os.path.dirname(self.temp), f"ae-{__version__}")
235+
workdur = os.path.join(gettempdir(), f"ae-{__version__}")
239236
if not os.path.exists(workdur):
240237
os.mkdir(workdur)
241238

auto_editor/edit.py

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -142,9 +142,7 @@ def parse_export(export: str, log: Log) -> dict[str, Any]:
142142
log.error(f"'{name}': Export must be [{', '.join([s for s in parsing.keys()])}]")
143143

144144

145-
def edit_media(
146-
paths: list[str], ffmpeg: FFmpeg, args: Args, temp: str, log: Log
147-
) -> None:
145+
def edit_media(paths: list[str], ffmpeg: FFmpeg, args: Args, log: Log) -> None:
148146
bar = Bar(args.progress)
149147
tl = None
150148

@@ -203,7 +201,7 @@ def edit_media(
203201
samplerate = args.sample_rate
204202

205203
if tl is None:
206-
tl = make_timeline(sources, args, samplerate, bar, temp, log)
204+
tl = make_timeline(sources, args, samplerate, bar, log)
207205

208206
if export["export"] == "timeline":
209207
from auto_editor.formats.json import make_json_timeline
@@ -214,7 +212,7 @@ def edit_media(
214212
if args.preview:
215213
from auto_editor.preview import preview
216214

217-
preview(tl, temp, log)
215+
preview(tl, log)
218216
return
219217

220218
if export["export"] == "json":
@@ -263,22 +261,22 @@ def make_media(tl: v3, output: str) -> None:
263261
sub_output = []
264262
apply_later = False
265263

266-
ensure = Ensure(ffmpeg, bar, samplerate, temp, log)
264+
ensure = Ensure(ffmpeg, bar, samplerate, log)
267265

268266
if ctr.default_sub != "none" and not args.sn:
269-
sub_output = make_new_subtitles(tl, ensure, temp)
267+
sub_output = make_new_subtitles(tl, ensure, log.temp)
270268

271269
if ctr.default_aud != "none":
272-
audio_output = make_new_audio(tl, ensure, args, ffmpeg, bar, temp, log)
270+
audio_output = make_new_audio(tl, ensure, args, ffmpeg, bar, log)
273271

274272
if ctr.default_vid != "none":
275273
if tl.v:
276-
out_path, apply_later = render_av(ffmpeg, tl, args, bar, ctr, temp, log)
274+
out_path, apply_later = render_av(ffmpeg, tl, args, bar, ctr, log)
277275
visual_output.append((True, out_path))
278276

279277
for v, vid in enumerate(src.videos, start=1):
280278
if ctr.allow_image and vid.codec in ("png", "mjpeg", "webp"):
281-
out_path = os.path.join(temp, f"{v}.{vid.codec}")
279+
out_path = os.path.join(log.temp, f"{v}.{vid.codec}")
282280
# fmt: off
283281
ffmpeg.run(["-i", f"{src.path}", "-map", "0:v", "-map", "-0:V",
284282
"-c", "copy", out_path])
@@ -297,7 +295,6 @@ def make_media(tl: v3, output: str) -> None:
297295
tl.tb,
298296
args,
299297
src,
300-
temp,
301298
log,
302299
)
303300

auto_editor/make_layers.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,6 @@ def make_timeline(
102102
args: Args,
103103
sr: int,
104104
bar: Bar,
105-
temp: str,
106105
log: Log,
107106
) -> v3:
108107
inp = None if not sources else sources[0]
@@ -126,15 +125,15 @@ def make_timeline(
126125
concat = np.concatenate
127126

128127
for i, src in enumerate(sources):
129-
filesetup = FileSetup(src, len(sources) < 2, tb, bar, temp, log)
128+
filesetup = FileSetup(src, len(sources) < 2, tb, bar, log)
130129

131130
try:
132131
parser = Parser(Lexer("`--edit`", args.edit_based_on))
133132
if log.is_debug:
134133
log.debug(f"edit: {parser}")
135134

136135
env["timebase"] = tb
137-
env["@levels"] = Levels(src, tb, bar, args.no_cache, temp, log)
136+
env["@levels"] = Levels(src, tb, bar, args.no_cache, log)
138137
env["@filesetup"] = filesetup
139138

140139
results = interpret(env, parser)

auto_editor/output.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ class Ensure:
1919
_ffmpeg: FFmpeg
2020
_bar: Bar
2121
_sr: int
22-
temp: str
2322
log: Log
2423
_audios: list[tuple[FileInfo, int]] = field(default_factory=list)
2524
_subtitles: list[tuple[FileInfo, int, str]] = field(default_factory=list)
@@ -33,7 +32,7 @@ def audio(self, src: FileInfo, stream: int) -> str:
3332
label = len(self._audios) - 1
3433
first_time = True
3534

36-
out_path = os.path.join(self.temp, f"{label:x}.wav")
35+
out_path = os.path.join(self.log.temp, f"{label:x}.wav")
3736

3837
if first_time:
3938
sample_rate = self._sr
@@ -83,7 +82,7 @@ def subtitle(self, src: FileInfo, stream: int, ext: str) -> str:
8382
self._subtitles.append((src, stream, ext))
8483
first_time = True
8584

86-
out_path = os.path.join(self.temp, f"{stream}s.{ext}")
85+
out_path = os.path.join(self.log.temp, f"{stream}s.{ext}")
8786

8887
if first_time:
8988
self.log.debug(f"Making external subtitle: {out_path}")
@@ -119,7 +118,6 @@ def mux_quality_media(
119118
tb: Fraction,
120119
args: Args,
121120
src: FileInfo,
122-
temp: str,
123121
log: Log,
124122
) -> None:
125123
v_tracks = len(visual_output)
@@ -142,7 +140,7 @@ def mux_quality_media(
142140
cmd.extend(["-i", path])
143141
else:
144142
# Merge all the audio a_tracks into one.
145-
new_a_file = os.path.join(temp, "new_audio.wav")
143+
new_a_file = os.path.join(log.temp, "new_audio.wav")
146144
if a_tracks > 1:
147145
new_cmd = []
148146
for path in audio_output:

auto_editor/preview.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ def all_cuts(tl: v3, in_len: int) -> list[int]:
4848
return cut_lens
4949

5050

51-
def preview(tl: v3, temp: str, log: Log) -> None:
51+
def preview(tl: v3, log: Log) -> None:
5252
log.conwrite("")
5353
tb = tl.tb
5454

@@ -65,7 +65,7 @@ def preview(tl: v3, temp: str, log: Log) -> None:
6565

6666
in_len = 0
6767
for src in all_sources:
68-
in_len += Levels(src, tb, Bar("none"), False, temp, log).media_length
68+
in_len += Levels(src, tb, Bar("none"), False, log).media_length
6969

7070
out_len = tl.out_len()
7171

auto_editor/render/audio.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ def apply_audio_normalization(
166166

167167

168168
def make_new_audio(
169-
tl: v3, ensure: Ensure, args: Args, ffmpeg: FFmpeg, bar: Bar, temp: str, log: Log
169+
tl: v3, ensure: Ensure, args: Args, ffmpeg: FFmpeg, bar: Bar, log: Log
170170
) -> list[str]:
171171
sr = tl.sr
172172
tb = tl.tb
@@ -176,6 +176,7 @@ def make_new_audio(
176176
norm = parse_norm(args.audio_normalize, log)
177177

178178
af_tick = 0
179+
temp = log.temp
179180

180181
if not tl.a or not tl.a[0]:
181182
log.error("Trying to render empty audio timeline")

auto_editor/render/video.py

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -105,13 +105,7 @@ def make_image_cache(tl: v3) -> dict[tuple[FileInfo, int], np.ndarray]:
105105

106106

107107
def render_av(
108-
ffmpeg: FFmpeg,
109-
tl: v3,
110-
args: Args,
111-
bar: Bar,
112-
ctr: Container,
113-
temp: str,
114-
log: Log,
108+
ffmpeg: FFmpeg, tl: v3, args: Args, bar: Bar, ctr: Container, log: Log
115109
) -> tuple[str, bool]:
116110
src = tl.src
117111
cns: dict[FileInfo, av.container.InputContainer] = {}
@@ -121,6 +115,7 @@ def render_av(
121115

122116
target_pix_fmt = "yuv420p" # Reasonable default
123117
img_cache = make_image_cache(tl)
118+
temp = log.temp
124119

125120
first_src: FileInfo | None = None
126121
for src in tl.sources:

auto_editor/subcommands/levels.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
pAttr,
2020
pAttrs,
2121
)
22-
from auto_editor.utils.func import setup_tempdir
2322
from auto_editor.utils.log import Log
2423
from auto_editor.utils.types import frame_rate
2524
from auto_editor.vanparse import ArgumentParser
@@ -85,8 +84,7 @@ def main(sys_args: list[str] = sys.argv[1:]) -> None:
8584
args = parser.parse_args(LevelArgs, sys_args)
8685

8786
bar = Bar("none")
88-
temp = setup_tempdir(None, Log())
89-
log = Log(quiet=True, temp=temp)
87+
log = Log(quiet=True)
9088

9189
sources = [initFileInfo(path, log) for path in args.input]
9290
if len(sources) < 1:
@@ -129,7 +127,7 @@ def main(sys_args: list[str] = sys.argv[1:]) -> None:
129127
except ParserError as e:
130128
log.error(e)
131129

132-
levels = Levels(src, tb, bar, False, temp, log)
130+
levels = Levels(src, tb, bar, False, log)
133131
try:
134132
if method == "audio":
135133
print_arr_gen(iter_audio(src, tb, **obj))

auto_editor/subcommands/repl.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
from auto_editor.lib.data_structs import print_str
1212
from auto_editor.lib.err import MyError
1313
from auto_editor.utils.bar import Bar
14-
from auto_editor.utils.func import setup_tempdir
1514
from auto_editor.utils.log import Log
1615
from auto_editor.utils.types import frame_rate
1716
from auto_editor.vanparse import ArgumentParser
@@ -59,16 +58,15 @@ def main(sys_args: list[str] = sys.argv[1:]) -> None:
5958
args = repl_options(ArgumentParser(None)).parse_args(REPL_Args, sys_args)
6059

6160
if args.input:
62-
temp = setup_tempdir(args.temp_dir, Log())
63-
log = Log(quiet=True, temp=temp)
61+
log = Log(quiet=True, temp_dir=args.temp_dir)
6462
strict = len(args.input) < 2
6563
sources = [initFileInfo(path, log) for path in args.input]
6664
src = sources[0]
6765
tb = src.get_fps() if args.timebase is None else args.timebase
6866
bar = Bar("modern")
6967
env["timebase"] = tb
70-
env["@levels"] = Levels(src, tb, bar, False, temp, log)
71-
env["@filesetup"] = FileSetup(src, strict, tb, bar, temp, log)
68+
env["@levels"] = Levels(src, tb, bar, False, log)
69+
env["@filesetup"] = FileSetup(src, strict, tb, bar, log)
7270

7371
print(f"Auto-Editor {auto_editor.__version__}")
7472
text = None

0 commit comments

Comments
 (0)