Reverse-engineer any video, shot by shot: filmed, AI-generated or coded, and how to remake it. Breakdowns in the open VIDEO.md format. 逆向一切视频,逐个镜头看是拍的、AI 生成的还是代码做的,再告诉你怎么复刻;拆解结果按 VIDEO.md 格式输出。
This report summarizes scanner evidence for JuneYaooo/rea-video, a Python project with 8,127 GitHub stars. SynthScan examined 62,771 lines of code across 173 source files, recording 583 pattern matches distributed across 10 syntactic categories. The legacy adjusted pattern signal is 19.3 (Elevated pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-11-14.
Can maintainers explain intent, assumptions, and trade-offs? 495 finding(s).
Are imports declared and package/API names verified? 61 finding(s).
Are wrappers, guards, and repeated structures necessary? 270 finding(s).
Which changes need focused human review? 583 finding(s).
Run additional scans to build a history of the legacy pattern signal. Score changes are not a measure of AI adoption or code quality.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 583 distinct pattern matches across 10 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | docs/cases/dual_role/report_en.md | 59 | | 2 |  | 0:01.4 | 1.5s | grab attention: The person affected asks back in… | Living room | CODE |
| HIGH⚡ | docs/cases/dual_role/report_en.md | 60 | | 3 |  | 0:02.8 | 1.0s | add information: The one who knows names the rea… | Study at nig | CODE |
| HIGH⚡ | docs/cases/dual_role/report_en.md | 62 | | 5 |  | 0:05.8 | 1.7s | turn: Voice the viewer's most direct doubt | Same living room an | CODE |
| HIGH⚡ | docs/cases/dual_role/report_en.md | 64 | | 7 |  | 0:10.5 | 1.0s | turn: A delighted follow-up that moves from diag… | Same living | CODE |
| HIGH⚡ | docs/cases/dual_role/report_en.md | 66 | | 9 |  | 0:13.5 | 2.7s | add information: State the requirement up front … | Same study a | CODE |
| HIGH | docs/cases/dual_role/report_en.md | 534 | <details class="ref"><summary>#2 00:01.375–00:02.833 · AI-generated video + code / editor overlays (text labels, title)< | CODE |
| HIGH | docs/cases/dual_role/report_en.md | 561 | <details class="ref"><summary>#3 00:02.833–00:03.875 · AI-generated video + code / editor overlays (text labels, title)< | CODE |
| HIGH | docs/cases/dual_role/report_en.md | 614 | <details class="ref"><summary>#5 00:05.833–00:07.542 · AI-generated video + code / editor overlays (subtitles, title)</s | CODE |
| HIGH | docs/cases/dual_role/report_en.md | 671 | <details class="ref"><summary>#7 00:10.542–00:11.542 · AI-generated video + code / editor overlays (subtitles, title)</s | CODE |
| HIGH | docs/cases/dual_role/report_en.md | 727 | <details class="ref"><summary>#9 00:13.458–00:16.125 · AI-generated video + code / editor overlays (subtitles, title)</s | CODE |
| HIGH⚡ | docs/cases/qing_mv/report_en.md | 86 | | 5 |  | 0:04.9 | 0.7s | set the mood: A few very short silhouette close-… | Close-up of | CODE |
| HIGH⚡ | docs/cases/qing_mv/report_en.md | 87 | | 6 |  | 0:05.5 | 0.3s | set the mood: A few very short silhouette close-… | Close-up of | CODE |
| HIGH⚡ | docs/cases/qing_mv/report_en.md | 88 | | 7 |  | 0:05.9 | 0.7s | set the mood: A few very short silhouette close-… | Close-up of | CODE |
| HIGH⚡ | docs/cases/qing_mv/report_en.md | 89 | | 8 |  | 0:06.6 | 0.3s | set the mood: A few very short silhouette close-… | Close-up of | CODE |
| HIGH⚡ | docs/cases/qing_mv/report_en.md | 90 | | 9 |  | 0:06.9 | 0.3s | set the mood: A few very short silhouette close-… | Close-up of | CODE |
| HIGH⚡ | docs/cases/qing_mv/report_en.md | 91 | | 10 |  | 0:07.2 | 1.4s | grab attention: The lead opens by dismissing his… | Studio med | CODE |
| HIGH⚡ | docs/cases/qing_mv/report_en.md | 92 | | 11 |  | 0:08.6 | 1.3s | grab attention: The lead opens by dismissing his… | Studio med | CODE |
| HIGH⚡ | docs/cases/qing_mv/report_en.md | 93 | | 12 |  | 0:10.0 | 1.7s | grab attention: The lead opens by dismissing his… | Studio med | CODE |
| HIGH⚡ | docs/cases/qing_mv/report_en.md | 94 | | 13 |  | 0:11.7 | 1.4s | grab attention: The lead opens by dismissing his… | Studio med | CODE |
| HIGH⚡ | docs/cases/qing_mv/report_en.md | 95 | | 14 |  | 0:13.0 | 1.0s | set the scene: Adds "I wrote that myself": the v… | Studio med | CODE |
| HIGH⚡ | docs/cases/qing_mv/report_en.md | 96 | | 15 |  | 0:14.0 | 0.7s | set the scene: Adds "I wrote that myself": the v… | Studio med | CODE |
| HIGH⚡ | docs/cases/qing_mv/report_en.md | 97 | | 16 |  | 0:14.7 | 1.0s | set the scene: Adds "I wrote that myself": the v… | Studio med | CODE |
| HIGH⚡ | docs/cases/qing_mv/report_en.md | 98 | | 17 |  | 0:15.8 | 2.3s | show evidence: The verdict he just spoke is show… | A deckle-e | CODE |
| HIGH⚡ | docs/cases/qing_mv/report_en.md | 99 | | 18 |  | 0:18.1 | 0.7s | turn: Cuts from speech to a silent extreme close… | Studio ext | CODE |
| HIGH⚡ | docs/cases/qing_mv/report_en.md | 100 | | 19 |  | 0:18.8 | 0.7s | turn: One line, "cue the beat", turns the speech… | Studio clo | CODE |
| HIGH⚡ | docs/cases/qing_mv/report_en.md | 101 | | 20 |  | 0:19.5 | 0.7s | turn: One line, "cue the beat", turns the speech… | Studio clo | CODE |
| HIGH⚡ | docs/cases/qing_mv/report_en.md | 102 | | 21 |  | 0:20.1 | 0.7s | set the mood: Before the verse, a string of symb… | A half-ope | CODE |
| HIGH⚡ | docs/cases/qing_mv/report_en.md | 103 | | 22 |  | 0:20.8 | 0.7s | set the mood: Before the verse, a string of symb… | A blank we | CODE |
| HIGH⚡ | docs/cases/qing_mv/report_en.md | 104 | | 23 |  | 0:21.5 | 0.7s | set the mood: Before the verse, a string of symb… | A crumpled | CODE |
| HIGH⚡ | docs/cases/qing_mv/report_en.md | 105 | | 24 |  | 0:22.2 | 0.7s | set the mood: Before the verse, a string of symb… | Close-up o | CODE |
| HIGH⚡ | docs/cases/qing_mv/report_en.md | 106 | | 25 |  | 0:22.9 | 0.7s | set the mood: Before the verse, a string of symb… | The curved | CODE |
| HIGH⚡ | docs/cases/qing_mv/report_en.md | 107 | | 26 |  | 0:23.5 | 0.7s | set the mood: Before the verse, a string of symb… | A few char | CODE |
| HIGH⚡ | docs/cases/qing_mv/report_en.md | 108 | | 27 |  | 0:24.2 | 0.7s | set the mood: Before the verse, a string of symb… | A string o | CODE |
| HIGH⚡ | docs/cases/qing_mv/report_en.md | 109 | | 28 |  | 0:24.9 | 0.7s | set the mood: Before the verse, a string of symb… | An empty m | CODE |
| HIGH⚡ | docs/cases/qing_mv/report_en.md | 110 | | 29 |  | 0:25.6 | 0.7s | set the mood: Before the verse, a string of symb… | Close-up o | CODE |
| HIGH⚡ | docs/cases/qing_mv/report_en.md | 111 | | 30 |  | 0:26.2 | 0.7s | set the mood: Before the verse, a string of symb… | A few char | CODE |
| HIGH⚡ | docs/cases/qing_mv/report_en.md | 112 | | 31 |  | 0:26.9 | 0.7s | set the mood: Before the verse, a string of symb… | The curved | CODE |
| HIGH⚡ | docs/cases/qing_mv/report_en.md | 113 | | 32 |  | 0:27.6 | 0.3s | set the mood: Before the verse, a string of symb… | A crumpled | CODE |
| HIGH⚡ | docs/cases/qing_mv/report_en.md | 114 | | 33 |  | 0:28.0 | 0.3s | set the mood: Before the verse, a string of symb… | A blank we | CODE |
| HIGH⚡ | docs/cases/qing_mv/report_en.md | 115 | | 34 |  | 0:28.3 | 0.3s | set the mood: Before the verse, a string of symb… | A string o | CODE |
| HIGH⚡ | docs/cases/qing_mv/report_en.md | 116 | | 35 |  | 0:28.6 | 0.4s | set the mood: Before the verse, a string of symb… | A few char | CODE |
| HIGH⚡ | docs/cases/qing_mv/report_en.md | 117 | | 36 |  | 0:29.0 | 0.2s | set the mood: Before the verse, a string of symb… | A half-ope | CODE |
| HIGH⚡ | docs/cases/qing_mv/report_en.md | 118 | | 37 |  | 0:29.2 | 2.4s | add information: A boy enters the exam hall: the… | At night a | CODE |
| HIGH⚡ | docs/cases/qing_mv/report_en.md | 119 | | 38 |  | 0:31.6 | 0.1s | set the mood: A flash of the wider studio framin… | Studio med | CODE |
| HIGH⚡ | docs/cases/qing_mv/report_en.md | 120 | | 39 |  | 0:31.8 | 0.4s | add information: Raps the count of his failed ex… | Studio clo | CODE |
| HIGH⚡ | docs/cases/qing_mv/report_en.md | 121 | | 40 |  | 0:32.2 | 2.5s | add information: Exam after exam failed: a boy s… | In a dim e | CODE |
| HIGH⚡ | docs/cases/qing_mv/report_en.md | 122 | | 41 |  | 0:34.6 | 2.0s | add information: Father and son sat the same exa… | Studio ext | CODE |
| HIGH⚡ | docs/cases/qing_mv/report_en.md | 123 | | 42 |  | 0:36.7 | 2.9s | show evidence: His name is posted for all to see… | At night o | CODE |
| HIGH⚡ | docs/cases/qing_mv/report_en.md | 124 | | 43 |  | 0:39.5 | 0.7s | set the mood: Holding the headphones while singi… | Studio clo | CODE |
| HIGH⚡ | docs/cases/qing_mv/report_en.md | 125 | | 44 |  | 0:40.2 | 2.6s | show evidence: Puts the four characters 「文理太浅」 r… | Under a di | CODE |
| HIGH⚡ | docs/cases/qing_mv/report_en.md | 126 | | 45 |  | 0:42.9 | 0.7s | add information: Sings that the whole city saw h… | Studio clo | CODE |
| HIGH⚡ | docs/cases/qing_mv/report_en.md | 127 | | 46 |  | 0:43.6 | 1.2s | show evidence: Pushes in once more so the four c… | A tighter | CODE |
| HIGH⚡ | docs/cases/qing_mv/report_en.md | 128 | | 47 |  | 0:44.8 | 0.6s | add information: Rap close-ups bring the emotion… | Studio ext | CODE |
| HIGH⚡ | docs/cases/qing_mv/report_en.md | 129 | | 48 |  | 0:45.4 | 0.2s | add information: Rap close-ups bring the emotion… | Studio ext | CODE |
| HIGH⚡ | docs/cases/qing_mv/report_en.md | 130 | | 49 |  | 0:45.7 | 1.3s | add information: Pushing through the crowd to re… | Under the | CODE |
| HIGH⚡ | docs/cases/qing_mv/report_en.md | 131 | | 50 |  | 0:47.0 | 0.6s | add information: Three more tries at the jinshi … | Studio ext | CODE |
| HIGH⚡ | docs/cases/qing_mv/report_en.md | 132 | | 51 |  | 0:47.6 | 0.6s | add information: Pushing through the crowd to re… | Under the | CODE |
| HIGH⚡ | docs/cases/qing_mv/report_en.md | 133 | | 52 |  | 0:48.2 | 0.6s | add information: Ranked at the very bottom: the … | Studio clo | CODE |
| HIGH⚡ | docs/cases/qing_mv/report_en.md | 134 | | 53 |  | 0:48.8 | 1.6s | add information: Ranked at the very bottom: the … | Studio clo | CODE |
| HIGH⚡ | docs/cases/qing_mv/report_en.md | 135 | | 54 |  | 0:50.4 | 3.1s | add information: Only learned to lead troops aft… | Outside a | CODE |
| 141 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_motion.py | 31 | def test_events_time_place_colour(tmp_path): | CODE |
| LOW | tests/test_motion.py | 53 | def test_flash_cut_and_light_shot_not_a_fade(tmp_path): | CODE |
| LOW⚡ | tests/test_motion.py | 71 | def test_numbers_are_counters_and_dark_text_is_not_outlined(): | CODE |
| LOW⚡ | tests/test_motion.py | 80 | def test_outlined_subtitle_on_bright_footage_keeps_its_outline(): | CODE |
| LOW⚡ | tests/test_motion.py | 89 | def test_element_crops_numbered_like_the_timeline(tmp_path): | CODE |
| LOW | tests/test_motion.py | 107 | def test_text_style_is_repeatable(): | CODE |
| LOW | tests/test_motion.py | 125 | def test_style_vote_ties_do_not_depend_on_hash_seed(): | CODE |
| LOW⚡ | tests/test_security.py | 10 | def test_inline_blocks_attribute_injection_and_bad_schemes(): | CODE |
| LOW⚡ | tests/test_security.py | 18 | def test_raw_html_lines_only_for_our_own_tags(): | CODE |
| LOW⚡ | tests/test_security.py | 25 | def test_cwd_env_is_not_loaded(tmp_path, monkeypatch): | CODE |
| LOW | tests/test_security.py | 45 | def test_run_remake_rejects_foreign_capsule_root_and_output_dir(tmp_path): | CODE |
| LOW | tests/test_security.py | 62 | def test_face_model_checksum_rejects_tampered_download(tmp_path, monkeypatch): | CODE |
| LOW | tests/test_security.py | 71 | def test_run_remake_only_accepts_shot_ids(tmp_path): | CODE |
| LOW | tests/test_packaging.py | 137 | def test_speech_anchors_and_persistent_layers(): | CODE |
| LOW | tests/test_packaging.py | 164 | def test_overlays_at_skips_picture_text(): | CODE |
| LOW | tests/test_packaging.py | 199 | def test_review_overrides_stickers_and_kinds(): | CODE |
| LOW | tests/test_packaging.py | 219 | def test_pipeline_writes_packaging(tmp_path, media): | CODE |
| LOW | tests/test_packaging.py | 231 | def test_numbered_labels_split_per_shot(): | CODE |
| LOW | tests/test_packaging.py | 250 | def test_page_text_in_a_screenshot_is_not_a_subtitle(): | CODE |
| LOW | tests/test_packaging.py | 275 | def test_counter_ticking_every_frame_stays_one_cue(): | CODE |
| LOW | tests/test_packaging.py | 283 | def test_low_confidence_sfx_are_counted_as_possible(): | CODE |
| LOW | tests/test_film.py | 21 | def test_picture_box_finds_a_film_letterboxed_into_a_vertical_frame(): | CODE |
| LOW | tests/test_film.py | 31 | def test_no_box_on_full_frame_pictures_or_rendered_cards(): | CODE |
| LOW | tests/test_film.py | 48 | def test_film_hints_are_evidence_not_a_verdict(): | CODE |
| LOW | tests/test_film.py | 62 | def test_tool_only_run_flags_film_hints_as_to_confirm(): | CODE |
| LOW | tests/test_film.py | 69 | def test_film_footage_is_filmed_and_left_to_image_readers(): | CODE |
| LOW⚡ | tests/test_film.py | 81 | def test_video_context_film_share(): | CODE |
| LOW⚡ | tests/test_film.py | 87 | def test_footage_runs_group_contiguous_film_shots(): | CODE |
| LOW⚡ | tests/test_film.py | 95 | def test_reader_picks_film_over_live_action_inside_the_filmed_group(): | CODE |
| LOW | tests/test_production.py | 33 | def test_named_model_is_planned_for(): | CODE |
| LOW | tests/test_production.py | 45 | def test_plan_carries_the_models_prompt_notes(tmp_path): | CODE |
| LOW | tests/test_production.py | 58 | def test_split_respects_hardcut_cap(): | CODE |
| LOW | tests/test_production.py | 68 | def test_units_scene_product_and_continuity(tmp_path): | CODE |
| LOW | tests/test_production.py | 86 | def test_shooting_setups_group_non_adjacent(tmp_path): | CODE |
| LOW⚡ | tests/test_production.py | 100 | def test_limits_reads_capabilities(): | CODE |
| LOW⚡ | tests/test_production.py | 106 | def test_review_answers_carry_prompts(): | CODE |
| LOW⚡ | tests/test_production.py | 116 | def test_inserts_do_not_split_a_generation(tmp_path): | CODE |
| LOW | tests/test_production.py | 131 | def test_framing_goes_into_capsule_prompt(): | CODE |
| LOW | tests/test_production.py | 146 | def test_english_engine_note_has_no_chinese(tmp_path): | CODE |
| LOW | tests/test_production.py | 157 | def test_each_unit_says_what_to_feed_the_model(tmp_path): | CODE |
| LOW | tests/test_production.py | 189 | def test_framing_words_follow_the_report_language(): | CODE |
| LOW | tests/test_particles.py | 38 | def test_fine_dark_separates_particles_from_shaded_surfaces(): | CODE |
| LOW | tests/test_particles.py | 50 | def test_code_scene_and_report_table(tmp_path): | CODE |
| LOW | tests/test_particles.py | 75 | def test_a_smooth_background_does_not_hide_fine_graphics(): | CODE |
| LOW | tests/test_code_render.py | 53 | def test_vector_fills_are_code_render(): | CODE |
| LOW⚡ | tests/test_code_render.py | 76 | def test_line_art_on_light_ground_is_code_render(): | CODE |
| LOW⚡ | tests/test_code_render.py | 83 | def test_grainy_dark_ground_is_not_neon(): | CODE |
| LOW⚡ | tests/test_code_render.py | 92 | def test_textured_picture_is_not_vector(): | CODE |
| LOW⚡ | tests/test_code_render.py | 100 | def test_code_style_names_the_build(): | CODE |
| LOW | tests/test_code_render.py | 113 | def test_colour_morph_is_not_a_dissolve(): | CODE |
| LOW⚡ | tests/test_robustness.py | 25 | def test_last_frame_past_final_pts_falls_back(fps10, tmp_path): | CODE |
| LOW⚡ | tests/test_robustness.py | 31 | def test_byte_scan_skips_mdat(tmp_path): | CODE |
| LOW⚡ | tests/test_robustness.py | 41 | def test_normalize_whole_survives_bad_shapes(): | CODE |
| LOW⚡ | tests/test_robustness.py | 51 | def test_merge_audio_with_bad_whole_answer(): | CODE |
| LOW⚡ | tests/test_robustness.py | 58 | def test_normalize_shot_result_bad_types(): | CODE |
| LOW⚡ | tests/test_robustness.py | 63 | def test_empty_choices_falls_back_to_next_model(monkeypatch): | CODE |
| LOW⚡ | tests/test_robustness.py | 90 | def test_srt_timestamp_carries_into_seconds(): | CODE |
| LOW⚡ | tests/test_robustness.py | 96 | def test_tiles_cmd_quotes_paths(): | CODE |
| LOW⚡ | tests/test_robustness.py | 100 | def test_tiles_rejects_bad_numbers(fps10, tmp_path, capsys): | CODE |
| LOW⚡ | tests/test_robustness.py | 171 | def test_generator_named_in_typed_text_is_not_a_signature(tmp_path): | CODE |
| 181 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | rea_video/shots.py | 6 | CODE | |
| LOW | rea_video/overlay.py | 8 | CODE | |
| LOW | rea_video/effects.py | 9 | CODE | |
| LOW | rea_video/plan.py | 3 | CODE | |
| LOW | rea_video/media.py | 3 | CODE | |
| LOW | rea_video/faces.py | 5 | CODE | |
| LOW | rea_video/memory.py | 12 | CODE | |
| LOW | rea_video/util.py | 2 | CODE | |
| LOW | rea_video/classify.py | 24 | CODE | |
| LOW | rea_video/remake.py | 10 | CODE | |
| LOW | rea_video/videomd.py | 13 | CODE | |
| LOW | rea_video/features.py | 10 | CODE | |
| LOW | rea_video/pdf.py | 4 | CODE | |
| LOW | rea_video/narrative.py | 10 | CODE | |
| LOW | rea_video/review.py | 5 | CODE | |
| LOW | rea_video/vlm.py | 14 | CODE | |
| LOW | rea_video/motion.py | 8 | CODE | |
| LOW | rea_video/cli.py | 2 | CODE | |
| LOW | rea_video/cli.py | 288 | CODE | |
| LOW | rea_video/transitions.py | 27 | CODE | |
| LOW | rea_video/packaging.py | 22 | CODE | |
| LOW | rea_video/pipeline.py | 2 | CODE | |
| LOW | rea_video/pipeline.py | 826 | CODE | |
| LOW | rea_video/sound_source.py | 16 | CODE | |
| LOW | rea_video/assets.py | 15 | CODE | |
| LOW | rea_video/probe.py | 6 | CODE | |
| LOW | rea_video/visual.py | 2 | CODE | |
| LOW | rea_video/speakers.py | 21 | CODE | |
| LOW | rea_video/i18n.py | 12 | CODE | |
| LOW | rea_video/audio.py | 12 | CODE | |
| LOW | rea_video/evaluate.py | 2 | CODE | |
| LOW | rea_video/entities.py | 8 | CODE | |
| LOW | rea_video/speech.py | 14 | CODE | |
| LOW | rea_video/layers.py | 17 | CODE | |
| LOW | rea_video/stems.py | 7 | CODE | |
| LOW | rea_video/report.py | 8 | CODE | |
| LOW | rea_video/production.py | 11 | CODE | |
| LOW | rea_video/integrations/capsule_cinema.py | 10 | CODE | |
| LOW | rea_video/integrations/to_capsule.py | 7 | CODE | |
| LOW | rea_video/integrations/run_remake.py | 6 | CODE | |
| LOW | rea_video/aspects/fmt.py | 9 | CODE | |
| LOW | rea_video/aspects/vocab.py | 7 | CODE | |
| LOW | rea_video/aspects/editing.py | 8 | CODE | |
| LOW | rea_video/aspects/subject.py | 10 | CODE | |
| LOW | rea_video/aspects/__init__.py | 6 | CODE | |
| LOW | rea_video/aspects/__init__.py | 13 | CODE | |
| LOW | rea_video/aspects/__init__.py | 13 | CODE | |
| LOW | rea_video/aspects/__init__.py | 13 | CODE | |
| LOW | rea_video/aspects/__init__.py | 13 | CODE | |
| LOW | rea_video/aspects/__init__.py | 13 | CODE | |
| LOW | rea_video/aspects/__init__.py | 14 | CODE | |
| LOW | rea_video/aspects/lighting.py | 16 | CODE | |
| LOW | rea_video/aspects/camera.py | 6 | CODE | |
| LOW | rea_video/aspects/framing.py | 6 | CODE | |
| LOW | rea_video/aspects/base.py | 16 | CODE | |
| LOW | rea_video/aspects/grade.py | 13 | CODE | |
| LOW | tests/test_videomd.py | 3 | CODE | |
| LOW | tests/test_coverage_ext.py | 2 | CODE | |
| LOW | scripts/validate_capabilities.py | 17 | CODE | |
| LOW | scripts/bench_transitions.py | 9 | CODE | |
| 1 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | rea_video/shots.py | 137 | CODE | |
| LOW | rea_video/shots.py | 408 | CODE | |
| LOW | rea_video/memory.py | 182 | CODE | |
| LOW | rea_video/classify.py | 183 | CODE | |
| LOW | rea_video/classify.py | 521 | CODE | |
| LOW | rea_video/features.py | 209 | CODE | |
| LOW | rea_video/features.py | 396 | CODE | |
| LOW | rea_video/vlm.py | 469 | CODE | |
| LOW | rea_video/vlm.py | 207 | CODE | |
| LOW | rea_video/motion.py | 250 | CODE | |
| LOW | rea_video/motion.py | 400 | CODE | |
| LOW | rea_video/cli.py | 487 | CODE | |
| LOW | rea_video/cli.py | 537 | CODE | |
| LOW | rea_video/transitions.py | 329 | CODE | |
| LOW | rea_video/transitions.py | 540 | CODE | |
| LOW | rea_video/packaging.py | 104 | CODE | |
| LOW | rea_video/packaging.py | 424 | CODE | |
| LOW | rea_video/packaging.py | 612 | CODE | |
| LOW | rea_video/packaging.py | 841 | CODE | |
| LOW | rea_video/packaging.py | 1059 | CODE | |
| LOW | rea_video/packaging.py | 1157 | CODE | |
| LOW | rea_video/packaging.py | 1397 | CODE | |
| LOW | rea_video/packaging.py | 1710 | CODE | |
| LOW | rea_video/pipeline.py | 87 | CODE | |
| LOW | rea_video/pipeline.py | 597 | CODE | |
| LOW | rea_video/sound_source.py | 95 | CODE | |
| LOW | rea_video/assets.py | 56 | CODE | |
| LOW | rea_video/assets.py | 210 | CODE | |
| LOW | rea_video/probe.py | 72 | CODE | |
| LOW | rea_video/probe.py | 137 | CODE | |
| LOW | rea_video/speakers.py | 63 | CODE | |
| LOW | rea_video/speakers.py | 270 | CODE | |
| LOW | rea_video/audio.py | 209 | CODE | |
| LOW | rea_video/evaluate.py | 224 | CODE | |
| LOW | rea_video/entities.py | 102 | CODE | |
| LOW | rea_video/entities.py | 133 | CODE | |
| LOW | rea_video/speech.py | 74 | CODE | |
| LOW | rea_video/layers.py | 324 | CODE | |
| LOW | rea_video/layers.py | 387 | CODE | |
| LOW | rea_video/report.py | 1034 | CODE | |
| LOW | rea_video/production.py | 741 | CODE | |
| LOW | rea_video/aspects/fmt.py | 29 | CODE | |
| LOW | rea_video/aspects/grade.py | 60 | CODE | |
| LOW | tests/test_packaging.py | 43 | CODE | |
| LOW | scripts/validate_capabilities.py | 51 | CODE | |
| LOW | scripts/bench_transitions.py | 138 | CODE | |
| LOW | scripts/bench_transitions.py | 184 | CODE | |
| LOW | scripts/render_flow_svg.py | 579 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | rea_video/media.py | 120 | except ValueError: | CODE |
| HIGH | rea_video/media.py | 115 | except (TypeError, ValueError): | CODE |
| HIGH | rea_video/faces.py | 68 | except Exception: # pragma: no cover | CODE |
| HIGH | rea_video/util.py | 65 | except ImportError: # pragma: no cover | CODE |
| HIGH | rea_video/util.py | 162 | except ImportError: # pragma: no cover | CODE |
| HIGH | rea_video/vlm.py | 224 | except (OSError, ValueError): | CODE |
| HIGH | rea_video/production.py | 618 | except (OSError, ValueError, TypeError): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | rea_video/overlay.py | 106 | except Exception as exc: # pragma: no cover - optional dependency / offline | CODE |
| LOW | rea_video/overlay.py | 174 | except Exception as exc: # pragma: no cover | CODE |
| LOW | rea_video/effects.py | 93 | except Exception as e: # offline / no onnxruntime: the report falls back to effects found on the mix | CODE |
| LOW | rea_video/faces.py | 44 | except Exception as exc: # offline: fall back to Haar if this OpenCV has it | CODE |
| LOW | rea_video/faces.py | 61 | except Exception as exc: # pragma: no cover | CODE |
| LOW | rea_video/faces.py | 68 | except Exception: # pragma: no cover | CODE |
| LOW | rea_video/vlm.py | 263 | except Exception: | CODE |
| LOW | rea_video/packaging.py | 329 | except Exception as exc: # pragma: no cover | CODE |
| LOW | rea_video/packaging.py | 1464 | except Exception as exc: # pragma: no cover | CODE |
| LOW | rea_video/pipeline.py | 262 | except Exception as exc: # keep going; deterministic result stands | CODE |
| LOW | rea_video/pipeline.py | 268 | except Exception as exc2: # pragma: no cover | CODE |
| LOW | rea_video/pipeline.py | 292 | except Exception as exc: | CODE |
| LOW | rea_video/pipeline.py | 360 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | rea_video/visual.py | 123 | except Exception: # pragma: no cover | CODE |
| LOW | rea_video/speakers.py | 339 | except Exception as exc: # offline on first use, a broken wheel: the breakdown goes on without speakers | CODE |
| LOW | rea_video/speech.py | 248 | except Exception as exc: # offline on first use, a broken wheel: the breakdown goes on without a transcript | CODE |
| LOW | rea_video/stems.py | 66 | except Exception as e: # corrupted cache (e.g. an older interrupted download): fetch again once | CODE |
| LOW | rea_video/stems.py | 140 | except Exception as e: # missing onnxruntime / offline: keep the original track at least | CODE |
| LOW | rea_video/integrations/run_remake.py | 94 | except Exception as exc: # keep going, record the failure | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | rea_video/classify.py | 220 | # flat colour blocks and a small palette are the most robust "rendered" cues; the | COMMENT |
| MEDIUM | rea_video/aspects/lighting.py | 106 | out["bg_std"] = float(gray[mask].std()) # a seamless backdrop / plain wall is nearly one tone | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | rea_video/pipeline.py | 87 | CODE | |
| LOW | tests/test_sound_source.py | 4 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | rea_video/classify.py | 101 | # an avatar is a fixed frame; a moving / shaking camera argues for someone filming | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | rea_video/aspects/__init__.py | 17 | __all__ = ["REGISTRY", "measure_shot", "finalize", "prompt_block", "review_template", "review_guide", "clean_answers", | CODE |