Skip to main content

littleuqu

小小优趣 Python CLI:短信登录、电影/动画/熏听分类查询、目录展开与下载。

安装

uv tool install littleuqu
littleuqu --help

升级到最新版:uv tool upgrade littleuqu

HLS 合并与音轨提取需要 ffmpeg(macOS:brew install ffmpeg)。 从源码开发:uv sync --group dev,随后 uv run littleuqu --help

登录

littleuqu login
littleuqu auth status
littleuqu auth logout

login 输入手机号后会发送短信。已有验证码可用 login --mobile PHONE --code CODE, 但交互输入更适合避免 shell 历史保存验证码。会话保存在 platformdirs 用户配置目录,权限 0600。 可用 LITTLEUQU_CONFIG_DIR 指定目录。 客户端优先使用 Python 运行时的系统 CA bundle,兼容安装了本机代理证书的环境;也可用 LITTLEUQU_CA_BUNDLE=/path/to/ca.pem 显式指定,TLS 校验不会被关闭。 登录返回 refreshToken,但刷新接口尚未实现,目前过期后需要重新登录。 儿童档案查询接口尚未实现,可 auth set-child ID --age-days N 设置。

查询

littleuqu categories
littleuqu categories 电影
littleuqu categories 动画 --json
littleuqu list 电影 --filter type=2 --all-pages
littleuqu list 动画 --filter 主题=儿歌 --filter 语言=英文 --all-pages
littleuqu list 熏听 --filter type=3 --json
littleuqu show 动画 44
littleuqu show 电影 116
littleuqu show 熏听 382

类别别名:movie / animation / audio。筛选项来自接口,支持名称和数字值,0 表示全部。 list 默认第 1 页、每页 16 条,--all-pages 遍历全部页。按类别和资源类型/ID 去重。 当前将 page.offset 按页码递增,检测重复页时会报错而非静默截断。

下载

# 查看计划,不请求播放、不创建下载文件
littleuqu download 动画 44 --season 169 --dry-run
# 下载一集视频(不请求 PDF 附件)
littleuqu download 动画 44 --episode 5294 --media video
# 视频、字幕、封面和元数据
littleuqu download 动画 44 --season 169 --media video,files
# 显式从视频提取音轨(保留中间视频)
littleuqu download 动画 44 --episode 5294 --media video,audio --extract-audio
# 按分类批量下载,最多 5 集
littleuqu download 动画 --filter subjectType=1001 --all --limit 5 --media video
# 下载电影视频、字幕、中英文 PDF、封面和元数据
littleuqu download 电影 116
# 下载熏听专辑的一条音轨并提取为 M4A
littleuqu download 熏听 382 --episode 11281 --media audio
# 下载整个熏听专辑;auto 对熏听等同于 audio,files
littleuqu download 熏听 382
# 已有音频、PDF、ZIP、MP4 或 M3U8 直链
littleuqu fetch 'https://example.com/audio.mp3' -o audio.mp3
littleuqu fetch 'https://example.com/playlist.m3u8' -o video.mp4

--output 指定目录;--jobs 控制 HLS 分片并发(默认 4);--overwrite 强制重下。 --quality 默认对动画/电影使用 SD,对熏听使用 FD;--lang 默认对电影使用 2, 对动画/熏听使用 -1。其他值需服务端支持。

文件按 动画/作品_ID/季_ID/序号_集名_ID 组织。完成标记记录文件长度,重复运行跳过已完成文件。 直链使用 .part、ETag/Last-Modified 与 Range 续传;无验证器或服务器忽略 Range 时重新下载。 HLS 支持普通点播 TS、主列表选择、AES-128 正确 IV/密钥、分片缓存、签名刷新和 CDN 切换。 目前 byte-range/fMP4、独立音轨主列表和非 AES-128 加密会明确报错。 媒体请求不发送账户 token;API 请求保留 TLS 校验。

下载报告 download-report.json 包含每项 complete/partial/failed 状态。 退出码:0 成功(或 dry-run 成功生成计划);1 参数/接口/环境错误;2 批量结果存在未完成项。 使用 --media files 时,已知 SRT、封面和元数据可以保存;若服务端显示存在 PDF, 报告会明确标记 partial,避免误认为附件齐全。报告不会保存临时签名播放地址。

当前接口覆盖

类别 分类/列表 季集目录 播放下载
动画 已实现 已实现(/coreapp/v2/ip/pdf 已实现 HLS、SRT
电影 已实现 已实现(film/detail/v2 已实现 HLS、SRT、中英文 PDF、封面
熏听 已实现 已实现(listen/content/listsongList 已实现 MP4/M3U8 获取、M4A 提取、原始 MP3、SRT/LRC、封面

熏听当前覆盖 LISTEN_ADLISTEN_VDLISTEN_FILM。遇到其他 rssType 会明确报错。 download --all 会遍历三类。 fetch 可下载手头已有的音视频/附件直链。

待补充:熏听除 LISTEN_AD/LISTEN_VD/LISTEN_FILM 外的资源类型、动画和熏听的 PDF 地址、 动画整季 ZIP、儿童档案与 token 刷新接口。

验证

uv run pytest
uv run ruff check src tests
uv build

测试使用脱敏合成响应和本地 HTTP 服务,不发送短信、不访问真实内容服务。

本次验证结果

  • 15 项测试通过;Ruff 检查通过。
  • 真实下载 Baby Shark(动画 44 / 集 5294),MP4 约 41 MB、178.926 秒,包含 H.264 视频与 AAC 音轨。
  • 真实下载熏听专辑 382 的音轨 11281,并提取为 AAC/M4A,约 2.4 MB、310.1 秒。
  • 真实下载 LISTEN_AD 专辑 65 的歌曲 918,保存原始 320 kbps MP3、LRC 和封面。
  • 电影 116 的详情和播放接口实测通过,返回完整 SD M3U8、字幕和中英文 PDF 地址。
  • 电影 116 的 SRT、中英文 PDF 和封面已实际下载并校验文件格式。
  • 本机代理环境使用系统 CA 完成严格 TLS 校验;未关闭证书验证。
  • wheel 与源码包构建通过,打包内容不含下载文件。

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

littleuqu-0.3.1.tar.gz (55.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

littleuqu-0.3.1-py3-none-any.whl (21.4 kB view details)

Uploaded Python 3

File details

Details for the file littleuqu-0.3.1.tar.gz.

File metadata

  • Download URL: littleuqu-0.3.1.tar.gz
  • Upload date:
  • Size: 55.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for littleuqu-0.3.1.tar.gz
Algorithm Hash digest
SHA256 ce8adc9b0874d71025fee4be6ec0beea7258360d140983b804559e231fea9295
MD5 1a8c2c28699eacd48f94ccbedb82ba56
BLAKE2b-256 7ad4ddbd0bf45f2351f3be62018a4199be7b5c34900bfaf69c2315ef2a7fb6c1

See more details on using hashes here.

File details

Details for the file littleuqu-0.3.1-py3-none-any.whl.

File metadata

  • Download URL: littleuqu-0.3.1-py3-none-any.whl
  • Upload date:
  • Size: 21.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for littleuqu-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 2269f8ef513f8ec3d79f85110c2aa6c2244c42bac74a8efd91206deb702af9e9
MD5 7f60ad271f39dc49a3fe4427fa5f07bb
BLAKE2b-256 98181dc5be4848ef0264c4e690643adc87a4902151d580860df585663e613de8

See more details on using hashes here.

Release history Release notifications | RSS feed

0.3.2

2 files

This release

0.3.1 This release

2 files

0.3.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page