pt-checkin


Namept-checkin JSON
Version 0.3.1 PyPI version JSON
download
home_pageNone
SummaryPT站点自动签到工具 - 升级版本,支持智能Cloudflare绕过和浏览器模拟
upload_time2025-08-19 01:14:30
maintainerwuyaos
docs_urlNone
authorwuyaos
requires_python>=3.8
licenseMIT
keywords pt checkin signin automation
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # PT站点自动签到工具 v0.3.0

用于自动签到PT站点,从项目[madwind/flexget_qbittorrent_mod](https://github.com/madwind/flexget_qbittorrent_mod)迁移而来,移除了FlexGet框架依赖和qBittorrent相关功能,专注于自动签到功能。

## 🎉 v0.3.0 新特性

- 🎨 **彩色日志支持** - INFO绿色、WARN黄色、ERROR红色,日志更清晰
- 🚀 **多线程签到** - 支持并发执行,提升签到效率
- 📊 **详细签到状态** - 区分签到成功/OCR验证码签到成功/模拟登录成功
- 🎯 **优化用户界面** - 统一命令输出格式,使用emoji图标
- 🔧 **代码质量提升** - 规范化代码格式,提升可维护性

## 功能特性

- ✅ 支持100+个PT站点自动签到
- ✅ Cookie自动备份和管理
- ✅ 彩色日志记录和详细错误处理
- ✅ 支持验证码识别(百度OCR)
- ✅ 多线程并发签到,提升效率
- ✅ 智能签到状态分类和追踪
- ✅ 命令行界面,易于使用
- ✅ 标准Python包结构,支持pip安装

## 安装说明

### 环境要求

- Python 3.8+

### 方式一:本地安装

```bash
# 克隆项目
git clone https://github.com/your-username/pt-checkin.git
cd pt-checkin

# 安装
pip install .
```

### 方式二:PyPI安装(未来支持)

```bash
# 从PyPI安装(计划中)
pip install pt-checkin

# 验证安装
pt-checkin --help
```

### 配置文件

复制配置示例文件并编辑:

```bash
cp config_example.yml config.yml
```

编辑 `config.yml`,配置你的站点信息。配置示例文件包含了详细的说明和常见站点模板。

## 配置说明

### 基础配置

```yaml
# 基础设置
max_workers: 1                    # 最大并发线程数
user_agent: 'Mozilla/5.0...'      # 浏览器标识
get_messages: true                # 是否获取站内消息
get_details: true                 # 是否获取用户详情
cookie_backup: true               # 是否备份
```

### 站点配置

支持两种配置方式:

#### 简单配置(仅Cookie)
```yaml
sites:
  chdbits: 'your_cookie_string_here'
  hdchina: 'your_cookie_string_here'
```

#### 详细配置
```yaml
sites:
  dmhy:
    cookie: 'your_cookie_string_here'
    username: 'your_username'
    comment: 'daily_sign_in_comment'
  
  skyey2:
    login:
      username: 'your_username'
      password: 'your_password'
```

### 百度OCR配置(可选)

用于验证码识别:

```yaml
baidu_ocr_app_id: 'your_app_id'
baidu_ocr_api_key: 'your_api_key'
baidu_ocr_secret_key: 'your_secret_key'
```

## 使用方法

### 命令行使用(推荐,开发模式安装后可用)

#### 核心命令

```bash
# 执行签到任务(主要命令)
pt-checkin run

# 仅签到指定站点
pt-checkin run -s sjtu

# 强制重新签到
pt-checkin run --force

# 模拟运行(不实际执行)
pt-checkin run --dry-run
```

#### 测试命令

```bash
# 测试配置文件
pt-checkin test

# 测试单个站点
pt-checkin test-site sjtu

# 启用调试模式测试
pt-checkin test-site sjtu --debug
```

#### 状态管理

```bash
# 查看今日签到状态
pt-checkin status

# 显示失败次数统计
pt-checkin status --show-failed

# 清除今日所有签到状态
pt-checkin status --clear

# 清除指定站点状态
pt-checkin status --clear-site sjtu
```

#### 调试功能

```bash
# 显示所有站点概览
pt-checkin debug

# 调试指定站点
pt-checkin debug -s sjtu

# 显示完整配置信息
pt-checkin debug --show-config

# 启用详细日志模式(彩色输出)
pt-checkin -v run
```

#### 通知功能

```bash
# 获取签到结果通知
pt-checkin get-notification

# 仅显示标题
pt-checkin get-notification --title-only

# JSON格式输出
pt-checkin get-notification --format json
```

## 🎨 新版本特性说明

### 彩色日志
- **INFO级别**:绿色显示,记录正常操作
- **WARN级别**:黄色显示,记录警告信息
- **ERROR级别**:红色显示,记录错误信息

### 多线程签到
通过配置文件设置并发数:
```yaml
max_workers: 3  # 同时签到的站点数量,默认为1
```

### 详细签到状态
- **签到成功**:普通签到方式
- **OCR验证码签到成功**:需要验证码识别的站点
- **模拟登录成功**:需要模拟浏览器的站点

#### 全局选项

```bash
# 使用自定义配置文件
pt-checkin -c my_config.yml run

# 详细日志输出
pt-checkin -v run
```

#### 通知消息获取

```bash
# 获取签到结果通知消息(简单模式)
pt-checkin get-notification

# 获取详细通知消息(包含详细信息)
pt-checkin get-notification --detailed

# 获取JSON格式通知
pt-checkin get-notification --format json

# 仅获取标题
pt-checkin get-notification --title-only
```

## 青龙面板使用(定时执行)

### 青龙面板安装配置

#### 1. **订阅导入**:使用青龙面板的订阅功能导入脚本
```bash
ql repo https://github.com/wuyaos/pt_checkin.git "ck_" "" "config_example.yml" "ql" "py"
```

#### 2. **配置文件设置**:
- 将 `config_example.yml` 复制为 `config.yml`
- 根据实际情况修改 `config.yml` 中的站点配置信息

#### 3. **依赖安装**:
- 在青龙面板 → 依赖管理 → Python3 中添加依赖:`pt-checkin`
- 确保环境中已安装pt-checkin包


## 项目结构

```text
pt-checkin/
├── src/pt_checkin/              # 主包目录
│   ├── __init__.py              # 包初始化
│   ├── cli.py                   # 命令行界面
│   ├── core/                    # 核心模块
│   │   ├── __init__.py
│   │   ├── config_manager.py    # 配置管理
│   │   ├── scheduler.py         # 任务调度
│   │   ├── executor.py          # 执行器
│   │   ├── entry.py             # 签到条目
│   │   └── signin_status.py     # 状态管理
│   ├── base/                    # 基础功能
│   │   ├── __init__.py
│   │   ├── sign_in.py           # 签到基类
│   │   ├── request.py           # 网络请求
│   │   ├── work.py              # 工作流
│   │   ├── message.py           # 消息基类
│   │   └── detail.py            # 详情基类
│   ├── sites/                   # 站点实现(100+个站点)
│   │   ├── __init__.py
│   │   ├── sjtu.py              # 上海交大PT站
│   │   ├── dmhy.py              # 动漫花园
│   │   ├── byr.py               # 北邮人PT
│   │   └── ...                  # 更多站点
│   ├── schema/                  # 站点架构
│   │   ├── __init__.py
│   │   ├── nexusphp.py          # NexusPHP架构
│   │   ├── gazelle.py           # Gazelle架构
│   │   ├── private_torrent.py   # 私有种子基类
│   │   └── ...                  # 更多架构
│   └── utils/                   # 工具类
│       ├── __init__.py
│       ├── net_utils.py         # 网络工具
│       ├── baidu_ocr.py         # 百度OCR
│       └── ...                  # 更多工具
├── qinglong/                    # 青龙面板专用目录
│   ├── ck_ptsites.py            # 青龙面板签到脚本
│   ├── notify.py                # 简化通知模块
│   ├── config.yml               # 青龙面板配置
│   └── README.md                # 青龙面板使用说明
├── config_example.yml           # 配置示例
├── pyproject.toml               # 项目配置
├── LICENSE                      # 许可证
└── README.md                    # 说明文档
```

## 更新日志

目前对需要ocr 验证码签到的暂未适配(除了opencd)

### v0.1.0 (青龙面板优化版)
- 🎉 加入青龙面板支持
- ✨ 添加 `get-notification` 命令支持简单/详细模式
- ✨ 添加消息详细程度控制功能
- 📚 完善青龙面板使用文档和示例

### v0.0.1
- 🎉 重构为标准Python包结构
- ✨ 添加pip安装支持
- ✨ 添加全局命令行工具 `pt-checkin`
- ✨ 添加更多命令行选项和状态管理
- 📚 更新文档和使用说明

## 许可证

本项目继承原FlexGet插件的许可证。

## 致谢

- 感谢madwind/flexget_qbittorrent_mod项目的作者

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "pt-checkin",
    "maintainer": "wuyaos",
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "pt, checkin, signin, automation",
    "author": "wuyaos",
    "author_email": null,
    "download_url": "https://files.pythonhosted.org/packages/b3/57/c389518e9d40dc877643acd4c724a8e06f79efde9b3c3ea8ae0bc45f1a05/pt_checkin-0.3.1.tar.gz",
    "platform": null,
    "description": "# PT\u7ad9\u70b9\u81ea\u52a8\u7b7e\u5230\u5de5\u5177 v0.3.0\n\n\u7528\u4e8e\u81ea\u52a8\u7b7e\u5230PT\u7ad9\u70b9\uff0c\u4ece\u9879\u76ee[madwind/flexget_qbittorrent_mod](https://github.com/madwind/flexget_qbittorrent_mod)\u8fc1\u79fb\u800c\u6765\uff0c\u79fb\u9664\u4e86FlexGet\u6846\u67b6\u4f9d\u8d56\u548cqBittorrent\u76f8\u5173\u529f\u80fd\uff0c\u4e13\u6ce8\u4e8e\u81ea\u52a8\u7b7e\u5230\u529f\u80fd\u3002\n\n## \ud83c\udf89 v0.3.0 \u65b0\u7279\u6027\n\n- \ud83c\udfa8 **\u5f69\u8272\u65e5\u5fd7\u652f\u6301** - INFO\u7eff\u8272\u3001WARN\u9ec4\u8272\u3001ERROR\u7ea2\u8272\uff0c\u65e5\u5fd7\u66f4\u6e05\u6670\n- \ud83d\ude80 **\u591a\u7ebf\u7a0b\u7b7e\u5230** - \u652f\u6301\u5e76\u53d1\u6267\u884c\uff0c\u63d0\u5347\u7b7e\u5230\u6548\u7387\n- \ud83d\udcca **\u8be6\u7ec6\u7b7e\u5230\u72b6\u6001** - \u533a\u5206\u7b7e\u5230\u6210\u529f/OCR\u9a8c\u8bc1\u7801\u7b7e\u5230\u6210\u529f/\u6a21\u62df\u767b\u5f55\u6210\u529f\n- \ud83c\udfaf **\u4f18\u5316\u7528\u6237\u754c\u9762** - \u7edf\u4e00\u547d\u4ee4\u8f93\u51fa\u683c\u5f0f\uff0c\u4f7f\u7528emoji\u56fe\u6807\n- \ud83d\udd27 **\u4ee3\u7801\u8d28\u91cf\u63d0\u5347** - \u89c4\u8303\u5316\u4ee3\u7801\u683c\u5f0f\uff0c\u63d0\u5347\u53ef\u7ef4\u62a4\u6027\n\n## \u529f\u80fd\u7279\u6027\n\n- \u2705 \u652f\u6301100+\u4e2aPT\u7ad9\u70b9\u81ea\u52a8\u7b7e\u5230\n- \u2705 Cookie\u81ea\u52a8\u5907\u4efd\u548c\u7ba1\u7406\n- \u2705 \u5f69\u8272\u65e5\u5fd7\u8bb0\u5f55\u548c\u8be6\u7ec6\u9519\u8bef\u5904\u7406\n- \u2705 \u652f\u6301\u9a8c\u8bc1\u7801\u8bc6\u522b\uff08\u767e\u5ea6OCR\uff09\n- \u2705 \u591a\u7ebf\u7a0b\u5e76\u53d1\u7b7e\u5230\uff0c\u63d0\u5347\u6548\u7387\n- \u2705 \u667a\u80fd\u7b7e\u5230\u72b6\u6001\u5206\u7c7b\u548c\u8ffd\u8e2a\n- \u2705 \u547d\u4ee4\u884c\u754c\u9762\uff0c\u6613\u4e8e\u4f7f\u7528\n- \u2705 \u6807\u51c6Python\u5305\u7ed3\u6784\uff0c\u652f\u6301pip\u5b89\u88c5\n\n## \u5b89\u88c5\u8bf4\u660e\n\n### \u73af\u5883\u8981\u6c42\n\n- Python 3.8+\n\n### \u65b9\u5f0f\u4e00\uff1a\u672c\u5730\u5b89\u88c5\n\n```bash\n# \u514b\u9686\u9879\u76ee\ngit clone https://github.com/your-username/pt-checkin.git\ncd pt-checkin\n\n# \u5b89\u88c5\npip install .\n```\n\n### \u65b9\u5f0f\u4e8c\uff1aPyPI\u5b89\u88c5\uff08\u672a\u6765\u652f\u6301\uff09\n\n```bash\n# \u4ecePyPI\u5b89\u88c5\uff08\u8ba1\u5212\u4e2d\uff09\npip install pt-checkin\n\n# \u9a8c\u8bc1\u5b89\u88c5\npt-checkin --help\n```\n\n### \u914d\u7f6e\u6587\u4ef6\n\n\u590d\u5236\u914d\u7f6e\u793a\u4f8b\u6587\u4ef6\u5e76\u7f16\u8f91\uff1a\n\n```bash\ncp config_example.yml config.yml\n```\n\n\u7f16\u8f91 `config.yml`\uff0c\u914d\u7f6e\u4f60\u7684\u7ad9\u70b9\u4fe1\u606f\u3002\u914d\u7f6e\u793a\u4f8b\u6587\u4ef6\u5305\u542b\u4e86\u8be6\u7ec6\u7684\u8bf4\u660e\u548c\u5e38\u89c1\u7ad9\u70b9\u6a21\u677f\u3002\n\n## \u914d\u7f6e\u8bf4\u660e\n\n### \u57fa\u7840\u914d\u7f6e\n\n```yaml\n# \u57fa\u7840\u8bbe\u7f6e\nmax_workers: 1                    # \u6700\u5927\u5e76\u53d1\u7ebf\u7a0b\u6570\nuser_agent: 'Mozilla/5.0...'      # \u6d4f\u89c8\u5668\u6807\u8bc6\nget_messages: true                # \u662f\u5426\u83b7\u53d6\u7ad9\u5185\u6d88\u606f\nget_details: true                 # \u662f\u5426\u83b7\u53d6\u7528\u6237\u8be6\u60c5\ncookie_backup: true               # \u662f\u5426\u5907\u4efd\n```\n\n### \u7ad9\u70b9\u914d\u7f6e\n\n\u652f\u6301\u4e24\u79cd\u914d\u7f6e\u65b9\u5f0f\uff1a\n\n#### \u7b80\u5355\u914d\u7f6e\uff08\u4ec5Cookie\uff09\n```yaml\nsites:\n  chdbits: 'your_cookie_string_here'\n  hdchina: 'your_cookie_string_here'\n```\n\n#### \u8be6\u7ec6\u914d\u7f6e\n```yaml\nsites:\n  dmhy:\n    cookie: 'your_cookie_string_here'\n    username: 'your_username'\n    comment: 'daily_sign_in_comment'\n  \n  skyey2:\n    login:\n      username: 'your_username'\n      password: 'your_password'\n```\n\n### \u767e\u5ea6OCR\u914d\u7f6e\uff08\u53ef\u9009\uff09\n\n\u7528\u4e8e\u9a8c\u8bc1\u7801\u8bc6\u522b\uff1a\n\n```yaml\nbaidu_ocr_app_id: 'your_app_id'\nbaidu_ocr_api_key: 'your_api_key'\nbaidu_ocr_secret_key: 'your_secret_key'\n```\n\n## \u4f7f\u7528\u65b9\u6cd5\n\n### \u547d\u4ee4\u884c\u4f7f\u7528\uff08\u63a8\u8350\uff0c\u5f00\u53d1\u6a21\u5f0f\u5b89\u88c5\u540e\u53ef\u7528\uff09\n\n#### \u6838\u5fc3\u547d\u4ee4\n\n```bash\n# \u6267\u884c\u7b7e\u5230\u4efb\u52a1\uff08\u4e3b\u8981\u547d\u4ee4\uff09\npt-checkin run\n\n# \u4ec5\u7b7e\u5230\u6307\u5b9a\u7ad9\u70b9\npt-checkin run -s sjtu\n\n# \u5f3a\u5236\u91cd\u65b0\u7b7e\u5230\npt-checkin run --force\n\n# \u6a21\u62df\u8fd0\u884c\uff08\u4e0d\u5b9e\u9645\u6267\u884c\uff09\npt-checkin run --dry-run\n```\n\n#### \u6d4b\u8bd5\u547d\u4ee4\n\n```bash\n# \u6d4b\u8bd5\u914d\u7f6e\u6587\u4ef6\npt-checkin test\n\n# \u6d4b\u8bd5\u5355\u4e2a\u7ad9\u70b9\npt-checkin test-site sjtu\n\n# \u542f\u7528\u8c03\u8bd5\u6a21\u5f0f\u6d4b\u8bd5\npt-checkin test-site sjtu --debug\n```\n\n#### \u72b6\u6001\u7ba1\u7406\n\n```bash\n# \u67e5\u770b\u4eca\u65e5\u7b7e\u5230\u72b6\u6001\npt-checkin status\n\n# \u663e\u793a\u5931\u8d25\u6b21\u6570\u7edf\u8ba1\npt-checkin status --show-failed\n\n# \u6e05\u9664\u4eca\u65e5\u6240\u6709\u7b7e\u5230\u72b6\u6001\npt-checkin status --clear\n\n# \u6e05\u9664\u6307\u5b9a\u7ad9\u70b9\u72b6\u6001\npt-checkin status --clear-site sjtu\n```\n\n#### \u8c03\u8bd5\u529f\u80fd\n\n```bash\n# \u663e\u793a\u6240\u6709\u7ad9\u70b9\u6982\u89c8\npt-checkin debug\n\n# \u8c03\u8bd5\u6307\u5b9a\u7ad9\u70b9\npt-checkin debug -s sjtu\n\n# \u663e\u793a\u5b8c\u6574\u914d\u7f6e\u4fe1\u606f\npt-checkin debug --show-config\n\n# \u542f\u7528\u8be6\u7ec6\u65e5\u5fd7\u6a21\u5f0f\uff08\u5f69\u8272\u8f93\u51fa\uff09\npt-checkin -v run\n```\n\n#### \u901a\u77e5\u529f\u80fd\n\n```bash\n# \u83b7\u53d6\u7b7e\u5230\u7ed3\u679c\u901a\u77e5\npt-checkin get-notification\n\n# \u4ec5\u663e\u793a\u6807\u9898\npt-checkin get-notification --title-only\n\n# JSON\u683c\u5f0f\u8f93\u51fa\npt-checkin get-notification --format json\n```\n\n## \ud83c\udfa8 \u65b0\u7248\u672c\u7279\u6027\u8bf4\u660e\n\n### \u5f69\u8272\u65e5\u5fd7\n- **INFO\u7ea7\u522b**\uff1a\u7eff\u8272\u663e\u793a\uff0c\u8bb0\u5f55\u6b63\u5e38\u64cd\u4f5c\n- **WARN\u7ea7\u522b**\uff1a\u9ec4\u8272\u663e\u793a\uff0c\u8bb0\u5f55\u8b66\u544a\u4fe1\u606f\n- **ERROR\u7ea7\u522b**\uff1a\u7ea2\u8272\u663e\u793a\uff0c\u8bb0\u5f55\u9519\u8bef\u4fe1\u606f\n\n### \u591a\u7ebf\u7a0b\u7b7e\u5230\n\u901a\u8fc7\u914d\u7f6e\u6587\u4ef6\u8bbe\u7f6e\u5e76\u53d1\u6570\uff1a\n```yaml\nmax_workers: 3  # \u540c\u65f6\u7b7e\u5230\u7684\u7ad9\u70b9\u6570\u91cf\uff0c\u9ed8\u8ba4\u4e3a1\n```\n\n### \u8be6\u7ec6\u7b7e\u5230\u72b6\u6001\n- **\u7b7e\u5230\u6210\u529f**\uff1a\u666e\u901a\u7b7e\u5230\u65b9\u5f0f\n- **OCR\u9a8c\u8bc1\u7801\u7b7e\u5230\u6210\u529f**\uff1a\u9700\u8981\u9a8c\u8bc1\u7801\u8bc6\u522b\u7684\u7ad9\u70b9\n- **\u6a21\u62df\u767b\u5f55\u6210\u529f**\uff1a\u9700\u8981\u6a21\u62df\u6d4f\u89c8\u5668\u7684\u7ad9\u70b9\n\n#### \u5168\u5c40\u9009\u9879\n\n```bash\n# \u4f7f\u7528\u81ea\u5b9a\u4e49\u914d\u7f6e\u6587\u4ef6\npt-checkin -c my_config.yml run\n\n# \u8be6\u7ec6\u65e5\u5fd7\u8f93\u51fa\npt-checkin -v run\n```\n\n#### \u901a\u77e5\u6d88\u606f\u83b7\u53d6\n\n```bash\n# \u83b7\u53d6\u7b7e\u5230\u7ed3\u679c\u901a\u77e5\u6d88\u606f\uff08\u7b80\u5355\u6a21\u5f0f\uff09\npt-checkin get-notification\n\n# \u83b7\u53d6\u8be6\u7ec6\u901a\u77e5\u6d88\u606f\uff08\u5305\u542b\u8be6\u7ec6\u4fe1\u606f\uff09\npt-checkin get-notification --detailed\n\n# \u83b7\u53d6JSON\u683c\u5f0f\u901a\u77e5\npt-checkin get-notification --format json\n\n# \u4ec5\u83b7\u53d6\u6807\u9898\npt-checkin get-notification --title-only\n```\n\n## \u9752\u9f99\u9762\u677f\u4f7f\u7528(\u5b9a\u65f6\u6267\u884c)\n\n### \u9752\u9f99\u9762\u677f\u5b89\u88c5\u914d\u7f6e\n\n#### 1. **\u8ba2\u9605\u5bfc\u5165**\uff1a\u4f7f\u7528\u9752\u9f99\u9762\u677f\u7684\u8ba2\u9605\u529f\u80fd\u5bfc\u5165\u811a\u672c\n```bash\nql repo https://github.com/wuyaos/pt_checkin.git \"ck_\" \"\" \"config_example.yml\" \"ql\" \"py\"\n```\n\n#### 2. **\u914d\u7f6e\u6587\u4ef6\u8bbe\u7f6e**\uff1a\n- \u5c06 `config_example.yml` \u590d\u5236\u4e3a `config.yml`\n- \u6839\u636e\u5b9e\u9645\u60c5\u51b5\u4fee\u6539 `config.yml` \u4e2d\u7684\u7ad9\u70b9\u914d\u7f6e\u4fe1\u606f\n\n#### 3. **\u4f9d\u8d56\u5b89\u88c5**\uff1a\n- \u5728\u9752\u9f99\u9762\u677f \u2192 \u4f9d\u8d56\u7ba1\u7406 \u2192 Python3 \u4e2d\u6dfb\u52a0\u4f9d\u8d56\uff1a`pt-checkin`\n- \u786e\u4fdd\u73af\u5883\u4e2d\u5df2\u5b89\u88c5pt-checkin\u5305\n\n\n## \u9879\u76ee\u7ed3\u6784\n\n```text\npt-checkin/\n\u251c\u2500\u2500 src/pt_checkin/              # \u4e3b\u5305\u76ee\u5f55\n\u2502   \u251c\u2500\u2500 __init__.py              # \u5305\u521d\u59cb\u5316\n\u2502   \u251c\u2500\u2500 cli.py                   # \u547d\u4ee4\u884c\u754c\u9762\n\u2502   \u251c\u2500\u2500 core/                    # \u6838\u5fc3\u6a21\u5757\n\u2502   \u2502   \u251c\u2500\u2500 __init__.py\n\u2502   \u2502   \u251c\u2500\u2500 config_manager.py    # \u914d\u7f6e\u7ba1\u7406\n\u2502   \u2502   \u251c\u2500\u2500 scheduler.py         # \u4efb\u52a1\u8c03\u5ea6\n\u2502   \u2502   \u251c\u2500\u2500 executor.py          # \u6267\u884c\u5668\n\u2502   \u2502   \u251c\u2500\u2500 entry.py             # \u7b7e\u5230\u6761\u76ee\n\u2502   \u2502   \u2514\u2500\u2500 signin_status.py     # \u72b6\u6001\u7ba1\u7406\n\u2502   \u251c\u2500\u2500 base/                    # \u57fa\u7840\u529f\u80fd\n\u2502   \u2502   \u251c\u2500\u2500 __init__.py\n\u2502   \u2502   \u251c\u2500\u2500 sign_in.py           # \u7b7e\u5230\u57fa\u7c7b\n\u2502   \u2502   \u251c\u2500\u2500 request.py           # \u7f51\u7edc\u8bf7\u6c42\n\u2502   \u2502   \u251c\u2500\u2500 work.py              # \u5de5\u4f5c\u6d41\n\u2502   \u2502   \u251c\u2500\u2500 message.py           # \u6d88\u606f\u57fa\u7c7b\n\u2502   \u2502   \u2514\u2500\u2500 detail.py            # \u8be6\u60c5\u57fa\u7c7b\n\u2502   \u251c\u2500\u2500 sites/                   # \u7ad9\u70b9\u5b9e\u73b0\uff08100+\u4e2a\u7ad9\u70b9\uff09\n\u2502   \u2502   \u251c\u2500\u2500 __init__.py\n\u2502   \u2502   \u251c\u2500\u2500 sjtu.py              # \u4e0a\u6d77\u4ea4\u5927PT\u7ad9\n\u2502   \u2502   \u251c\u2500\u2500 dmhy.py              # \u52a8\u6f2b\u82b1\u56ed\n\u2502   \u2502   \u251c\u2500\u2500 byr.py               # \u5317\u90ae\u4ebaPT\n\u2502   \u2502   \u2514\u2500\u2500 ...                  # \u66f4\u591a\u7ad9\u70b9\n\u2502   \u251c\u2500\u2500 schema/                  # \u7ad9\u70b9\u67b6\u6784\n\u2502   \u2502   \u251c\u2500\u2500 __init__.py\n\u2502   \u2502   \u251c\u2500\u2500 nexusphp.py          # NexusPHP\u67b6\u6784\n\u2502   \u2502   \u251c\u2500\u2500 gazelle.py           # Gazelle\u67b6\u6784\n\u2502   \u2502   \u251c\u2500\u2500 private_torrent.py   # \u79c1\u6709\u79cd\u5b50\u57fa\u7c7b\n\u2502   \u2502   \u2514\u2500\u2500 ...                  # \u66f4\u591a\u67b6\u6784\n\u2502   \u2514\u2500\u2500 utils/                   # \u5de5\u5177\u7c7b\n\u2502       \u251c\u2500\u2500 __init__.py\n\u2502       \u251c\u2500\u2500 net_utils.py         # \u7f51\u7edc\u5de5\u5177\n\u2502       \u251c\u2500\u2500 baidu_ocr.py         # \u767e\u5ea6OCR\n\u2502       \u2514\u2500\u2500 ...                  # \u66f4\u591a\u5de5\u5177\n\u251c\u2500\u2500 qinglong/                    # \u9752\u9f99\u9762\u677f\u4e13\u7528\u76ee\u5f55\n\u2502   \u251c\u2500\u2500 ck_ptsites.py            # \u9752\u9f99\u9762\u677f\u7b7e\u5230\u811a\u672c\n\u2502   \u251c\u2500\u2500 notify.py                # \u7b80\u5316\u901a\u77e5\u6a21\u5757\n\u2502   \u251c\u2500\u2500 config.yml               # \u9752\u9f99\u9762\u677f\u914d\u7f6e\n\u2502   \u2514\u2500\u2500 README.md                # \u9752\u9f99\u9762\u677f\u4f7f\u7528\u8bf4\u660e\n\u251c\u2500\u2500 config_example.yml           # \u914d\u7f6e\u793a\u4f8b\n\u251c\u2500\u2500 pyproject.toml               # \u9879\u76ee\u914d\u7f6e\n\u251c\u2500\u2500 LICENSE                      # \u8bb8\u53ef\u8bc1\n\u2514\u2500\u2500 README.md                    # \u8bf4\u660e\u6587\u6863\n```\n\n## \u66f4\u65b0\u65e5\u5fd7\n\n\u76ee\u524d\u5bf9\u9700\u8981ocr \u9a8c\u8bc1\u7801\u7b7e\u5230\u7684\u6682\u672a\u9002\u914d\uff08\u9664\u4e86opencd)\n\n### v0.1.0 (\u9752\u9f99\u9762\u677f\u4f18\u5316\u7248)\n- \ud83c\udf89 \u52a0\u5165\u9752\u9f99\u9762\u677f\u652f\u6301\n- \u2728 \u6dfb\u52a0 `get-notification` \u547d\u4ee4\u652f\u6301\u7b80\u5355/\u8be6\u7ec6\u6a21\u5f0f\n- \u2728 \u6dfb\u52a0\u6d88\u606f\u8be6\u7ec6\u7a0b\u5ea6\u63a7\u5236\u529f\u80fd\n- \ud83d\udcda \u5b8c\u5584\u9752\u9f99\u9762\u677f\u4f7f\u7528\u6587\u6863\u548c\u793a\u4f8b\n\n### v0.0.1\n- \ud83c\udf89 \u91cd\u6784\u4e3a\u6807\u51c6Python\u5305\u7ed3\u6784\n- \u2728 \u6dfb\u52a0pip\u5b89\u88c5\u652f\u6301\n- \u2728 \u6dfb\u52a0\u5168\u5c40\u547d\u4ee4\u884c\u5de5\u5177 `pt-checkin`\n- \u2728 \u6dfb\u52a0\u66f4\u591a\u547d\u4ee4\u884c\u9009\u9879\u548c\u72b6\u6001\u7ba1\u7406\n- \ud83d\udcda \u66f4\u65b0\u6587\u6863\u548c\u4f7f\u7528\u8bf4\u660e\n\n## \u8bb8\u53ef\u8bc1\n\n\u672c\u9879\u76ee\u7ee7\u627f\u539fFlexGet\u63d2\u4ef6\u7684\u8bb8\u53ef\u8bc1\u3002\n\n## \u81f4\u8c22\n\n- \u611f\u8c22madwind/flexget_qbittorrent_mod\u9879\u76ee\u7684\u4f5c\u8005\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "PT\u7ad9\u70b9\u81ea\u52a8\u7b7e\u5230\u5de5\u5177 - \u5347\u7ea7\u7248\u672c\uff0c\u652f\u6301\u667a\u80fdCloudflare\u7ed5\u8fc7\u548c\u6d4f\u89c8\u5668\u6a21\u62df",
    "version": "0.3.1",
    "project_urls": {
        "Documentation": "https://github.com/wuyaos/pt-checkin/blob/main/README.md",
        "Homepage": "https://github.com/wuyaos/pt-checkin",
        "Issues": "https://github.com/wuyaos/pt-checkin/issues",
        "Repository": "https://github.com/wuyaos/pt-checkin"
    },
    "split_keywords": [
        "pt",
        " checkin",
        " signin",
        " automation"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "64acf958b57814f48ac1ff97404ff8e3ff70bbb7539bf2c1fc8f19c9e8c3ec2c",
                "md5": "c5aa9fa4c85f70fa70a01edf0cda0ffa",
                "sha256": "d1e174ca241fc3e617e6cdd125253ddd155b354f3f479557ffe9bb5091797b67"
            },
            "downloads": -1,
            "filename": "pt_checkin-0.3.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "c5aa9fa4c85f70fa70a01edf0cda0ffa",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 172281,
            "upload_time": "2025-08-19T01:14:28",
            "upload_time_iso_8601": "2025-08-19T01:14:28.739206Z",
            "url": "https://files.pythonhosted.org/packages/64/ac/f958b57814f48ac1ff97404ff8e3ff70bbb7539bf2c1fc8f19c9e8c3ec2c/pt_checkin-0.3.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "b357c389518e9d40dc877643acd4c724a8e06f79efde9b3c3ea8ae0bc45f1a05",
                "md5": "97e88eed4166cce6700fd721bf8eaec3",
                "sha256": "67b81aa29796197db9b6dcbfc48135551fa0683935d3d9945fc0e135e82b0aac"
            },
            "downloads": -1,
            "filename": "pt_checkin-0.3.1.tar.gz",
            "has_sig": false,
            "md5_digest": "97e88eed4166cce6700fd721bf8eaec3",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 99017,
            "upload_time": "2025-08-19T01:14:30",
            "upload_time_iso_8601": "2025-08-19T01:14:30.202544Z",
            "url": "https://files.pythonhosted.org/packages/b3/57/c389518e9d40dc877643acd4c724a8e06f79efde9b3c3ea8ae0bc45f1a05/pt_checkin-0.3.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-19 01:14:30",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "wuyaos",
    "github_project": "pt-checkin",
    "github_not_found": true,
    "lcname": "pt-checkin"
}
        
Elapsed time: 0.70824s