| LOW | app/ytdl.py | 87 | def _sanitize_entry_for_pickle(obj, _depth=0): |
| LOW | app/ytdl.py | 358 | def _download_info_from_record(record: dict[str, Any]) -> DownloadInfo: |
| LOW | app/subscriptions.py | 130 | def _is_subscriber_only_entry(entry: dict) -> bool: |
| LOW | app/subscriptions.py | 225 | def _normalize_subscription_record(rec: dict[str, Any]) -> dict[str, Any]: |
| LOW | app/subscriptions.py | 243 | def _subscription_from_record(record: Any) -> Optional[SubscriptionInfo]: |
| LOW | app/subscriptions.py | 256 | def _normalize_title_regex_value(value: Any) -> str: |
| LOW | app/subscriptions.py | 372 | async def _queue_subscription_entries( |
| LOW | app/dl_formats.py | 19 | def _normalize_subtitle_language(language: str) -> str: |
| LOW | app/main.py | 245 | def _parse_ytdl_options_overrides(value, *, enabled: bool) -> dict: |
| LOW | app/main.py | 309 | def _parse_clip_timestamp_value(value) -> float: |
| LOW | app/main.py | 339 | def _clip_field_provided_in_post(raw) -> bool: |
| LOW | app/main.py | 347 | def _extract_t_query_from_url(url: str) -> tuple[str, float | None]: |
| LOW | app/main.py | 373 | def _parse_ytdl_options_presets(post: dict) -> list[str]: |
| LOW | app/main.py | 492 | async def _subscription_loop_startup(app): |
| LOW | app/tests/test_state_store.py | 12 | def test_save_and_load_roundtrip(self): |
| LOW | app/tests/test_state_store.py | 24 | def test_invalid_file_is_quarantined(self): |
| LOW | app/tests/test_state_store.py | 38 | def test_json_compat_helpers_roundtrip_bytes_and_datetime(self): |
| LOW | app/tests/test_subscriptions.py | 84 | def test_is_subscriber_only_detects_availability(self): |
| LOW | app/tests/test_subscriptions.py | 89 | def test_coerce_optional_bool_defaults_and_fields(self): |
| LOW | app/tests/test_subscriptions.py | 98 | def test_load_imports_legacy_subscription_shelf(self): |
| LOW | app/tests/test_subscriptions.py | 121 | def test_invalid_json_is_quarantined_and_legacy_is_imported(self): |
| LOW | app/tests/test_subscriptions.py | 144 | def test_load_rewrites_old_json_and_trims_seen_ids(self): |
| LOW | app/tests/test_subscriptions.py | 193 | async def test_add_subscription_rolls_back_when_state_write_fails(self): |
| LOW | app/tests/test_subscriptions.py | 233 | async def test_add_subscription_marks_existing_videos_seen_without_queueing(self): |
| LOW | app/tests/test_subscriptions.py | 272 | async def test_add_subscription_skips_collection_tab_entries(self): |
| LOW | app/tests/test_subscriptions.py | 322 | async def test_check_now_keeps_failed_queue_items_unseen_and_sets_error(self): |
| LOW | app/tests/test_subscriptions.py | 363 | async def test_check_now_queues_new_video_and_updates_seen_ids(self): |
| LOW | app/tests/test_subscriptions.py | 408 | async def test_check_now_queues_subscriber_only_when_skip_disabled(self): |
| LOW | app/tests/test_subscriptions.py | 459 | async def test_check_now_skips_subscriber_only_when_skip_enabled(self): |
| LOW | app/tests/test_subscriptions.py | 510 | async def test_update_subscription_parses_string_false_enabled(self): |
| LOW | app/tests/test_subscriptions.py | 544 | async def test_update_subscription_rejects_invalid_enabled_value(self): |
| LOW | app/tests/test_subscriptions.py | 577 | async def test_add_subscription_rejects_invalid_title_regex(self): |
| LOW | app/tests/test_subscriptions.py | 608 | async def test_add_subscription_stores_and_exposes_title_regex(self): |
| LOW | app/tests/test_subscriptions.py | 640 | async def test_check_now_title_regex_queues_only_matches_and_marks_unmatched_seen(self): |
| LOW | app/tests/test_subscriptions.py | 695 | async def test_check_now_title_regex_queue_failure_keeps_matched_id_unseen(self): |
| LOW | app/tests/test_subscriptions.py | 747 | async def test_update_subscription_rejects_invalid_title_regex(self): |
| LOW | app/tests/test_subscriptions.py | 779 | async def test_update_subscription_persists_valid_title_regex(self): |
| LOW | app/tests/test_subscriptions.py | 812 | async def test_update_subscription_skip_subscriber_only(self): |
| LOW | app/tests/test_subscriptions.py | 846 | async def test_update_subscription_rejects_invalid_skip_subscriber_only(self): |
| LOW | app/tests/test_subscriptions.py | 878 | def test_persistence_includes_title_regex(self): |
| LOW | app/tests/test_subscriptions.py | 920 | def test_persistence_includes_skip_subscriber_only(self): |
| LOW | app/tests/test_subscriptions.py | 964 | def test_descends_one_level_when_root_entries_are_nested_collections(self): |
| LOW | app/tests/test_dl_formats.py | 17 | def test_audio_unknown_format_raises_value_error(self): |
| LOW | app/tests/test_dl_formats.py | 21 | def test_wav_does_not_enable_thumbnail_postprocessing(self): |
| LOW | app/tests/test_dl_formats.py | 29 | def test_custom_format_passthrough(self): |
| LOW | app/tests/test_dl_formats.py | 32 | def test_thumbnail_and_captions_format_strings(self): |
| LOW | app/tests/test_dl_formats.py | 41 | def test_video_unknown_format_raises(self): |
| LOW | app/tests/test_dl_formats.py | 45 | def test_unknown_download_type_raises(self): |
| LOW | app/tests/test_dl_formats.py | 64 | def test_video_ios_selector_contains_avc_pattern(self): |
| LOW | app/tests/test_dl_formats.py | 68 | def test_get_opts_deepcopy_does_not_mutate_input(self): |
| LOW | app/tests/test_dl_formats.py | 84 | def test_get_opts_thumbnail_skip_download(self): |
| LOW | app/tests/test_dl_formats.py | 89 | def test_get_opts_captions_manual_only(self): |
| LOW | app/tests/test_dl_formats.py | 97 | def test_get_opts_captions_auto_only(self): |
| LOW | app/tests/test_dl_formats.py | 105 | def test_get_opts_captions_prefer_auto(self): |
| LOW | app/tests/test_dl_formats.py | 113 | def test_get_opts_captions_prefer_manual_default_branch(self): |
| LOW | app/tests/test_dl_formats.py | 119 | def test_get_opts_captions_txt_maps_to_srt_format(self): |
| LOW | app/tests/test_dl_formats.py | 123 | def test_get_opts_merges_existing_postprocessors(self): |
| LOW | app/tests/test_dl_formats.py | 129 | def test_normalize_caption_mode_invalid_defaults(self): |
| LOW | app/tests/test_dl_formats.py | 133 | def test_normalize_subtitle_language_empty_defaults_en(self): |
| LOW | app/tests/test_config.py | 21 | def test_url_prefix_gets_trailing_slash(self): |
| 88 more matches not shown… |