acfunsdk - UNOFFICIAL
Project description
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
相关组件
- [x]
acfunsdk-ws为acfunsdk提供websocket支持- [x]
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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file acfunsdk-0.9.8.tar.gz.
File metadata
- Download URL: acfunsdk-0.9.8.tar.gz
- Upload date:
- Size: 86.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4279c7861b4febb63d9b44b9ee06d2a0c516ed7b7aeebc5174b709a2a81badf5
|
|
| MD5 |
40bdb69e7cacf7d190810b4c877a6b31
|
|
| BLAKE2b-256 |
27c2cbfd77a2c7eabfb583e697147de223b8182d502eba0df6f94189108da47c
|
File details
Details for the file acfunsdk-0.9.8-py3-none-any.whl.
File metadata
- Download URL: acfunsdk-0.9.8-py3-none-any.whl
- Upload date:
- Size: 69.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cd251374d815e95798628633f96ef541e32067bf56a1dd18f760c78e45720654
|
|
| MD5 |
d3cd1c4a470e1ced3a9b87720ebdd81c
|
|
| BLAKE2b-256 |
924964a32ed40c791852d932f653bd330a542b92bf4a2e64da7c62a0184d709f
|