summaryrefslogtreecommitdiffstats
path: root/gallery_dl/postprocessor/ugoira.py
diff options
context:
space:
mode:
Diffstat (limited to 'gallery_dl/postprocessor/ugoira.py')
-rw-r--r--gallery_dl/postprocessor/ugoira.py53
1 files changed, 21 insertions, 32 deletions
diff --git a/gallery_dl/postprocessor/ugoira.py b/gallery_dl/postprocessor/ugoira.py
index 5340335..33ebb75 100644
--- a/gallery_dl/postprocessor/ugoira.py
+++ b/gallery_dl/postprocessor/ugoira.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
-# Copyright 2018-2023 Mike Fährmann
+# Copyright 2018-2025 Mike Fährmann
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
@@ -170,8 +170,8 @@ class UgoiraPP(PostProcessor):
for frame in self._files:
# update frame filename extension
- frame["file"] = name = "{}.{}".format(
- frame["file"].partition(".")[0], frame["ext"])
+ frame["file"] = name = \
+ f"{frame['file'].partition('.')[0]}.{frame['ext']}"
if tempdir:
# move frame into tempdir
@@ -236,9 +236,7 @@ class UgoiraPP(PostProcessor):
pathfmt.realpath = pathfmt.temppath
else:
if self.mtime:
- mtime = pathfmt.kwdict.get("_mtime")
- if mtime:
- util.set_mtime(pathfmt.realpath, mtime)
+ pathfmt.set_mtime()
return True
def convert_to_archive(self, pathfmt, tempdir):
@@ -298,8 +296,7 @@ class UgoiraPP(PostProcessor):
def _exec(self, args):
self.log.debug(args)
out = None if self.output else subprocess.DEVNULL
- retcode = util.Popen(args, stdout=out, stderr=out).wait()
- if retcode:
+ if retcode := util.Popen(args, stdout=out, stderr=out).wait():
output.stderr_write("\n")
self.log.error("Non-zero exit status when running %s (%s)",
args, retcode)
@@ -334,7 +331,7 @@ class UgoiraPP(PostProcessor):
last_copy = last.copy()
frames.append(last_copy)
name, _, ext = last_copy["file"].rpartition(".")
- last_copy["file"] = "{:>06}.{}".format(int(name)+1, ext)
+ last_copy["file"] = f"{int(name) + 1:>06}.{ext}"
shutil.copyfile(tempdir + last["file"],
tempdir + last_copy["file"])
@@ -349,10 +346,8 @@ class UgoiraPP(PostProcessor):
"-f", "image2",
"-ts_from_file", "2",
"-pattern_type", "sequence",
- "-i", "{}%06d.{}".format(
- tempdir.replace("%", "%%"),
- frame["file"].rpartition(".")[2]
- ),
+ "-i", (f"{tempdir.replace('%', '%%')}%06d."
+ f"{frame['file'].rpartition('.')[2]}"),
]
def _process_mkvmerge(self, pathfmt, tempdir):
@@ -363,10 +358,8 @@ class UgoiraPP(PostProcessor):
self.ffmpeg,
"-f", "image2",
"-pattern_type", "sequence",
- "-i", "{}/%06d.{}".format(
- tempdir.replace("%", "%%"),
- self._frames[0]["file"].rpartition(".")[2]
- ),
+ "-i", (f"{tempdir.replace('%', '%%')}/%06d."
+ f"{self._frames[0]['file'].rpartition('.')[2]}"),
]
def _finalize_mkvmerge(self, pathfmt, tempdir):
@@ -384,14 +377,13 @@ class UgoiraPP(PostProcessor):
def _write_ffmpeg_concat(self, tempdir):
content = ["ffconcat version 1.0"]
- append = content.append
for frame in self._frames:
- append("file '{}'\nduration {}".format(
- frame["file"], frame["delay"] / 1000))
+ content.append(f"file '{frame['file']}'\n"
+ f"duration {frame['delay'] / 1000}")
if self.repeat:
- append("file '{}'".format(frame["file"]))
- append("")
+ content.append(f"file '{frame['file']}'")
+ content.append("")
ffconcat = tempdir + "/ffconcat.txt"
with open(ffconcat, "w") as fp:
@@ -400,14 +392,13 @@ class UgoiraPP(PostProcessor):
def _write_mkvmerge_timecodes(self, tempdir):
content = ["# timecode format v2"]
- append = content.append
delay_sum = 0
for frame in self._frames:
- append(str(delay_sum))
+ content.append(str(delay_sum))
delay_sum += frame["delay"]
- append(str(delay_sum))
- append("")
+ content.append(str(delay_sum))
+ content.append("")
timecodes = tempdir + "/timecodes.tc"
with open(timecodes, "w") as fp:
@@ -416,24 +407,22 @@ class UgoiraPP(PostProcessor):
def calculate_framerate(self, frames):
if self._delay_is_uniform(frames):
- return ("1000/{}".format(frames[0]["delay"]), None)
+ return (f"1000/{frames[0]['delay']}", None)
if not self.uniform:
gcd = self._delay_gcd(frames)
if gcd >= 10:
- return (None, "1000/{}".format(gcd))
+ return (None, f"1000/{gcd}")
return (None, None)
- @staticmethod
- def _delay_gcd(frames):
+ def _delay_gcd(self, frames):
result = frames[0]["delay"]
for f in frames:
result = gcd(result, f["delay"])
return result
- @staticmethod
- def _delay_is_uniform(frames):
+ def _delay_is_uniform(self, frames):
delay = frames[0]["delay"]
for f in frames:
if f["delay"] != delay: