prep 0.4.1
This commit is contained in:
@@ -99,6 +99,13 @@ TMDB-backed metadata enrichment requires `TMDB_API_KEY` to be set in the environ
|
|||||||
|
|
||||||
## Version History
|
## 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
|
### 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
|
- debug mode screen titles now append the active Textual screen class name, making screen-specific troubleshooting easier during inspect and edit flows
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
[project]
|
[project]
|
||||||
name = "ffx"
|
name = "ffx"
|
||||||
description = "FFX recoding and metadata managing tool"
|
description = "FFX recoding and metadata managing tool"
|
||||||
version = "0.3.1"
|
version = "0.4.1"
|
||||||
license = {file = "LICENSE.md"}
|
license = {file = "LICENSE.md"}
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"requests",
|
"requests",
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
VERSION='0.3.1'
|
VERSION='0.4.1'
|
||||||
DATABASE_VERSION = 3
|
DATABASE_VERSION = 3
|
||||||
|
|
||||||
DEFAULT_QUALITY = 32
|
DEFAULT_QUALITY = 32
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import json
|
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
import sys
|
import sys
|
||||||
import unittest
|
import unittest
|
||||||
@@ -13,15 +12,11 @@ if str(SRC_ROOT) not in sys.path:
|
|||||||
|
|
||||||
|
|
||||||
from ffx.attachment_format import AttachmentFormat # noqa: E402
|
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_codec import TrackCodec # noqa: E402
|
||||||
from ffx.track_descriptor import TrackDescriptor # noqa: E402
|
from ffx.track_descriptor import TrackDescriptor # noqa: E402
|
||||||
from ffx.track_type import TrackType # noqa: E402
|
from ffx.track_type import TrackType # noqa: E402
|
||||||
|
|
||||||
|
|
||||||
ASSETS_ROOT = Path(__file__).resolve().parents[1] / "assets"
|
|
||||||
|
|
||||||
|
|
||||||
class TrackDescriptorProbeTests(unittest.TestCase):
|
class TrackDescriptorProbeTests(unittest.TestCase):
|
||||||
def test_attachment_without_codec_name_uses_font_metadata_to_identify_ttf(self):
|
def test_attachment_without_codec_name_uses_font_metadata_to_identify_ttf(self):
|
||||||
descriptor = TrackDescriptor.fromFfprobe(
|
descriptor = TrackDescriptor.fromFfprobe(
|
||||||
@@ -62,26 +57,5 @@ class TrackDescriptorProbeTests(unittest.TestCase):
|
|||||||
self.assertEqual(AttachmentFormat.UNKNOWN, descriptor.getAttachmentFormat())
|
self.assertEqual(AttachmentFormat.UNKNOWN, descriptor.getAttachmentFormat())
|
||||||
self.assertEqual(TrackCodec.UNKNOWN, descriptor.getCodec())
|
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__":
|
if __name__ == "__main__":
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|||||||
Reference in New Issue
Block a user