From 993b5fc25873b73e2fb75848fc789ec5fb4f4e0e Mon Sep 17 00:00:00 2001 From: abdeladim-s Date: Fri, 20 Dec 2024 17:13:30 -0500 Subject: [PATCH 1/2] feat(converter): add video converter. --- src/markitdown/_markitdown.py | 145 +++++++++++++++++++++++++++++++++- 1 file changed, 144 insertions(+), 1 deletion(-) diff --git a/src/markitdown/_markitdown.py b/src/markitdown/_markitdown.py index 040a586..8000afc 100644 --- a/src/markitdown/_markitdown.py +++ b/src/markitdown/_markitdown.py @@ -495,7 +495,9 @@ def convert( "youtube_transcript_languages", ("en",) ) # Must be a single transcript. - transcript = YouTubeTranscriptApi.get_transcript(video_id, languages=youtube_transcript_languages) # type: ignore + transcript = YouTubeTranscriptApi.get_transcript( + video_id, languages=youtube_transcript_languages + ) # type: ignore transcript_text = " ".join([part["text"] for part in transcript]) # type: ignore # Alternative formatting: # formatter = TextFormatter() @@ -1075,6 +1077,146 @@ def _get_llm_description(self, local_path, extension, client, model, prompt=None return response.choices[0].message.content +class VideoConverter(WavConverter): + """ + Converts videos to markdown via: + * extraction of metadata (if `exiftool` is installed) + * speech transcription (if `speech_recognition` AND `pydub` are installed). + * summary via a multimodal LLM if a transcription is available and a llm_client is configured + """ + + def convert(self, local_path, **kwargs) -> Union[None, DocumentConverterResult]: + """ + Convert a video to markdown + + Args: + local_path (str): The path to the video file + metadata_exclude: A list of metadata fields to exclude from the extracted exif metadata + metadata_title: The title of the metadata section + transcribe: Whether to transcribe the video + transcript_title: The title of the transcript section + llm_summary: Whether to generate a summary via the provided multimodal LLM client + llm_summary_title: The title of the summary section + """ + + mime_type = mimetypes.guess_type(local_path)[0] + if mime_type is None or not mime_type.startswith("video/"): + return None + + md_content = "" + + # Add metadata, let the user exclude metadata they don't want + metadata = self._get_metadata(local_path) + # Exclude these metadat by default (but allow the user to override) + # Maybe this should be moved to somewhere else + DEFAULTS_METADATA_EXCLUDE = [ + "SourceFile", + "ExifToolVersion", + "Directory", + "FileModifyDate", + "FileAccessDate", + "FileInodeChangeDate", + "FilePermissions", + ] + metadata_exclude = kwargs.get("metadata_exclude", DEFAULTS_METADATA_EXCLUDE) + metadata_title = kwargs.get("metadata_title", "### Metadata:\n") + if metadata_title is not None: + md_content += metadata_title + for f in metadata: + if not f in metadata_exclude: + md_content += f"{f}: {metadata[f]}\n" + + # Transcribe + transcribe = kwargs.get("transcribe", True) + transcript = "" + if transcribe and IS_AUDIO_TRANSCRIPTION_CAPABLE: + handle, temp_path = tempfile.mkstemp(suffix=".wav") + os.close(handle) + try: + sound = pydub.AudioSegment.from_file(local_path) + with open(temp_path, "wb") as f: + sound.export(f, format="wav") + _args = dict() + _args.update(kwargs) + _args["file_extension"] = ".wav" + + transcript_title = kwargs.get( + "transcript_title", "\n\n### Transcript:\n" + ) + try: + transcript = super()._transcribe_audio(temp_path).strip() + md_content += transcript_title + ( + "[No speech detected]" if transcript == "" else transcript + ) + except Exception: + transcript_error = kwargs.get( + "transcript_error", "Error. Could not transcribe." + ) + md_content += f"{transcript_title}{transcript_error}" + + finally: + os.unlink(temp_path) + + # LLM analysis (Optional) / not all LLMs are fully capable of analyzing video files yet, + # But for now we can use the transcript to get a summary of its content + llm_summary = kwargs.get("llm_summary", True) + llm_client = kwargs.get("llm_client") + llm_model = kwargs.get("llm_model") + if llm_summary and llm_client is not None and llm_model is not None: + if not transcribe: + print("Error: LLM summary requires transcription to be enabled.") + elif transcript == "": + print("Warning: No transcript found. Skipping LLM summary.") + else: + llm_summary_title = kwargs.get( + "llm_summary_title", "\n\n### Video Summary:\n" + ) + md_content += ( + llm_summary_title + + self._get_llm_video_summary_from_transcript( + transcript, + llm_client, + llm_model, + prompt=kwargs.get("llm_prompt"), + ) + ) + + # Return the result + return DocumentConverterResult( + title=None, + text_content=md_content.strip(), + ) + + def _get_llm_video_summary_from_transcript( + self, transcript, client, model, prompt=None + ) -> str: + """ + helper function to get a summary of the video content from the transcript + + Args: + transcript: the transcript of the video + client: the llm client + model: the llm model + prompt: the prompt to use + Returns: the summary + """ + if prompt is None or prompt.strip() == "": + prompt = "The following is video transcript, based on it, write a summary of the video content:\n" + + messages = [ + { + "role": "user", + "content": [ + {"type": "text", "text": prompt}, + {"type": "text", "text": transcript}, + ], + } + ] + + response = client.chat.completions.create(model=model, messages=messages) + return response.choices[0].message.content + + class ZipConverter(DocumentConverter): """Converts ZIP files to markdown by extracting and converting all contained files. @@ -1281,6 +1423,7 @@ def __init__( self.register_page_converter(WavConverter()) self.register_page_converter(Mp3Converter()) self.register_page_converter(ImageConverter()) + self.register_page_converter(VideoConverter()) self.register_page_converter(IpynbConverter()) self.register_page_converter(PdfConverter()) self.register_page_converter(ZipConverter()) From aa4a073c248d12c14d11c02d69354a7a0e371437 Mon Sep 17 00:00:00 2001 From: abdeladim-s Date: Mon, 23 Dec 2024 14:20:06 -0500 Subject: [PATCH 2/2] test(videoConverter): add video converter exiftool test --- tests/test_files/test.mp4 | Bin 0 -> 83152 bytes tests/test_markitdown.py | 14 ++++++++++++++ 2 files changed, 14 insertions(+) create mode 100644 tests/test_files/test.mp4 diff --git a/tests/test_files/test.mp4 b/tests/test_files/test.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..678151c90926bd6237de3516c51297267915ea1f GIT binary patch literal 83152 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 GdjAD~LzkNX literal 0 HcmV?d00001 diff --git a/tests/test_markitdown.py b/tests/test_markitdown.py index 4a981bd..98bbefe 100644 --- a/tests/test_markitdown.py +++ b/tests/test_markitdown.py @@ -130,6 +130,12 @@ "5bda1dd6", ] +VIDEO_TEST_EXIFTOOL = { + "Title": "Sample video test for MarkItDown", + "Comment": "This is a sample video created using FFmpeg, with the voice-over generated by the Parler-TTS model.", + "ImageSize": "1280x720", +} + # --- Helper Functions --- def validate_strings(result, expected_strings, exclude_strings=None): @@ -246,6 +252,14 @@ def test_markitdown_exiftool() -> None: target = f"{key}: {JPG_TEST_EXIFTOOL[key]}" assert target in result.text_content + # Test Video metadata + result = markitdown.convert( + os.path.join(TEST_FILES_DIR, "test.mp4"), transcribe=False, llm_summary=False + ) + for key in VIDEO_TEST_EXIFTOOL: + target = f"{key}: {VIDEO_TEST_EXIFTOOL[key]}" + assert target in result.text_content + def test_markitdown_deprecation() -> None: try: