Skip to main content
Glama
spelech
by spelech

📦 APKPipe

自动化 APK 与 RSS 发布流水线,集成 Real-Debrid 解锁、无头 JDownloader 备用方案、Nextcloud 存储摄取、Apprise 告警、Web 仪表盘及原生 MCP Server。

CI Coverage Python Docker License


📖 目录


🌟 概述

在 Nextcloud 或本地网络存储上维护一个最新、自托管的 Android 应用库,传统上需要繁琐的手动操作:浏览发布论坛(如 Mobilism)、检查版本字符串、绕过多网盘镜像链接(Rapidgator、Uploady、DropGalaxy)、解压归档、重命名 APK、将文件移动到正确的目录、触发 Nextcloud 文件索引以及跟踪发布历史。

APKPipe 完全自动化了这一端到端的生命周期:

  1. 定期监控 RSS 订阅源,获取新的应用发布。

  2. 根据可自定义的监视列表匹配发布,支持正则表达式模式、发布者白名单([Balatan][derrin][RockMODS])以及 SemVer 版本门控。

  3. 通过三层策略解析下载链接(Real-Debrid API $\rightarrow$ JDownloader 2 $\rightarrow$ Playwright 爬虫)。

  4. 下载并解压归档.zip.rar.7z.tar)以提取 APK 二进制文件。

  5. 将二进制文件整理到干净、标准化的目录结构中{DOWNLOAD_DIR}/{AppName}/{AppName} v{Version} [{Releaser}].apk)。

  6. 派发 Nextcloud OCC 扫描命令occ files:scan),使文件立即出现在您的移动端 Nextcloud 应用中。

  7. 通过 Apprise 向 Discord、Telegram、Pushover 或 Ntfy 推送丰富的状态告警

  8. 提供原生 MCP Server 工具和 Web 仪表盘,用于人工管理和自主 AI 代理操作。


📐 架构

flowchart TD
    subgraph Sources["Feeds & Control Interfaces"]
        RSS["Mobilism RSS Feeds\n(Apps, Games, Custom)"]
        WebUI["FastAPI Web Dashboard\n(Alpine.js + Tailwind)"]
        MCP["MCP Server Tools\n(AI Agents / mcp-router)"]
    end

    subgraph APKPipeCore["APKPipe Core Engine"]
        Scheduler["AsyncIO / Periodic Poller"]
        Parser["Feed & Post Parser"]
        Matcher["Watchlist Matcher\n(Regex, Releaser Filter, SemVer)"]
        DB[("SQLite Database\n(Watchlist, Feeds, Tasks, History)")]
        Resolver["Tiered Link Resolver"]
        Downloader["Stream Downloader & Extractor"]
        Organizer["File Organizer & Sanitizer"]
        Notifier["Apprise / Ntfy Client"]
    end

    subgraph Resolvers["Download Engines"]
        RD["Real-Debrid API (Tier 1)\n(/unrestrict/link)"]
        JD["Headless JDownloader 2 (Tier 2)\n(MyJDownloader API / Watch Dir)"]
        Scraper["playwright-csharp-scraper (Tier 3)\n(Captcha / Browser Evaluator)"]
    end

    subgraph StorageNotify["Homelab Storage & Alerts"]
        NextcloudFS["Nextcloud Storage\n(/downloads/{AppName}/...)"]
        AppriseAPI["Apprise API (8000) / Ntfy"]
        NextcloudOCC["Nextcloud OCC Scan\n(docker exec occ files:scan)"]
    end

    RSS --> Scheduler
    Scheduler --> Parser
    Parser --> Matcher
    Matcher <--> DB
    WebUI <--> DB
    MCP <--> DB
    Matcher --> Resolver

    Resolver -->|RD Supported Link| RD
    Resolver -->|RD Unsupported / Direct| JD
    Resolver -->|JS / Captcha Protected| Scraper

    RD --> Downloader
    JD --> Downloader
    Scraper --> Downloader
    Downloader --> Organizer
    Organizer --> NextcloudFS
    Organizer --> NextcloudOCC
    Organizer --> Notifier
    Notifier --> AppriseAPI

