Compare commits

...

7 Commits

Author SHA1 Message Date
e30a072220 feat: v1.3.4 2024-09-30 20:15:54 -04:00
ed4ebd31f8 fix: generating double the frames when frames are specified 2024-09-30 20:15:41 -04:00
8602978a0a refactor: update hook to support latest versions of VapourSynth 2024-08-28 14:17:51 -04:00
4c4a12d1dc refactor: update readme 2024-08-25 14:24:58 -04:00
a32b7586d8 feat: update build script to use poetry's venv 2024-08-25 14:11:31 -04:00
d27d3d0653 feat: v1.3.3
fix: an edge case bug that could potentially cause data loss when generating the final folder
fix: a bug where the encode would attempt to use the source index file, generating a new one in it's place incorrectly (this was present in ffms2)
2024-08-25 14:00:27 -04:00
69f76e6164 refactor: update required python version 2024-08-12 12:12:02 -04:00
7 changed files with 48 additions and 23 deletions

@ -1,6 +1,6 @@
# Image-Generator
A CLI to generate comparison image sets with
A CLI to generate comparison image sets utilizing the power of VapourSynth
## Usage

@ -1,5 +1,5 @@
from pathlib import Path
from subprocess import run
from subprocess import run, PIPE
import os
import shutil
import sys
@ -31,11 +31,23 @@ def build_app():
icon_path = project_root / "images" / "icon.ico"
additional_hooks_path = Path(Path.cwd() / "hooks")
# paths to needed vapoursynth files
vapoursynth_64 = project_root / ".venv" / "Lib" / "site-packages" / "vapoursynth64"
vapoursynth_64_portable = (
project_root / ".venv" / "Lib" / "site-packages" / "portable.vs"
# get poetry venv path
poetry_venv_path = run(
["cmd", "/c", "poetry", "env", "info", "--path"],
stdout=PIPE,
stderr=PIPE,
text=True,
check=True,
)
if poetry_venv_path.returncode == 0 and poetry_venv_path.stdout:
poetry_venv_path = Path(poetry_venv_path.stdout.strip())
site_packages = poetry_venv_path / "Lib" / "site-packages"
# get paths to needed vapoursynth files in poetry venv
vapoursynth_64 = site_packages / "vapoursynth64"
vapoursynth_64_portable = site_packages / "portable.vs"
else:
raise FileNotFoundError("Cannot find path to poetry venv")
# Change directory so PyInstaller outputs all of its files in its own folder
os.chdir(pyinstaller_folder)

@ -7,7 +7,7 @@ from frame_forge.cli_utils import frame_list
program_name = "FrameForge"
__version__ = "1.3.2"
__version__ = "1.3.4"
if __name__ == "__main__":

@ -209,7 +209,9 @@ class GenerateImages:
# generate source images
ScreenGen(
vs_source_info,
frame_numbers=self.frames,
frame_numbers=[
self.frames[i] for i in range(len(self.frames)) if i % 2 == 0
],
fpng_compression=1,
folder=screenshot_comparison_dir,
suffix="a_source__%d",
@ -220,7 +222,9 @@ class GenerateImages:
# generate encode images
ScreenGen(
vs_encode_info,
frame_numbers=self.frames,
frame_numbers=[
self.frames[i] for i in range(len(self.frames)) if i % 2 != 0
],
fpng_compression=1,
folder=screenshot_comparison_dir,
suffix="b_encode__%d",
@ -398,7 +402,10 @@ class GenerateImages:
)
if image_output_dir.exists():
shutil.rmtree(image_output_dir, ignore_errors=True)
for folder in ("img_comparison", "img_selected", "img_sync"):
rm_path = image_output_dir / folder
if rm_path.is_dir() and rm_path.exists():
shutil.rmtree(rm_path, ignore_errors=True)
image_output_dir.mkdir(exist_ok=True, parents=True)
@ -688,7 +695,7 @@ class GenerateImages:
self.source_index_path = Path(self.source_index_path)
if not self.encode_index_path or not Path(self.encode_index_path).exists():
encode_path_obj = Path(self.source_file)
encode_path_obj = Path(self.encode_file)
self.encode_index_path = encode_path_obj.parent / Path(
f"{encode_path_obj.stem}{indexer_ext}"
)

@ -22,6 +22,7 @@ hiddenimports = [
"collections.namedtuple",
"collections.abc.Iterable",
"collections.abc.Mapping",
"concurrent.futures",
"concurrent.futures.Future",
"fractions",
]

24
poetry.lock generated

@ -1,4 +1,4 @@
# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand.
# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand.
[[package]]
name = "altgraph"
@ -220,10 +220,10 @@ test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-co
[[package]]
name = "pyinstaller"
version = "6.3.0"
version = "6.10.0"
description = "PyInstaller bundles a Python application and all its dependencies into a single package."
optional = false
python-versions = "<3.13,>=3.8"
python-versions = "<3.14,>=3.8"
files = []
develop = true
@ -232,7 +232,7 @@ altgraph = "*"
macholib = {version = ">=1.8", markers = "sys_platform == \"darwin\""}
packaging = ">=22.0"
pefile = {version = ">=2022.5.30", markers = "sys_platform == \"win32\""}
pyinstaller-hooks-contrib = ">=2021.4"
pyinstaller-hooks-contrib = ">=2024.8"
pywin32-ctypes = {version = ">=0.2.1", markers = "sys_platform == \"win32\""}
setuptools = ">=42.0.0"
@ -246,15 +246,19 @@ url = "custom-pyinstaller"
[[package]]
name = "pyinstaller-hooks-contrib"
version = "2023.11"
version = "2024.8"
description = "Community maintained hooks for PyInstaller"
optional = false
python-versions = ">=3.7"
python-versions = ">=3.8"
files = [
{file = "pyinstaller-hooks-contrib-2023.11.tar.gz", hash = "sha256:5dd7a8a054a65c19cdaa381cabcfbe76f44d5f88d18214b0c570a0cd139be77f"},
{file = "pyinstaller_hooks_contrib-2023.11-py2.py3-none-any.whl", hash = "sha256:f2a75dac2968ec81f92dcd3768906f654fa4204bc496126ae8483e87a5d89602"},
{file = "pyinstaller_hooks_contrib-2024.8-py3-none-any.whl", hash = "sha256:0057fe9a5c398d3f580e73e58793a1d4a8315ca91c3df01efea1c14ed557825a"},
{file = "pyinstaller_hooks_contrib-2024.8.tar.gz", hash = "sha256:29b68d878ab739e967055b56a93eb9b58e529d5b054fbab7a2f2bacf80cef3e2"},
]
[package.dependencies]
packaging = ">=22.0"
setuptools = ">=42.0.0"
[[package]]
name = "pywin32-ctypes"
version = "0.2.2"
@ -338,5 +342,5 @@ vapoursynth = "*"
[metadata]
lock-version = "2.0"
python-versions = "3.11.5"
content-hash = "d8f86839d70dbe0a58d107ebf4bb36e7296975e8da5f6bfd366566cbe15b89e6"
python-versions = "3.11.9"
content-hash = "42cace5dbe92132d04512c3dbc5a60c1cb06fa883a7030eb74f8f0e782b48226"

@ -1,13 +1,14 @@
[tool.poetry]
name = "frame-forge"
version = "1.0.3"
version = "1.3.4"
description = "CLI to offload image generation to"
authors = ["jlw4049 <jlw_4049@hotmail.com>"]
license = "MIT"
readme = "README.md"
package-mode = false
[tool.poetry.dependencies]
python = "3.11.5"
python = "3.11.9"
numpy = "^1.26.2"
vapoursynth-portable = "65"
awsmfunc = {git = "https://github.com/OpusGang/awsmfunc"}