diff --git a/README.md b/README.md index 1c2a8c6..05b3849 100644 --- a/README.md +++ b/README.md @@ -99,6 +99,13 @@ TMDB-backed metadata enrichment requires `TMDB_API_KEY` to be set in the environ ## Version History +### 0.4.1 + +- `convert` now supports `--copy-video` and `--copy-audio` to keep the selected stream type in copy mode without applying the corresponding reencode flags, filters, or formatting options +- ffmpeg conversions now monitor diagnostics while the process is running, retry unset AVI packet timestamps once with `-fflags +genpts`, and stop early when a file should be skipped instead of waiting for the full job to finish +- end-of-run convert summaries now list only ffmpeg findings that still require review, including named remedy identifiers such as `warn-corrupt-mpeg-audio` +- `upgrade` now finishes by reporting the installed FFX version together with the active bundle branch + ### 0.3.1 - debug mode screen titles now append the active Textual screen class name, making screen-specific troubleshooting easier during inspect and edit flows diff --git a/pyproject.toml b/pyproject.toml index 59d1b34..6b96781 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [project] name = "ffx" description = "FFX recoding and metadata managing tool" -version = "0.3.1" +version = "0.4.1" license = {file = "LICENSE.md"} dependencies = [ "requests", diff --git a/src/ffx/constants.py b/src/ffx/constants.py index 3ce659c..4a272ce 100644 --- a/src/ffx/constants.py +++ b/src/ffx/constants.py @@ -1,4 +1,4 @@ -VERSION='0.3.1' +VERSION='0.4.1' DATABASE_VERSION = 3 DEFAULT_QUALITY = 32 diff --git a/tests/unit/test_track_descriptor_probe.py b/tests/unit/test_track_descriptor_probe.py index 25abfad..6b59334 100644 --- a/tests/unit/test_track_descriptor_probe.py +++ b/tests/unit/test_track_descriptor_probe.py @@ -1,6 +1,5 @@ from __future__ import annotations -import json from pathlib import Path import sys import unittest @@ -13,15 +12,11 @@ if str(SRC_ROOT) not in sys.path: from ffx.attachment_format import AttachmentFormat # noqa: E402 -from ffx.media_descriptor import MediaDescriptor # noqa: E402 from ffx.track_codec import TrackCodec # noqa: E402 from ffx.track_descriptor import TrackDescriptor # noqa: E402 from ffx.track_type import TrackType # noqa: E402 -ASSETS_ROOT = Path(__file__).resolve().parents[1] / "assets" - - class TrackDescriptorProbeTests(unittest.TestCase): def test_attachment_without_codec_name_uses_font_metadata_to_identify_ttf(self): descriptor = TrackDescriptor.fromFfprobe( @@ -62,26 +57,5 @@ class TrackDescriptorProbeTests(unittest.TestCase): self.assertEqual(AttachmentFormat.UNKNOWN, descriptor.getAttachmentFormat()) self.assertEqual(TrackCodec.UNKNOWN, descriptor.getCodec()) - def test_media_descriptor_from_boruto_probe_json_handles_attachment_streams_without_codec_name(self): - probe_payload = json.loads( - (ASSETS_ROOT / "ffprobe.out.json").read_text(encoding="utf-8") - ) - - descriptor = MediaDescriptor.fromFfprobe( - {"logger": None}, - probe_payload["format"], - probe_payload["streams"], - ) - - track_descriptors = descriptor.getTrackDescriptors() - attachment_tracks = descriptor.getAttachmentTracks() - - self.assertEqual(14, len(track_descriptors)) - self.assertEqual(10, len(attachment_tracks)) - self.assertTrue( - all(track.getAttachmentFormat() == AttachmentFormat.TTF for track in attachment_tracks) - ) - - if __name__ == "__main__": unittest.main()