/embykeeper

一个用于Emby保号的工具箱

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

Embykeeper

自动签到 定时保号 按需水群


Embykeeper 是一个在中文社群规则下用于 Emby 影视服务器的签到和保号的工具, 基于Pyrogram编写并具有可拓展性。

声明

本项目涉及的一切 Emby 服务器与 Embykeeper 开发团队无关,在使用 Embykeeper 时造成的一切损失(包括但不限于 Emby 或 Telegram 账号被封禁或被群封禁)与开发团队无关。

本项目设计初衷是在中文 Emby 社群规则下,保号要求逐渐苛刻(部分要求每月登录或每日签到),这使得休闲时间紧张的人士难以安心使用。本项目仅旨在帮助该类人群保号,不鼓励持有大量 Emby 账号而不使用,导致真正需要的人、为中文影视资源分享和翻译有贡献的人难以获得账号的行为,开发团队也呼吁仅保留1-2个较全面质量较高的Emby服务器。本项目仅提供工具,具体使用形式及造成的影响和后果与开发团队无关。

当您安装并使用该工具,默认您已经阅读并同意上述声明,并确认自己并非出于"集邮"目的而安装。

功能

安装与使用

您可以通过 pip 安装 embykeeper (需要 python >= 3.6):

pip install embykeeper

随后,您需要执行:

embykeeper

命令将会在当前目录生成模板 config.toml 文件,您也可以使用最小配置 (以下敏感信息为生成, 仅做参考):

[proxy]
host = "127.0.0.1"
port = "1080"
scheme = "socks5"

[[telegram]]
api_id = "27894236"
api_hash = "622159182fdd4b15b627eeb3ac695271"
phone = "+8612109347899"

[[emby]]
url = "https://weiss-griffin.com/"
username = "carrie19"
password = "s*D7MMCpS$"

对于 Telegram 而言, 您可以通过 Telegram 官网 申请 api_idapi_hash. 登陆后选择 API development tools, 随后应用信息可以随意填写, 提交时若显示 "Error", 您可能需要更换代理/清除浏览器记录.

然后, 运行:

embykeeper config.toml

您将被询问设备验证码以登录,登录成功后,Embykeeper 将首先执行一次签到和保活, 然后启动群组监控和水群计划任务 (若启用).

恭喜您!您已经成功部署了 Embykeeper, 为了让 Embykeeper 长期后台运行, 您可以运行:

tmux

这将启动一个 tmux 终端,您可以在该终端中运行上述命令 (embykeeper config.toml), 并按 Ctrl + B, 松开 B 再按 D, 以脱离 tmux 终端。

您随时可以通过运行:

tmux a

以重新连接到 tmux 终端.

支持 Embykeeper

贡献者名单
  • 暂无
活跃开发者名单
通过爱发电赞助

kitty

配置项

设置项 值类型 简介 默认值
timeout int Telegram机器人签到超时 (秒) 60
retries int Telegram机器人签到错误重试次数 10
concurrent int Telegram机器人签到最大并发 2
random int Telegram机器人签到定时任务时间随机量 (分钟) 15
captcha_service str Nebula 签到所使用的验证码服务 #5 disabled
captcha_service_key str Nebula 签到所使用的验证码服务秘钥 empty
proxy dict 代理设置 {}
telegram list Telegram账号设置 (支持多账号) []
emby list Emby账号设置 (支持多账号) []

proxy 设置可以为:

设置项 值类型 简介 默认值
host str 代理服务器地址 localhost
port int 代理端口号 1080
scheme str 代理协议, 可以为 "socks5" 或 "http" socks5

telegram 设置可以为:

设置项 值类型 简介 默认值
api_id str Telegram官网申请的 Application ID
api_hash str Telegram官网申请的 Application Hash
phone str 账户手机号, 一般为 "+86..."
monitor bool 启用群组监控系列功能 true
send bool 启用自动水群系列功能 false

emby 设置可以为:

设置项 值类型 简介 默认值
url str Emby服务器地址, 一般为 "https://..." 或 "http://..."
username str Emby服务器用户名
password str Emby服务器密码
time int 模拟观看的时间 (秒) 800
progress int 观看后模拟进度条保存的时间 (秒) 1000

代码重用与开发

代码架构如下:

flowchart TD
    A(fa:fa-terminal cli) --> B(fa:fa-telegram telechecker)
    A --> C(fa:fa-play embywatcher)
    B --checker--> E[fa:fa-robot Bot]
    B --monitor--> G[fa:fa-eye Monitor]
    B --messager--> F[fa:fa-message Messager]
    C --watcher--> H[fa:fa-circle-play EmbyWatcher]
    F ---- |schedule| A

主要可以扩展的类位于:

  • embykeeper.telechecker.bots
  • embykeeper.telechecker.monitor
  • embykeeper.telechecker.messager

通常来说, 增加一个机器人的签到非常简单, 您需要在 bots 中增加一个文件 dummy.py:

from .base import BotCheckin

class DummyCheckin(BotCheckin):
    name = "Dummy"
    bot_username = "dummy"
    bot_captcha_len = 4

然后在 embykeeper/telechecker/__init__.py 中注册您的类:

from .bots.dummy import DummyCheckin

然后在 embykeeper/telechecker/main.py 中启用您的类:

CHECKINERS = [
    ...
    DummyCheckin,
]

您即增加一个名为 "Dummy" 的签到器,将会向用户名为 "dummy" 的机器人发送 "/checkin" 并等候一个4位的验证码,识别验证码后将发送.

若您希望识别验证码后点击按钮, 您可以使用 AnswerBotCheckin, 您也可以重写 on_captcha 函数来实现自定义功能:

from .base import AnswerBotCheckin

class DummyCheckin(AnswerBotCheckin):
    ....
    async def on_captcha(self, message: Message, captcha: str):
        for l in captcha:
            try:
                await self.message.click(l)
            except ValueError:
                self.log.info(f'未能找到对应 "{l}" 的按键, 正在重试.')
                await self.retry()
                break

上述代码实现每次按对应一个字符按键的功能.

当您实现一个新的签到器时, 欢迎您提出 Pull Request 以帮助更多人使用!