kingoftech-v01/tracking-project

GitHub: kingoftech-v01/tracking-project

这是一个基于Python和Tkinter的国际电话号码分析工具,能够解析归属地、运营商信息并通过地图展示大致地理坐标。

Stars: 0 | Forks: 0

# Phone Number 分析器 一个用于分析国际电话号码的小型 Python 工具。给定任意 E.164 号码(例如 `+14155552671`),该工具将报告: - **国家**和**地区**(来自 Google 的 `libphonenumber`,通过 `phonenumbers` 库) - **网络运营商**名称(在数据库有数据的情况下) - **可能的时区**(IANA 名称,如 `America/Los_Angeles`) - **大致 GPS 坐标**——通过 [OpenCage Geocoding API](https://opencagedata.com/) 对地区名称进行地理编码解析 - **交互式 HTML 地图**——使用 [Folium](https://python-visualization.github.io/folium/) 生成并在默认浏览器中自动打开 所有这些功能通过一个简单的 [Tkinter](https://docs.python.org/3/library/tkinter.html) 桌面 GUI 呈现。 ## 项目布局 ``` tracking-project/ ├── phone_analyzer.py # Pure business logic: analyze_number, generate_map, │ # api_key_from_env, PhoneAnalysis dataclass ├── app.py # Tkinter GUI: PhoneAnalyzerApp class + main() ├── tests/ │ ├── test_analyzer.py # Tests for phone_analyzer.py (100 % coverage) │ └── test_app.py # Tests for app.py (100 % coverage, headless-safe) ├── requirements.txt # Runtime dependencies (pinned) ├── requirements-dev.txt # Dev dependencies: pytest, ruff, mypy └── pyproject.toml # Tool configuration (ruff, mypy, pytest, coverage) ``` ## 安装 ``` git clone https://github.com/kingoftech-v01/tracking-project.git cd tracking-project pip install -r requirements.txt ``` 运行时依赖: | Package | Version | Purpose | |---------|---------|---------| | `phonenumbers` | 8.13.45 | 号码解析、地理编码、运营商、时区查询 | | `opencage` | 2.4.0 | 正向地理编码(地区名称 → GPS 坐标) | | `folium` | 0.17.0 | HTML 地图生成 | Tkinter 是 Python 标准库的一部分——在大多数平台上无需额外安装。 在最小化的 Linux 安装中,您可能需要运行 `apt install python3-tk`。 ## 配置 OpenCage API 密钥从 `OPENCAGE_KEY` 环境变量中读取。 如果未设置该变量,则跳过地理编码,纬度/经度 字段将为空(不生成地图)。 1. 在 创建一个免费账户并复制您的 API 密钥。 2. 在运行程序之前导出它: ``` export OPENCAGE_KEY=your_api_key_here ``` 或者内联传递它以进行一次性运行: ``` OPENCAGE_KEY=your_api_key_here python app.py ``` ## 用法 ``` python app.py ``` 在 GUI 窗口中: 1. 输入带有国家代码的完整国际电话号码 (例如 `+14155552671`)。 2. 点击 **Analyze**。 3. 结果面板将显示国家、地区、运营商、时区,以及 (如果地理编码成功)坐标和已保存地图的路径。 地图 HTML 文件也会在默认浏览器中自动打开。 ## 示例输出 ``` Country : United States Region : California Carrier : AT&T Wireless Timezones : America/Los_Angeles Latitude : 36.7783 Longitude : -119.4179 Map saved : phone_location.html ``` ## 运行测试 安装开发依赖: ``` pip install -r requirements-dev.txt ``` 运行包含分支覆盖率的完整测试套件: ``` pytest --cov=. --cov-report=term-missing ``` 所有测试都是自包含的——不需要真实的 API 密钥、网络访问或 显示器。外部 I/O(OpenCage、Folium、Tkinter)已被模拟。 ## 代码检查和类型检查 ``` ruff check . # style and security lint mypy phone_analyzer.py app.py # strict static type checking ``` ## 限制 - **仅为大致位置**——坐标指向国家行政区划的地理 中心,而非任何真实设备的位置。 - **无实时跟踪**——该工具无法确定电话在任意给定时刻的位置。 - **运营商数据缺失**——`phonenumbers` 运营商数据库 不完整;许多号码返回空字符串。 - **仅供教育使用**——未经用户同意,请勿使用此工具查询号码。 ## 贡献 1. Fork 该仓库并创建一个功能分支。 2. 为任何新逻辑编写测试;覆盖率阈值为 100%。 3. 运行 `ruff check .` 和 `mypy phone_analyzer.py app.py`——两者必须 以零错误通过。 4. 提交一个 Pull Request,并清晰描述更改内容。
标签:API集成, E.164, Folium, Geocoding, libphonenumber, OpenCage, Pytest, Python, Tkinter, 二进制发布, 单元测试, 可观测性, 国际号码, 地图绘制, 地理位置, 开源工具, 无后门, 时区查询, 桌面GUI, 电话号码分析, 电话归属地查询, 运营商识别, 逆向工具