Add ConversionService for AVI to MKV remux with metadata preservation

- Implemented a new service to convert AVI files to MKV format while preserving metadata.
- Added methods for validating AVI files, detecting subtitle files, and mapping audio languages.
- Built ffmpeg command for fast remuxing without re-encoding.
- Included error handling and logging for conversion processes.
This commit is contained in:
sha
2026-01-03 14:29:30 +00:00
parent 917d25b360
commit 6fee7d9f63
8 changed files with 632 additions and 26 deletions
+20 -19
View File
@@ -17,8 +17,8 @@ class MediaPanelView:
"""Return formatted file info panel string"""
return "\n".join(
[
self.fileinfo_section(),
self.selected_section(),
self.fileinfo_section(),
self.tmdb_section(),
self.tracksinfo_section(),
self.filename_section(),
@@ -27,6 +27,25 @@ class MediaPanelView:
]
)
@conditional_decorators.wrap("", "\n")
def selected_section(self) -> str:
"""Return formatted selected data"""
return "\n".join(
[
self._props.title("Media Info Summary"),
self._props.media_title,
self._props.media_year,
self._props.media_duration,
self._props.media_file_size,
self._props.selected_frame_class,
self._props.selected_source,
self._props.selected_special_info,
self._props.selected_audio_langs,
self._props.selected_database_info,
self._props.selected_order,
]
)
@conditional_decorators.wrap("", "\n")
def fileinfo_section(self) -> str:
"""Return formatted file info"""
@@ -41,24 +60,6 @@ class MediaPanelView:
]
)
@conditional_decorators.wrap("", "\n")
def selected_section(self) -> str:
"""Return formatted selected data"""
return "\n".join(
[
self._props.title("Selected Data"),
self._props.selected_order,
self._props.selected_title,
self._props.selected_year,
self._props.selected_special_info,
self._props.selected_source,
self._props.selected_frame_class,
self._props.selected_hdr,
self._props.selected_audio_langs,
self._props.selected_database_info,
]
)
@conditional_decorators.wrap("", "\n")
def tmdb_section(self) -> str:
"""Return formatted TMDB data"""