Repository Analysis

oop7/YTSage

Modern YouTube downloader with a clean PySide6 interface. Download videos in any quality, extract audio, fetch subtitles, sponsorBlock, and view video metadata. Built with yt-dlp for reliable performance.

12.3 Low AI signal View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of oop7/YTSage, a Python project with 4,398 GitHub stars. SynthScan v2.0 examined 36,110 lines of code across 70 source files, recording 391 pattern matches distributed across 11 syntactic categories. The overall adjusted score of 12.3 places this repository in the Low AI signal band.

The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).

12.3
Adjusted Score
12.3
Raw Score
100%
Time Factor
2026-08-09
Last Push
4.4K
Stars
Python
Language
36.1K
Lines of Code
70
Files
391
Pattern Hits
2026-08-09
Scan Date
0.07
HC Hit Rate

What These Metrics Mean

Adjusted Score
Primary synthetic code indicator. Raw score normalised per 1,000 lines of code and multiplied by the temporal discount factor. This is the definitive comparative metric — use it to rank repositories by AI authorship density.
Raw Score
The unmodified sum of all severity-weighted, context-multiplied pattern match scores before temporal discounting. Reflects the absolute signal strength independent of when the repository was last active.
Time Factor
The temporal discount multiplier (0–100%) applied to the raw score. Repositories last updated before ChatGPT's launch (Nov 2022) receive a 5% factor. Full signal is only assigned to repositories active in the post-adoption era (Jan 2024+).
Pattern Hits
Total count of individual pattern matches across all files and categories. A high hit count with a low score may indicate a very large codebase with isolated AI snippets; a low count with a high score indicates dense, concentrated AI signatures.
HC Hit Rate
High+Critical pattern hits per file, averaged across the repository. This orthogonal signal catches repositories where a few files are densely packed with high-severity AI tells — a strong indicator even when the normalised score appears moderate due to codebase size.
Lines of Code / Files
Total lines and files analysed. The scanner examines 94 file extensions. These denominators are used to normalise the score, enabling fair comparison between repositories of vastly different sizes.

Score History

Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.

No multi-scan history yet — run the scanner again to build trend data.

Severity Breakdown

Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.

CRITICAL 0HIGH 5MEDIUM 24LOW 362

Directory Score Breakdown

This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.

Pattern Findings

The scanner identified 391 distinct pattern matches across 11 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. 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 diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.

Excessive Try-Catch Wrapping154 hits · 152 pts
SeverityFileLineSnippetContext
LOWbuild_release.py50 except Exception as e:CODE
MEDIUMbuild_release.py51 print(f"Error during build: {e}")CODE
LOWytsage/main.py27 except Exception as e:CODE
MEDIUMytsage/main.py18def main():CODE
LOWytsage/core/ytsage_deno.py104 except Exception as e:CODE
LOWytsage/core/ytsage_deno.py198 except Exception as e:CODE
LOWytsage/core/ytsage_deno.py204 except Exception:CODE
LOWytsage/core/ytsage_deno.py425 except Exception as e:CODE
LOWytsage/core/ytsage_deno.py455 except Exception:CODE
LOWytsage/core/ytsage_deno.py458 except Exception:CODE
LOWytsage/core/ytsage_deno.py518 except Exception as e:CODE
LOWytsage/core/ytsage_deno.py642 except Exception as e:CODE
LOWytsage/core/ytsage_deno.py749 except Exception as e:CODE
LOWytsage/core/ytsage_deno.py778 except Exception as e:CODE
LOWytsage/core/ytsage_yt_dlp.py99 except Exception as e:CODE
LOWytsage/core/ytsage_yt_dlp.py156 except Exception as e:CODE
LOWytsage/core/ytsage_yt_dlp.py472 except Exception as copy_error:CODE
LOWytsage/core/ytsage_yt_dlp.py530 except Exception as e:CODE
LOWytsage/core/ytsage_yt_dlp.py575 except Exception as e:CODE
LOWytsage/core/ytsage_yt_dlp.py601 except Exception:CODE
LOWytsage/core/ytsage_yt_dlp.py604 except Exception:CODE
LOWytsage/core/ytsage_yt_dlp.py752 except Exception as e:CODE
MEDIUMytsage/core/ytsage_yt_dlp.py111def run(self) -> None:CODE
LOWytsage/core/ytsage_ffmpeg.py83 except Exception as e:CODE
LOWytsage/core/ytsage_ffmpeg.py149 except Exception as e:CODE
LOWytsage/core/ytsage_ffmpeg.py192 except Exception as e:CODE
LOWytsage/core/ytsage_ffmpeg.py246 except Exception as e:CODE
LOWytsage/core/ytsage_ffmpeg.py258 except Exception:CODE
LOWytsage/core/ytsage_ffmpeg.py297 except Exception as e:CODE
LOWytsage/core/ytsage_ffmpeg.py306 except Exception:CODE
LOWytsage/core/ytsage_ffmpeg.py359 except Exception as e:CODE
LOWytsage/core/ytsage_ffmpeg.py378 except Exception as e:CODE
LOWytsage/core/ytsage_ffmpeg.py413 except Exception as e:CODE
LOWytsage/core/ytsage_ffmpeg.py450 except Exception as e:CODE
LOWytsage/core/ytsage_utils.py118 except Exception as e:CODE
LOWytsage/core/ytsage_utils.py128 except Exception as e:CODE
LOWytsage/core/ytsage_utils.py150 except Exception as e:CODE
LOWytsage/core/ytsage_utils.py544 except Exception as e:CODE
LOWytsage/core/ytsage_utils.py546 except Exception as e:CODE
LOWytsage/core/ytsage_utils.py767 except Exception as e:CODE
LOWytsage/core/ytsage_utils.py61 except Exception:CODE
LOWytsage/core/ytsage_utils.py174 except Exception as e:CODE
LOWytsage/core/ytsage_utils.py200 except Exception as e:CODE
LOWytsage/core/ytsage_utils.py224 except Exception as e:CODE
LOWytsage/core/ytsage_utils.py262 except Exception as e:CODE
LOWytsage/core/ytsage_utils.py316 except Exception as e:CODE
LOWytsage/core/ytsage_utils.py319 except Exception as e:CODE
LOWytsage/core/ytsage_utils.py345 except Exception as e:CODE
LOWytsage/core/ytsage_utils.py362 except Exception as e:CODE
LOWytsage/core/ytsage_utils.py368 except Exception as e:CODE
LOWytsage/core/ytsage_utils.py389 except Exception:CODE
LOWytsage/core/ytsage_utils.py400 except Exception as e:CODE
LOWytsage/core/ytsage_utils.py415 except Exception as e:CODE
LOWytsage/core/ytsage_utils.py427 except Exception as e:CODE
LOWytsage/core/ytsage_utils.py488 except Exception as e:CODE
LOWytsage/core/ytsage_utils.py494 except Exception as e:CODE
LOWytsage/core/ytsage_utils.py577 except Exception as e:CODE
LOWytsage/core/ytsage_utils.py630 except Exception as e:CODE
LOWytsage/core/ytsage_utils.py634 except Exception as e:CODE
LOWytsage/core/ytsage_utils.py662 except Exception as e:CODE
94 more matches not shown…
Redundant / Tautological Comments37 hits · 64 pts
SeverityFileLineSnippetContext
LOW.github/workflows/build-macos.yml212 # Check if this lib dir is a python library dir (contains asyncio or PySide6 or ytsage)COMMENT
LOWytsage/core/ytsage_deno.py122 os.close(temp_zip_fd) # Close the file descriptorCODE
LOWytsage/core/ytsage_ffmpeg.py199 # Check if already installedCOMMENT
LOWytsage/core/ytsage_ffmpeg.py388 # Check if Homebrew is installedCOMMENT
LOWytsage/core/ytsage_utils.py137 # Check if we need to refresh cacheCOMMENT
LOWytsage/core/ytsage_utils.py161 # Check if we need to refresh cacheCOMMENT
LOWytsage/core/ytsage_utils.py557 # Check if auto-update is enabledCOMMENT
LOWytsage/core/ytsage_utils.py758 # Check if URL is emptyCOMMENT
LOWytsage/core/ytsage_utils.py771 # Check if scheme is http or httpsCOMMENT
LOWytsage/core/ytsage_utils.py775 # Check if netloc (domain) existsCOMMENT
LOWytsage/core/ytsage_utils.py186 # Check if we need to refresh cacheCOMMENT
LOWytsage/core/ytsage_utils.py441 # Check if this is an app-managed binary by comparing paths safelyCOMMENT
LOWytsage/core/ytsage_utils.py794 # Check if domain is YouTubeCOMMENT
LOWytsage/core/ytsage_downloader.py208 # Check if file exists before trying to deleteCOMMENT
LOWytsage/core/ytsage_downloader.py636 # Check if this is an audio-only download by looking in the previous linesCOMMENT
LOWytsage/core/ytsage_downloader.py643 # Check if the format ID is mentioned earlier in the lineCOMMENT
LOWytsage/core/ytsage_downloader.py587 # Check if it was cancelledCOMMENT
LOWytsage/core/ytsage_downloader.py655 # Check if this is explicitly an audio stream downloadCOMMENT
LOWytsage/utils/ytsage_history_manager.py63 # Check if file exists to know if we need to migrate or just create schemaCOMMENT
LOWytsage/utils/ytsage_constants.py33 # Check if running as a frozen executable (PyInstaller, cx_Freeze, etc.)COMMENT
LOWytsage/gui/ytsage_gui_main.py343 # Check if the notification sound file existsCOMMENT
LOWytsage/gui/ytsage_gui_main.py360 # Check if the user wants to remember cookies across sessionsCOMMENT
LOWytsage/gui/ytsage_gui_main.py1232 # Check if auto-update should be performedCOMMENT
LOWytsage/gui/ytsage_gui_main.py1243 # Check if a download is currently running or analysis is in progressCOMMENT
LOWytsage/gui/ytsage_gui_main.py1824 # Check if the main window has a graphics effect (blur) active.COMMENT
LOWytsage/gui/ytsage_gui_format_table.py214 # Check if we need to rebuild the table (first time or formats changed)COMMENT
LOWytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_ffmpeg.py155 # Check if FFmpeg is already installedCOMMENT
LOWytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_ffmpeg.py180 # Display the messagesCOMMENT
LOWytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_update.py257 # Check if dialog is closing to avoid unnecessary updatesCOMMENT
LOWytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_update.py334 # Check if dialog is closing to avoid unnecessary updatesCOMMENT
LOW…sage/gui/ytsage_gui_dialogs/ytsage_dialogs_settings.py531 float(limit_str) # Check if convertible to floatCODE
LOWytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_custom.py802 # Open file dialog to select cookie fileCOMMENT
LOWytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_custom.py854 # Check if it starts with a valid schemeCOMMENT
LOWytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_custom.py887 # Check if there are saved settingsCOMMENT
LOWytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_base.py551 # Check if the path is our managed binaryCOMMENT
LOW…age/gui/ytsage_gui_dialogs/ytsage_dialogs_selection.py148 checkbox.setChecked(item_text in self.previously_selected) # Check if previously selectedCODE
LOW…age/gui/ytsage_gui_dialogs/ytsage_dialogs_selection.py470 # Check if all items are selectedCOMMENT
Unused Imports58 hits · 54 pts
SeverityFileLineSnippetContext
LOWytsage/core/ytsage_deno.py2CODE
LOWytsage/core/ytsage_deno.py24CODE
LOWytsage/gui/ytsage_gui_main.py3CODE
LOWytsage/gui/ytsage_gui_main.py10CODE
LOWytsage/gui/ytsage_gui_main.py10CODE
LOWytsage/gui/ytsage_gui_main.py39CODE
LOWytsage/gui/ytsage_gui_main.py42CODE
LOWytsage/gui/ytsage_gui_main.py70CODE
LOWytsage/gui/ytsage_gui_analysis.py5CODE
LOWytsage/gui/ytsage_gui_analysis.py5CODE
LOWytsage/gui/ytsage_gui_analysis.py5CODE
LOWytsage/gui/ytsage_gui_analysis.py8CODE
LOWytsage/gui/ytsage_gui_analysis.py15CODE
LOWytsage/gui/ytsage_smooth_tab_widget.py2CODE
LOWytsage/gui/ytsage_gui_video_info.py21CODE
LOWytsage/gui/ytsage_gui_format_table.py10CODE
LOWytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_history.py8CODE
LOWytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_history.py9CODE
LOWytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_history.py12CODE
LOWytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_history.py12CODE
LOWytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_history.py12CODE
LOWytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_history.py20CODE
LOWytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_history.py20CODE
LOWytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_history.py20CODE
LOWytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_history.py20CODE
LOWytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_history.py24CODE
LOWytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_history.py24CODE
LOWytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_history.py46CODE
LOWytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_update.py19CODE
LOWytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_update.py19CODE
LOW…sage/gui/ytsage_gui_dialogs/ytsage_dialogs_settings.py10CODE
LOW…sage/gui/ytsage_gui_dialogs/ytsage_dialogs_settings.py11CODE
LOW…sage/gui/ytsage_gui_dialogs/ytsage_dialogs_settings.py12CODE
LOW…sage/gui/ytsage_gui_dialogs/ytsage_dialogs_settings.py13CODE
LOW…sage/gui/ytsage_gui_dialogs/ytsage_dialogs_settings.py36CODE
LOWytsage/gui/ytsage_gui_dialogs/__init__.py15CODE
LOWytsage/gui/ytsage_gui_dialogs/__init__.py15CODE
LOWytsage/gui/ytsage_gui_dialogs/__init__.py16CODE
LOWytsage/gui/ytsage_gui_dialogs/__init__.py16CODE
LOWytsage/gui/ytsage_gui_dialogs/__init__.py17CODE
LOWytsage/gui/ytsage_gui_dialogs/__init__.py17CODE
LOWytsage/gui/ytsage_gui_dialogs/__init__.py18CODE
LOWytsage/gui/ytsage_gui_dialogs/__init__.py19CODE
LOWytsage/gui/ytsage_gui_dialogs/__init__.py19CODE
LOWytsage/gui/ytsage_gui_dialogs/__init__.py19CODE
LOWytsage/gui/ytsage_gui_dialogs/__init__.py24CODE
LOWytsage/gui/ytsage_gui_dialogs/__init__.py24CODE
LOWytsage/gui/ytsage_gui_dialogs/__init__.py25CODE
LOWytsage/gui/ytsage_gui_dialogs/__init__.py25CODE
LOWytsage/gui/ytsage_gui_dialogs/__init__.py25CODE
LOWytsage/gui/ytsage_gui_dialogs/__init__.py25CODE
LOWytsage/gui/ytsage_gui_dialogs/__init__.py26CODE
LOWytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_custom.py11CODE
LOWytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_custom.py11CODE
LOWytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_custom.py12CODE
LOWytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_updater.py13CODE
LOWytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_updater.py26CODE
LOWytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_updater.py44CODE
Hyper-Verbose Identifiers44 hits · 43 pts
SeverityFileLineSnippetContext
LOWytsage/core/ytsage_yt_dlp.py717def check_ytdlp_deno_integration() -> bool:CODE
LOWytsage/core/ytsage_utils.py108def load_version_cache_from_config() -> None:CODE
LOWytsage/core/ytsage_utils.py122def save_version_cache_to_config() -> None:CODE
LOWytsage/core/ytsage_utils.py155def get_ffmpeg_version_cached() -> str:CODE
LOWytsage/core/ytsage_utils.py552def should_check_for_auto_update() -> bool:CODE
LOWytsage/core/ytsage_utils.py267def get_ffmpeg_version_direct() -> str:CODE
LOWytsage/core/ytsage_utils.py582def check_and_update_ytdlp_auto() -> bool:CODE
LOWytsage/core/ytsage_utils.py654def update_auto_update_settings(enabled: bool, frequency: str) -> bool:CODE
LOWytsage/gui/ytsage_gui_main.py355 def _initialize_cookie_settings_from_config(self) -> None:CODE
LOWytsage/gui/ytsage_gui_main.py697 def _get_speed_limit_tooltip_text(self) -> str:CODE
LOWytsage/gui/ytsage_gui_main.py120 def _fetch_github_beta_version(self) -> tuple[str | None, str | None, str | None]:CODE
LOWytsage/gui/ytsage_gui_main.py724 def show_download_settings_dialog(self) -> None: # Renamed methodCODE
LOWytsage/gui/ytsage_gui_main.py1371 def handle_redownload_from_history(self, entry: dict) -> None:CODE
LOWytsage/gui/ytsage_gui_main.py1468 def open_playlist_selection_dialog(self) -> None:CODE
LOWytsage/gui/ytsage_gui_main.py1595 def toggle_analysis_dependent_controls(self, enabled=True) -> None:CODE
LOWytsage/gui/ytsage_gui_main.py1901 def set_widget_visible_animated(self, widget: QWidget, visible: bool) -> None:CODE
LOWytsage/gui/ytsage_gui_main.py1939 def set_status_message_animated(self, message: str) -> None:CODE
LOWytsage/gui/ytsage_gui_analysis.py98 def _analyze_url_with_subprocess(self, url: str) -> None:CODE
LOWytsage/gui/ytsage_gui_analysis.py345 def _handle_analysis_progress(self, value: int) -> None:CODE
LOWytsage/gui/ytsage_gui_video_info.py213 def setup_playlist_info_section(self) -> QLabel:CODE
LOWytsage/gui/ytsage_gui_video_info.py364 def _update_sponsorblock_display(self) -> None:CODE
LOWytsage/gui/ytsage_gui_format_table.py308 def _build_playlist_preset_table(self) -> None:CODE
LOWytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_history.py477 def on_context_menu_requested(self, pos):STRING
LOWytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_update.py256 def on_version_check_finished(self, current_version, latest_version, error_message) -> None:CODE
LOW…sage/gui/ytsage_gui_dialogs/ytsage_dialogs_settings.py561 def get_force_audio_format_enabled(self) -> bool:CODE
LOW…sage/gui/ytsage_gui_dialogs/ytsage_dialogs_settings.py565 def get_preferred_audio_format(self) -> str:CODE
LOW…sage/gui/ytsage_gui_dialogs/ytsage_dialogs_settings.py570 def get_audio_normalization_enabled(self) -> bool:CODE
LOW…sage/gui/ytsage_gui_dialogs/ytsage_dialogs_settings.py578 def _create_styled_message_box(self, icon, title, text) -> QMessageBox:CODE
LOW…sage/gui/ytsage_gui_dialogs/ytsage_dialogs_settings.py499 def _on_audio_normalization_toggled(self, state: int) -> None:CODE
LOW…sage/gui/ytsage_gui_dialogs/ytsage_dialogs_settings.py509 def _on_force_audio_format_toggled(self, state: int) -> None:CODE
LOW…sage/gui/ytsage_gui_dialogs/ytsage_dialogs_settings.py926 def _create_styled_message_box(self, icon, title, text) -> QMessageBox:CODE
LOWytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_custom.py678 def _initialize_cookie_settings(self) -> None:CODE
LOWytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_custom.py707 def _update_cookies_active_status(self) -> None:CODE
LOWytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_custom.py723 def _initialize_proxy_settings(self) -> None:CODE
LOWytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_custom.py823 def get_browser_cookies_option(self) -> str | None:CODE
LOWytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_base.py260 def _create_system_info_section(self) -> QWidget:CODE
LOWytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_updater.py48def get_latest_ffmpeg_version() -> Optional[str]:CODE
LOWytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_updater.py732 def get_app_update_checker_setting(self) -> bool:CODE
LOWytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_updater.py912 def _on_ffmpeg_check_finished(self, update_available, current_version, latest_version):CODE
LOWytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_updater.py984 def _update_deno_check_results(self, update_available: bool, current_version: str, latest_version: str) -> None:CODE
LOWytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_updater.py1066 def _handle_deno_update_result(self, success: bool, output: str) -> None:CODE
LOWytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_updater.py674 def _load_auto_update_settings(self) -> None:STRING
LOW…age/gui/ytsage_gui_dialogs/ytsage_dialogs_selection.py466 def get_selected_items_string(self) -> str | None:CODE
LOW…age/gui/ytsage_gui_dialogs/ytsage_dialogs_selection.py727 def get_selected_categories_string(self) -> str:CODE
Deep Nesting52 hits · 42 pts
SeverityFileLineSnippetContext
LOWytsage/core/ytsage_deno.py37CODE
LOWytsage/core/ytsage_deno.py479CODE
LOWytsage/core/ytsage_deno.py523CODE
LOWytsage/core/ytsage_deno.py686CODE
LOWytsage/core/ytsage_deno.py117CODE
LOWytsage/core/ytsage_yt_dlp.py44CODE
LOWytsage/core/ytsage_yt_dlp.py626CODE
LOWytsage/core/ytsage_yt_dlp.py717CODE
LOWytsage/core/ytsage_yt_dlp.py111CODE
LOWytsage/core/ytsage_yt_dlp.py400CODE
LOWytsage/core/ytsage_ffmpeg.py30CODE
LOWytsage/core/ytsage_ffmpeg.py88CODE
LOWytsage/core/ytsage_ffmpeg.py197CODE
LOWytsage/core/ytsage_ffmpeg.py418CODE
LOWytsage/core/ytsage_ffmpeg.py455CODE
LOWytsage/core/ytsage_utils.py267CODE
LOWytsage/core/ytsage_utils.py330CODE
LOWytsage/core/ytsage_utils.py373CODE
LOWytsage/core/ytsage_utils.py432CODE
LOWytsage/core/ytsage_utils.py552CODE
LOWytsage/core/ytsage_utils.py582CODE
LOWytsage/core/ytsage_downloader.py236CODE
LOWytsage/core/ytsage_downloader.py435CODE
LOWytsage/core/ytsage_downloader.py459CODE
LOWytsage/core/ytsage_downloader.py616CODE
LOWytsage/utils/ytsage_history_manager.py122CODE
LOWytsage/utils/ytsage_history_manager.py201CODE
LOWytsage/utils/ytsage_history_manager.py248CODE
LOWytsage/utils/ytsage_history_manager.py389CODE
LOWytsage/utils/ytsage_config_manager.py109CODE
LOWytsage/gui/ytsage_gui_main.py120CODE
LOWytsage/gui/ytsage_gui_main.py158CODE
LOWytsage/gui/ytsage_gui_main.py355CODE
LOWytsage/gui/ytsage_gui_main.py788CODE
LOWytsage/gui/ytsage_gui_main.py950CODE
LOWytsage/gui/ytsage_gui_main.py1035CODE
LOWytsage/gui/ytsage_gui_main.py1491CODE
LOWytsage/gui/ytsage_gui_main.py1595CODE
LOWytsage/gui/ytsage_gui_analysis.py381CODE
LOWytsage/gui/ytsage_gui_video_info.py293CODE
LOWytsage/gui/ytsage_gui_format_table.py229CODE
LOWytsage/gui/ytsage_gui_format_table.py308CODE
LOWytsage/gui/ytsage_gui_format_table.py384CODE
LOWytsage/gui/ytsage_gui_format_table.py651CODE
LOWytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_history.py55CODE
LOWytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_history.py113CODE
LOWytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_update.py376CODE
LOW…sage/gui/ytsage_gui_dialogs/ytsage_dialogs_settings.py856CODE
LOWytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_updater.py736CODE
LOWytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_updater.py765CODE
LOW…age/gui/ytsage_gui_dialogs/ytsage_dialogs_selection.py339CODE
LOW…age/gui/ytsage_gui_dialogs/ytsage_dialogs_selection.py370CODE
Self-Referential Comments9 hits · 27 pts
SeverityFileLineSnippetContext
MEDIUM.github/workflows/build-linux.yml496 # Create a specific desktop file for FlatpakCOMMENT
MEDIUMytsage/core/ytsage_utils.py468 # Create a temporary fileCOMMENT
MEDIUMytsage/gui/ytsage_gui_main.py656 # Create a horizontal layout for status label and open folder buttonCOMMENT
MEDIUMytsage/gui/ytsage_gui_main.py2030 # Create a QGraphicsScene to apply the effect to the pixmapCOMMENT
MEDIUMytsage/gui/ytsage_gui_video_info.py48 # Create a horizontal layout for thumbnail and video infoCOMMENT
MEDIUMytsage/gui/ytsage_gui_format_table.py434 # Create a container widget for the checkboxCOMMENT
MEDIUMytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_base.py262 # Create main container with compact stylingCOMMENT
MEDIUMytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_updater.py228 # Create a widget to hold all contentCOMMENT
MEDIUM…age/gui/ytsage_gui_dialogs/ytsage_dialogs_selection.py567 # Create a container widget for each categoryCOMMENT
Cross-File Repetition5 hits · 25 pts
SeverityFileLineSnippetContext
HIGHytsage/core/ytsage_deno.py0qmessagebox { background-color: #15181b; color: #ffffff; } qmessagebox qlabel { color: #ffffff; } qmessagebox qpushbuttoSTRING
HIGHytsage/core/ytsage_yt_dlp.py0qmessagebox { background-color: #15181b; color: #ffffff; } qmessagebox qlabel { color: #ffffff; } qmessagebox qpushbuttoSTRING
HIGHytsage/gui/ytsage_stylesheet.py0qmessagebox { background-color: #15181b; color: #ffffff; } qmessagebox qlabel { color: #ffffff; } qmessagebox qpushbuttoSTRING
HIGH…sage/gui/ytsage_gui_dialogs/ytsage_dialogs_settings.py0qmessagebox { background-color: #15181b; color: #ffffff; } qmessagebox qlabel { color: #ffffff; } qmessagebox qpushbuttoSTRING
HIGHytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_base.py0qmessagebox { background-color: #15181b; color: #ffffff; } qmessagebox qlabel { color: #ffffff; } qmessagebox qpushbuttoSTRING
Modern Structural Boilerplate26 hits · 24 pts
SeverityFileLineSnippetContext
LOWytsage/core/ytsage_deno.py364 def update_progress(self, value) -> None:CODE
LOWytsage/core/ytsage_deno.py367 def update_status(self, status: str) -> None:CODE
LOWytsage/core/ytsage_yt_dlp.py357 def update_progress(self, value) -> None:CODE
LOWytsage/core/ytsage_utils.py91def update_version_cache(tool_name: str, version_info: str, path: Optional[str], force_save: bool = False) -> None:CODE
LOWytsage/utils/ytsage_logger.py56__all__ = ["logger"]CODE
LOWytsage/utils/ytsage_localization.py237 def set_language(cls, language_code: str) -> None:CODE
LOWytsage/gui/ytsage_gui_main.py703 def _update_settings_tooltip(self) -> None:CODE
LOWytsage/gui/ytsage_gui_main.py713 def _update_url_placeholder(self) -> None:CODE
LOWytsage/gui/ytsage_gui_main.py1090 def update_progress_bar(self, value) -> None:CODE
LOWytsage/gui/ytsage_gui_main.py1901 def set_widget_visible_animated(self, widget: QWidget, visible: bool) -> None:CODE
LOWytsage/gui/ytsage_gui_main.py1939 def set_status_message_animated(self, message: str) -> None:CODE
LOWytsage/gui/ytsage_gui_analysis.py363 def _update_fake_progress(self) -> None:CODE
LOWytsage/gui/ytsage_gui_video_info.py236 def update_video_info(self, info) -> None:CODE
LOWytsage/gui/ytsage_gui_video_info.py364 def _update_sponsorblock_display(self) -> None:CODE
LOWytsage/gui/ytsage_gui_format_table.py614 def _update_format_table(self, formats) -> None:CODE
LOWytsage/gui/ytsage_gui_format_table.py644 def update_format_table(self, formats) -> None:CODE
LOWytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_ffmpeg.py174 def update_progress(self, message) -> None:CODE
LOW…sage/gui/ytsage_gui_dialogs/ytsage_dialogs_settings.py856 def update_next_check_label(self) -> None:CODE
LOWytsage/gui/ytsage_gui_dialogs/__init__.py28__all__ = [CODE
LOWytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_custom.py707 def _update_cookies_active_status(self) -> None:CODE
LOWytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_base.py464 def update_system_info(self) -> None:CODE
LOWytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_updater.py881 def _update_channel_status(self, channel: str) -> None:CODE
LOWytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_updater.py921 def _update_check_results(self, update_available: bool, current_version: str, latest_version: str) -> None:CODE
LOWytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_updater.py984 def _update_deno_check_results(self, update_available: bool, current_version: str, latest_version: str) -> None:CODE
LOWytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_updater.py1020 def update_deno(self) -> None:CODE
LOW…age/gui/ytsage_gui_dialogs/ytsage_dialogs_selection.py178 def update_selection(self, state) -> None:CODE
AI Slop Vocabulary3 hits · 8 pts
SeverityFileLineSnippetContext
MEDIUMytsage/core/ytsage_downloader.py627 # Use a slightly more robust regex looking for the start of the lineCOMMENT
LOWytsage/utils/ytsage_history_manager.py63 # Check if file exists to know if we need to migrate or just create schemaCOMMENT
LOWytsage/gui/ytsage_gui_main.py1733 # Keep these methods for backwards compatibility - they just call the new dialog nowCOMMENT
Decorative Section Separators2 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUMytsage/utils/ytsage_constants.py185# =============================================================================COMMENT
MEDIUMytsage/utils/ytsage_constants.py187# =============================================================================COMMENT
AI Structural Patterns1 hit · 0 pts
SeverityFileLineSnippetContext
LOWytsage/core/ytsage_downloader.py48CODE