✨ 核心特性

  • 🔄 自主订阅源摄取:定期轮询多个 RSS / ATOM 订阅源,并支持去重。

  • 🎯 细粒度匹配器:按名称或正则表达式定位特定应用,要求最低版本阈值,并按可信发布者标签过滤。

  • 多层链接解锁

    • 第一层(Real-Debrid):为 50+ 文件托管商提供直接高速 API 解锁。

    • 第二层(JDownloader 2):无头 MyJDownloader 云 API 或本地文件夹 linkgrabber。

    • 第三层(Playwright 爬虫):针对动态落地页的无头浏览器爬虫备用方案。

  • 📦 自动化归档解压:透明处理 .zip.rar.7z.tar.gz 归档,提取嵌套的 .apk 二进制文件。

  • 📂 Nextcloud OCC 集成:无缝放置到 Nextcloud 用户目录中,并自动调用 occ files:scan

  • 🔔 多渠道 Homelab 通知:通过 Apprise API 和 Ntfy 推送通知,包含发布元数据、文件大小和下载耗时。

  • 🤖 原生模型上下文协议(MCP):8 个内置工具,兼容 Claude Desktop、Cursor 和 mcp-router

  • 💻 响应式 Web 仪表盘:基于 Alpine.js 和 Tailwind CSS 的简洁深色/浅色主题。


🚀 快速开始

Docker Compose 部署

在生产环境中运行 APKPipe 的推荐方式是使用 Docker Compose。

  1. 创建 docker-compose.yaml 文件:

services:
  apkpipe:
    image: ghcr.io/spelech/apkpipe:latest
    container_name: apkpipe
    restart: unless-stopped
    ports:
      - "8429:8000"
    environment:
      - APKPIPE_APP_NAME=APKPipe
      - APKPIPE_HOST=0.0.0.0
      - APKPIPE_PORT=8000
      - APKPIPE_DATABASE_URL=sqlite+aiosqlite:////data/apkpipe.db
      - APKPIPE_DOWNLOAD_DIR=/downloads
      - APKPIPE_STAGING_DIR=/data/staging
      - APKPIPE_POLL_INTERVAL_SECONDS=900
      - APKPIPE_REAL_DEBRID_API_TOKEN=your_real_debrid_token_here
      - APKPIPE_NEXTCLOUD_URL=http://nextcloud:80
      - APKPIPE_NEXTCLOUD_OCC_COMMAND=docker exec nextcloud-aio-nextcloud sudo -u www-data php /var/www/html/occ files:scan --path="{path}"
      - APKPIPE_APPRISE_URL=http://apprise:8000/notify/apprise
      - APKPIPE_NTFY_TOPIC=apkpipe-alerts
    volumes:
      - ./data:/data
      - /drives/storage/Nextcloud/APKs:/downloads
      - /var/run/docker.sock:/var/run/docker.sock:ro
    labels:
      - "caddy=apk.wileyriley.com"
      - "caddy.reverse_proxy={{upstreams 8000}}"
      - "caddy.import=tinyauth"
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8000/health"]
      interval: 30s
      timeout: 5s
      retries: 3
      start_period: 15s
    networks:
      - default
      - caddy

networks:
  default:
    name: apkpipe_net
  caddy:
    external: true
  1. 启动堆栈:

docker compose up -d
  1. 在浏览器中打开 http://localhost:8429(如果通过 Caddy 路由,则为 https://apk.wileyriley.com)。


环境变量

变量

默认值

描述

APKPIPE_DATABASE_URL

sqlite+aiosqlite:///apkpipe.db

异步 SQLAlchemy SQLite 数据库连接字符串

APKPIPE_DOWNLOAD_DIR

/downloads

整理后 APK 库的基础目标路径

APKPIPE_STAGING_DIR

/data/staging

用于活动流和提取的临时暂存文件夹

APKPIPE_POLL_INTERVAL_SECONDS

900

订阅源轮询频率(秒)(默认:15 分钟)

APKPIPE_REAL_DEBRID_API_TOKEN

""

Real-Debrid API 令牌(来自 real-debrid.com/apitoken)

APKPIPE_JDOWNLOADER_EMAIL

""

MyJDownloader 账户邮箱(可选,第二层)

