Repository Analysis

Guovin/iptv-api

⚡️IPTV直播源自动更新平台『🤖全自动采集、筛选、测速、生成🚀』:自定义获取频道;IPv4/IPv6;接口验效;推流;多平台支持;工作流、Docker、命令行、GUI多端部署 | IPTV live streaming source automatic update platform

22.6 Moderate AI signal View on GitHub
22.6
Adjusted Score
22.6
Raw Score
100%
Time Factor
2026-05-16
Last Push
23,946
Stars
Python
Language
14,126
Lines of Code
78
Files
260
Pattern Hits
2026-05-31
Scan Date

Score History

Severity Breakdown

CRITICAL 0HIGH 0MEDIUM 27LOW 233

Pattern Findings

260 matches across 6 categories. Click a row to expand file-level details.

Excessive Try-Catch Wrapping153 hits · 179 pts
SeverityFileLineSnippet
LOWmain.py102 except Exception:
LOWutils/db.py21 except Exception:
LOWutils/db.py41 except Exception:
LOWutils/db.py44 except Exception:
LOWutils/db.py53 except Exception:
LOWutils/db.py115 except Exception:
LOWutils/db.py126 except Exception:
LOWutils/db.py133 except Exception:
LOWutils/db.py140 except Exception:
LOWutils/db.py145 except Exception:
LOWutils/db.py151 except Exception:
LOWutils/db.py155 except Exception:
LOWutils/db.py161 except Exception:
LOWutils/config.py21 except Exception:
LOWutils/config.py336 except Exception:
LOWutils/config.py458 except Exception as e:
LOWutils/aggregator.py61 except Exception:
LOWutils/aggregator.py65 except Exception:
LOWutils/aggregator.py88 except Exception:
LOWutils/aggregator.py107 except Exception:
LOWutils/aggregator.py161 except Exception:
LOWutils/aggregator.py169 except Exception:
LOWutils/aggregator.py249 except Exception:
LOWutils/aggregator.py284 except Exception:
LOWutils/speed.py177 except Exception:
LOWutils/speed.py248 except Exception:
LOWutils/speed.py251 except Exception:
LOWutils/speed.py264 except Exception:
LOWutils/speed.py287 except Exception as e:
LOWutils/speed.py317 except Exception:
LOWutils/speed.py335 except Exception:
LOWutils/speed.py365 except Exception:
LOWutils/speed.py382 except Exception:
LOWutils/speed.py391 except Exception:
LOWutils/speed.py412 except Exception:
LOWutils/speed.py486 except Exception:
MEDIUMutils/tools.py118 print(f"Error: {e}")
LOWutils/tools.py48 except Exception:
LOWutils/tools.py57 except Exception:
LOWutils/tools.py75 except Exception:
LOWutils/tools.py117 except Exception as e:
LOWutils/tools.py297 except Exception:
LOWutils/tools.py344 except Exception:
LOWutils/tools.py601 except Exception:
LOWutils/tools.py809 except Exception:
LOWutils/tools.py921 except Exception:
LOWutils/tools.py1032 except Exception:
LOWutils/tools.py1087 except Exception:
LOWutils/tools.py1149 except Exception:
LOWutils/tools.py1169 except Exception:
LOWutils/tools.py1173 except Exception as e:
LOWutils/tools.py1374 except Exception as e:
LOWutils/tools.py1384 except Exception:
LOWutils/channel.py1096 except Exception:
LOWutils/channel.py1098 except Exception:
LOWutils/channel.py1102 except Exception as e:
LOWutils/channel.py1107 except Exception as e:
LOWutils/channel.py342 except Exception:
LOWutils/channel.py367 except Exception as e:
LOWutils/channel.py568 except Exception as e:
93 more matches not shown…
Decorative Section Separators18 hits · 60 pts
SeverityFileLineSnippet
MEDIUMmain.py93 # ----------------------------
MEDIUMmain.py95 # ----------------------------
MEDIUMmain.py200 # ----------------------------
MEDIUMmain.py202 # ----------------------------
MEDIUMmain.py72 # ----------------------------
MEDIUMmain.py74 # ----------------------------
MEDIUMmain.py113 # ----------------------------
MEDIUMmain.py115 # ----------------------------
MEDIUMmain.py129 # ----------------------------
MEDIUMmain.py131 # ----------------------------
MEDIUMmain.py218 # ----------------------------
MEDIUMmain.py220 # ----------------------------
MEDIUMmain.py273 # ----------------------------
MEDIUMmain.py275 # ----------------------------
MEDIUMmain.py301 # ----------------------------
MEDIUMmain.py303 # ----------------------------
MEDIUMmain.py357 # ----------------------------
MEDIUMmain.py359 # ----------------------------
Hyper-Verbose Identifiers32 hits · 34 pts
SeverityFileLineSnippet
LOWmain.py194 def _write_epg_files_if_needed(self):
LOWutils/db.py80def ensure_result_data_schema(db_path):
LOWutils/aggregator.py54 def _ensure_debounce_task_in_loop(self, loop: asyncio.AbstractEventLoop) -> None:
LOWutils/aggregator.py68 def _create_debounce_task_threadsafe(self) -> None:
LOWutils/aggregator.py110 async def _atomic_write_sorted_view(
LOWutils/whitelist.py118def get_whitelist_total_count(data_map: WhitelistMaps) -> int:
LOWutils/tools.py273def get_total_urls_from_sorted_data(data):
LOWutils/tools.py526def remove_duplicates_from_list(data_list, seen, filter_host=False, ipv6_support=True):
LOWutils/tools.py1130def sanitize_filename_from_url(url: str, max_len: int = 200) -> str:
LOWutils/channel.py73def _build_total_urls_signature(info_list: list[ChannelData]) -> str:
LOWutils/channel.py156def check_channel_need_frozen(info) -> bool:
LOWutils/channel.py169def get_channel_data_from_file(channels, file, whitelist_maps, blacklist,
LOWutils/channel.py401def get_channel_results_by_name(name, data):
LOWutils/channel.py573def append_old_data_to_info_data(info_data, cate, name, data, whitelist_maps=None, blacklist=None, ipv_type_data=None):
LOWutils/channel.py767 def _cancel_remaining_channel_tasks(cate, name):
LOWutils/channel.py924def generate_channel_statistic(logger, cate, name, values):
LOWutils/ffmpeg/ffmpeg.py13def check_ffmpeg_installed_status():
LOWupdates/subscribe/request.py28async def get_channels_by_subscribe_urls(
LOWupdates/subscribe/request.py93 def process_subscribe_channels(subscribe_info: str | dict) -> defaultdict:
LOWtkinter_ui/speed.py170 def update_speed_test_timeout(self, event):
LOWtkinter_ui/speed.py183 def update_open_filter_resolution(self):
LOWtkinter_ui/speed.py196 def update_speed_test_filter_host(self, event):
LOWtkinter_ui/tkinter_ui.py77 def view_result_link_callback(self, event):
LOWtkinter_ui/default.py555 def update_open_empty_category(self):
LOWtkinter_ui/default.py568 def update_update_time_position(self, event):
LOWtkinter_ui/prefer.py86 def get_origin_type_prefer_index(self, origin_type_prefer):
LOWservice/rtmp.py112def invalidate_video_encoder_args_cache():
LOWservice/rtmp.py123def _get_video_encoder_candidates():
LOWservice/rtmp.py39def _save_probe_metadata_to_db(channel_id: str, url: str, headers: dict | None, meta: dict | None):
LOWservice/rtmp.py76def ensure_hls_idle_monitor_started():
LOWservice/rtmp.py196 def _client_needs_transcode_for_codec(user_agent: str | None, video_codec: str | None) -> bool:
LOWservice/rtmp.py254 def _audio_compatible_with_flv(audio_codec: str | None) -> bool:
Deep Nesting45 hits · 34 pts
SeverityFileLineSnippet
LOWmain.py394
LOWutils/db.py80
LOWutils/alias.py9
LOWutils/alias.py61
LOWutils/config.py403
LOWutils/config.py435
LOWutils/aggregator.py75
LOWutils/aggregator.py110
LOWutils/speed.py44
LOWutils/speed.py181
LOWutils/speed.py292
LOWutils/speed.py455
LOWutils/speed.py504
LOWutils/whitelist.py23
LOWutils/whitelist.py136
LOWutils/tools.py33
LOWutils/tools.py321
LOWutils/tools.py441
LOWutils/tools.py651
LOWutils/tools.py771
LOWutils/tools.py792
LOWutils/tools.py957
LOWutils/tools.py1153
LOWutils/tools.py1177
LOWutils/tools.py1265
LOWutils/tools.py347
LOWutils/channel.py169
LOWutils/channel.py295
LOWutils/channel.py428
LOWutils/channel.py620
LOWutils/channel.py865
LOWutils/channel.py968
LOWutils/retry.py8
LOWutils/frozen.py71
LOWutils/ffmpeg/ffmpeg.py35
LOWutils/ffmpeg/probe.py61
LOWutils/ffmpeg/probe.py185
LOWupdates/subscribe/request.py28
LOWupdates/subscribe/request.py93
LOWupdates/epg/request.py93
LOWupdates/epg/request.py148
LOWservice/rtmp.py146
LOWservice/rtmp.py418
LOWservice/app.py228
LOWservice/app.py291
Unused Imports10 hits · 10 pts
SeverityFileLineSnippet
LOWutils/ffmpeg/__init__.py1
LOWutils/ffmpeg/__init__.py1
LOWutils/ffmpeg/__init__.py2
LOWutils/ffmpeg/__init__.py2
LOWutils/ffmpeg/__init__.py2
LOWutils/ip_checker/__init__.py1
LOWupdates/subscribe/__init__.py1
LOWupdates/epg/__init__.py1
LOWupdates/epg/__init__.py2
LOWupdates/epg/__init__.py2
Over-Commented Block2 hits · 2 pts
SeverityFileLineSnippet
LOWconfig/whitelist.txt1# 这是接口的白名单,白名单内的接口将不会参与测速,始终保留至结果最前;
LOWconfig/local.txt1# 这是本地源列表,一行一个源,格式为:频道名称,接口地址