acfunsdk - UNOFFICEICAL
acfunsdk是 非官方的 AcFun弹幕视频网 Python库。
声明:
acfunsdk是python的学习工具,并未破解任何acfun相关内容。代码完全公开,仅用于交流学习。 如涉及版权等相关问题,请遵守acfun相关协议及法律法规。如有bug或其他疑问,欢迎发布issues。
Python : Python>=3.10, 本体请自行下载安装。
从PyPI安装
python -m pip install acfunsdk
从源码开发(uv)
uv sync --all-groups
uv run pytest
uv build
根目录 .python-version 固定为 3.10,uv 会按此创建/同步 .venv(可用 uv python install 3.10 安装解释器)。
测试(依赖外网;访客用例中的 URL 与 examples/acer_demo.py 对齐,列表仅在 tests/demo_urls.py 供 parametrize 使用):
# 仅访客 / 公开 URL(适合 CI)
uv run pytest -m "not requires_cookies"
# 全量(需已配置登录 Cookie,见下)
uv run pytest
AcSource 地址探测(tests/test_source_urls.py,标记 integration + source_urls):对 acfunsdk/source.py 中 AcSource 的 routes / apis / app_apis / domains、静态资源 URL 及 websocket_links 做可达性检查(HTTP 优先 HEAD、必要时 GET;WSS 做 TLS 握手)。需稳定外网;部分 CDN 在简单探测下会返回 502,用例会记为 xfail 而不导致套件失败。
# 只跑 AcSource 探测(约 200+ 条 HTTP + 若干 WSS)
uv run pytest tests/test_source_urls.py -m integration
# 或按 pytest 标记筛选
uv run pytest -m source_urls
# 查看通过 / xfail 等摘要(含 xfail 原因)
uv run pytest tests/test_source_urls.py -m integration -ra --tb=no -q
# 无网络 CI:跳过本文件全部用例
set ACFUNSDK_SKIP_SOURCE_URLS=1
uv run pytest tests/test_source_urls.py -m integration
# (Linux / macOS)export ACFUNSDK_SKIP_SOURCE_URLS=1
# 单次请求超时(秒,默认 20)
set ACFUNSDK_SOURCE_URL_TIMEOUT=30
uv run pytest tests/test_source_urls.py -m integration
登录相关用例需环境变量 ACFUNSDK_TEST_LOADING(与 Acer(loading=...) 一致,且对应文件名 <该字符串>.cookies)。默认在 tests/ 目录下查找 Cookie,可通过 ACFUNSDK_TEST_COOKIE_DIR 指定目录。
示例脚本(仓库根目录执行):
python examples/acer_demo.py
相关组件
acfunsdk-ws为acfunsdk提供websocket支持acsaver为acfunsdk提供内容保存下载功能acfunsdk-cli为acfunsdk提供命令行支持,TUI
使用方法
实例化获取对象
from acfunsdk import Acer
# 实例化一个Acer
acer = Acer()
# 登录用户(成功登录后会自动保存 '<用户名>.cookies')
# 请注意保存,防止被盗
acer.login(username='you@email.com', password='balalabalala')
# 读取用户(读取成功登录后保存的 '<用户名>.cookies')
acer.loading(username='13800138000')
# 每日签到,领香蕉🍌
acer.signin()
# 通过链接直接获取内容对象
# 目前支持 9种内容类型:
# 视 频: https://www.acfun.cn/v/ac4741185
demo_video = acer.get("https://www.acfun.cn/v/ac4741185")
print(demo_video)
# 文 章: https://www.acfun.cn/a/ac37416587
demo_article = acer.get("https://www.acfun.cn/a/ac37416587")
print(demo_article)
# 合 集: https://www.acfun.cn/a/aa6001205
demo_album = acer.get("https://www.acfun.cn/a/aa6001205")
print(demo_album)
# 番 剧: https://www.acfun.cn/bangumi/aa5023295
demo_bangumi = acer.get("https://www.acfun.cn/bangumi/aa5023295")
print(demo_bangumi)
# 个人页: https://www.acfun.cn/u/39088
demo_up = acer.get("https://www.acfun.cn/u/39088")
print(demo_up)
# 动 态: https://www.acfun.cn/moment/am2797962
demo_moment = acer.get("https://www.acfun.cn/moment/am2797962")
print(demo_moment)
# 直 播: https://live.acfun.cn/live/378269
demo_live = acer.get("https://live.acfun.cn/live/378269")
print(demo_live)
# 分 享: https://m.acfun.cn/v/?ac=37086357
demo_share = acer.get("https://m.acfun.cn/v/?ac=37086357")
print(demo_share)
# 涂鸦(单页): https://hd.acfun.cn/doodle/knNWmnco.html
demo_doodle = acer.get("https://hd.acfun.cn/doodle/knNWmnco.html")
print(demo_doodle)
异步使用
import asyncio
from acfunsdk import Acer
async def main():
acer = Acer()
# 异步获取内容对象
demo_video = await acer.get_async("https://www.acfun.cn/v/ac4741185")
print(demo_video)
asyncio.run(main())
依赖库
依赖: 以 pyproject.toml 为准(requirements.txt 为 pip 兼容的简要列表)
httpx>=0.27lxml>=5.3beautifulsoup4>=4.12
参考 & 鸣谢
- AcFun 助手 是一个适用于 AcFun( acfun.cn ) 的浏览器插件。
- AcFunDanmaku 是用C# 和 .Net 6编写的AcFun直播弹幕工具。
- 实现自己的AcFun直播弹幕姬 @財布士醬
- QQ频道“AcFun开源⑨课”
- 使用 uv 管理依赖与构建
Special Thanks:
JetBrains Licenses for Open Source Development - Community Support
About Me
Metadata
Release files for acfunsdk 0.9.8
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| acfunsdk-0.9.8.tar.gz | 86.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| acfunsdk-0.9.8-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 155.8 kB
Release files / acfunsdk-0.9.8.tar.gz
| Download URL | acfunsdk-0.9.8.tar.gz |
|---|---|
| Size | 86.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4279c7861b4febb63d9b44b9ee06d2a0c516ed7b7aeebc5174b709a2a81badf5
|
|
BLAKE2b-256 checksum How to use checksums |
27c2cbfd77a2c7eabfb583e697147de223b8182d502eba0df6f94189108da47c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.3
|
Release files / acfunsdk-0.9.8-py3-none-any.whl
| Download URL | acfunsdk-0.9.8-py3-none-any.whl |
|---|---|
| Size | 69.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
cd251374d815e95798628633f96ef541e32067bf56a1dd18f760c78e45720654
|
|
BLAKE2b-256 checksum How to use checksums |
924964a32ed40c791852d932f653bd330a542b92bf4a2e64da7c62a0184d709f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.3
|