APKPIPE_JDOWNLOADER_PASSWORD

""

MyJDownloader 账户密码

APKPIPE_JDOWNLOADER_DEVICE_NAME

""

MyJDownloader 目标设备名称

APKPIPE_JDOWNLOADER_WATCH_DIR

""

无头 JDownloader .crawljob 文件的监视目录

APKPIPE_SCRAPER_URL

http://scraper:8080

Playwright 无头爬虫服务的 URL

APKPIPE_NEXTCLOUD_URL

""

Nextcloud 服务器基础 URL

APKPIPE_NEXTCLOUD_TOKEN

""

Nextcloud WebDAV / API 认证令牌

APKPIPE_NEXTCLOUD_OCC_COMMAND

""

OCC 扫描命令模板({path} 会被替换)

APKPIPE_APPRISE_URL

""

Apprise API 通知端点

APKPIPE_NTFY_TOPIC

""

用于推送通知的 Ntfy 主题标识符


⚡ 下载引擎与解析器

第一层:Real-Debrid API

APKPipe 原生通过 Real-Debrid 的 REST API /unrestrict/link 进行认证。当论坛帖子包含镜像链接(Rapidgator、Uploady、DropGalaxy、Mega、Katfile 等)时,Real-Debrid 会将链接解锁为高速、直接的 CDN URL。

配置 Real-Debrid 的步骤:

  1. real-debrid.com/apitoken 生成 API 令牌。

  2. 在您的环境中设置 APKPIPE_REAL_DEBRID_API_TOKEN=your_token,或通过 Web UI 的“设置”选项卡进行设置。

第二层:无头 JDownloader 2

对于 Real-Debrid 不支持或需要专用解密器的托管商,APKPipe 通过以下方式连接无头 JDownloader 2 实例:

  • MyJDownloader 云 API:将下载包直接提交到您已连接的设备。

  • Linkgrabber 监视目录:将 .crawljob 指令放入共享文件夹。

第三层:Playwright 爬虫客户端

当下载落地页受 JavaScript 重定向或云保护时,APKPipe 会将页面评估任务派发给 playwright-csharp-scraperhttp://scraper:8080),由其评估 DOM 并提取最终的直接下载镜像。


🔗 Homelab 集成

Nextcloud 存储与 OCC 自动扫描

APKPipe 将文件格式化并放置到您的 Nextcloud 存储目录中:

/downloads/
├── Spotify/
│   └── Spotify v8.9.18.534 [Balatan].apk
└── Nova Launcher/
    └── Nova Launcher v8.0.18 [Prime].apk

为了在不等待 Nextcloud 后台任务的情况下告知 Nextcloud 新下载的文件,APKPipe 会执行 occ files:scan

  • Docker Exec(推荐):挂载 Docker 套接字 /var/run/docker.sock 并设置:

    APKPIPE_NEXTCLOUD_OCC_COMMAND=docker exec nextcloud-aio-nextcloud sudo -u www-data php /var/www/html/occ files:scan --path="{path}"
  • CLI / 主机执行:如果 APKPipe 直接在主机上运行,则直接调用命令。

Apprise 与 Ntfy 推送通知

APKPipe 在以下事件时发出结构化事件通知:

  • 🔍 feed_matched:发现与监视列表规则匹配的发布。

  • ⬇️ download_started:正在解锁链接并启动流式下载。

  • download_completed:归档已提取、文件已放置、OCC 扫描已完成。

  • download_failed:错误详情和失败原因。

支持的通知端点:

  • Apprise API:http://apprise:8000/notify/apprise

  • Ntfy:https://ntfy.sh/your-topic 或自托管的 Ntfy 服务器。


🤖 模型上下文协议(MCP)服务器

APKPipe 暴露了一个原生 MCP 2024-11-05 Server,允许 AI 助手(Claude Desktop、Cursor、Antigravity mcp-router)自主管理监视列表、检查订阅源、触发轮询和下载发布。

可用的 MCP 工具

工具名称

描述

关键参数

apkpipe__list_watchlist

列出监视列表中的受监控应用

enabled_onlycategoryquery

apkpipe__add_to_watchlist

添加要监控的新应用

app_namepackage_nametitle_regexmin_versionreleaser_whitelist

apkpipe__remove_from_watchlist

禁用或删除监视列表条目

watchlist_idapp_namedelete

apkpipe__search_feed

搜索缓存或实时的 RSS 订阅源

queryis_regexfeed_urllimit

apkpipe__trigger_poll

手动运行一次订阅源轮询周期

feed_id(可选)

apkpipe__download_url

手动提交下载链接

urlapp_nameversionreleaser

apkpipe__get_history

获取下载历史和审计日志

limitstatusquery

apkpipe__get_system_status

查询健康状态、数据库统计、存储使用情况

AI 代理配置

将 APKPipe 添加到您的 claude_desktop_config.jsonmcp-router 中:

{
  "mcpServers": {
    "apkpipe": {
      "command": "python",
      "args": ["-m", "apkpipe.mcp.server"],
      "env": {
        "APKPIPE_DATABASE_URL": "sqlite+aiosqlite:////data/apkpipe.db",
        "APKPIPE_DOWNLOAD_DIR": "/downloads"
      }
    }
  }
}

或通过 Streamable HTTP / SSE 端点连接:

http://localhost:8429/mcp/sse

🌐 REST API 参考

交互式 OpenAPI / Swagger UI 可在 http://localhost:8429/docs 访问。

监视列表端点

  • GET /api/watchlist - 列出所有监视列表项,支持可选搜索/过滤。

  • POST /api/watchlist - 向监视列表添加新应用。

  • GET /api/watchlist/{id} - 获取特定的监视列表条目。

  • PUT /api/watchlist/{id} - 更新监视列表项。

  • DELETE /api/watchlist/{id} - 移除监视列表条目。

订阅源端点

  • GET /api/feeds - 列出所有已配置的 RSS 订阅源。

  • POST /api/feeds - 添加新的 RSS 订阅源。

  • POST /api/feeds/{id}/poll - 触发对指定订阅源的立即轮询。

  • POST /api/feeds/poll-all - 触发对所有启用订阅源的轮询。

下载与历史记录端点

  • GET /api/downloads/queue - 列出下载管道中的活动任务。

  • GET /api/downloads/history - 列出已完成、失败及历史下载记录。

  • POST /api/downloads/manual - 从直接/镜像 URL 触发立即下载。

  • POST /api/downloads/{task_id}/retry - 重试失败的下载任务。

系统与健康检查端点

  • GET /health - 系统健康检查探针。

  • GET /api/settings - 获取当前应用设置。

  • POST /api/settings - 更新运行时配置。


🖥️ Web 仪表盘界面

APKPipe 包含一个内置的 Web 界面,可通过端口 8429 访问:

  • 仪表盘(/:概览指标、活动轮询状态、最近下载和系统存储。

  • 监视列表(/watchlist:添加、编辑、筛选和移除受监控的应用。

  • 订阅源(/feeds:管理 RSS URL、轮询频率,并触发手动同步。

  • 历史记录(/history:已完成下载、执行时间、文件大小和错误追踪的审计轨迹。

  • 设置(/settings:配置 Real-Debrid 令牌、Nextcloud OCC 路径和通知钩子。


🛠️ 开发与测试

本地环境搭建

# Clone repository
git clone https://github.com/spelech/apkpipe.git
cd apkpipe

# Create and activate Python virtual environment
python3 -m venv .venv
source .venv/bin/activate

# Install development dependencies and editable package
pip install -r requirements-dev.txt
pip install -e .

运行测试套件与覆盖率

强制要求**≥ 80% 行覆盖率**

# Run pytest with coverage report
pytest --cov=src/apkpipe --cov-report=term-missing tests/

本地服务器启动

# Start FastAPI application with live reloading
uvicorn apkpipe.main:app --host 0.0.0.0 --port 8000 --reload

📄 许可证

本项目基于 MIT 许可证授权。有关详细信息,请参阅 LICENSE

-
license - not tested
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.

  • Personal assistant MCP server with search, execute, packages, jobs, secrets, and integrations.

  • MCP server for Google Veo AI video generation

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/spelech/apkpipe'

If you have feedback or need assistance with the MCP directory API, please join our Discord server