一个高效、强大且快速的动漫抓取工具。
概览
安装
本项目可以通过不同的机制安装到您的设备上,这些机制按照易用性顺序列出如下。
-
PIP安装包 又称 PIP安装
pip install animdl
-
从源代码安装
首先确保已安装Poetry。
然后运行以下命令:
git clone https://www.github.com/justfoolingaround/animdl.git \ && cd animdl \ && poetry build \ && pip install animdl \ && cd ..
支持
您可以通过这个电子邮件直接联系开发者。然而,最推荐的方式是前往Discord服务器。
如果您遇到问题或想要请求新功能,我们鼓励您提出GitHub issue,相信我,这不会伤害到您。
使用方法
用法: animdl [选项] 命令 [参数]...
选项:
--help 显示此帮助信息并退出
命令:
download 通过查询下载您喜爱的动漫。
grab 将流链接输出到标准输出流以供外部使用。
schedule 了解哪些动漫何时播出。
search 在提供商中搜索动漫。
stream 通过查询流式播放您喜爱的动漫。
如果项目找不到任何受支持的流媒体播放器,stream
选项将自动禁用。
stream
/ download
/ grab
这些命令是项目中的主要命令集。它们都会抓取目标站点,唯一的区别是如何使用它们。
-
stream
选项将流URL传递给播放器,以便您可以无缝地观看动漫。- 流式播放支持使用
pypresence
的Discord Rich Presence。
- 流式播放支持使用
-
download
选项将动漫下载到您的本地机器。- 下载会在您运行项目的目录中进行。
-d
标志也可以用来指定下载文件夹。- 支持Internet Download Manager,可以通过
--idm
标志使用。此下载器无法下载HLS流。 - 项目无法修改内容类型。这意味着
ts
格式的视频需要在下载后通过外部方式转换为其他格式。 - 无法控制下载过程。
- 如果下载速度波动,这是服务器端的问题。项目无法"修复"它。
- 如果下载速度慢,这取决于服务器的上传速度。项目无法"修复"它。速度测试不可靠,其结果不会对应于通过项目获得的下载速度。
- 项目采用最快速和最直接的下载方式,没有进一步的优化,就这样。
-
grab
选项只是将流URL输出到标准输出流。- 这对于外部使用和测试很有用。
animdl stream "海贼王"
可以通过使用提供商前缀指定提供商,例如9anime:海贼王
将使用9Anime提供商。
您可以指定提供商的直接URL;项目将自动检测提供商并继续抓取。此方法忽略搜索。
-r
/ --range
参数
此参数由stream、download和grab共享,可用于为选择剧集提供自定义范围。
- 此参数构建一个剧集检查,因此,如果剧集数量不符合抓取数量,不会抛出错误。
- 此参数可以按反向顺序使用,构造器会自动修正顺序。
- 范围交叉不会导致问题。
1
将被视为从1到1的单一范围。1-2
将被视为从1到2的范围。1-2,230-340
将被视为两个不同的检查。第一个检查将从1
到2
,第二个从230
到340
。- 您可以使用任何分隔符,项目将自动解析您的范围字符串。
--index
参数
此参数由stream、download和grab共享,可用于自动选择搜索结果。index的默认参数是1
,即第一个流。
--index 2
将自动选择第二个搜索结果,无需提示。
-s
/ --special
参数
此参数由stream和download共享,可用于通过使用-s latest
获取动漫的最新剧集。同样,可以通过latest-2
选择最新的2集。
- 此参数与
-r
兼容,您将获得范围内的最后一集。
-q
/ --quality
参数
此参数非常强大,可用于从流的属性中选择流。
1080
将选择分辨率为1080的流。1080/worst
将执行上述操作,但如果该流不可用,则会选择最差质量的流。best[title]
将选择具有title
属性的最佳流。best[title=r'^DUB']
将选择title
属性匹配正则表达式的流。如果不使用r
,表达式将被视为字面字符串。- 普通整数可以用
best
和worst
替代进行特殊解析。 - 如果你只想要一个属性,不需要在参数中提及质量。
你可以使用grab
命令查看每个流可用的属性。
[
{
"stream_url": "https://yqwym.vizcloud.digital/simple/EqPFI_kQBAro1HhYl67rC8UuoVwHubb7CkJ7rqk+wYMnU94US2El/br/list.m3u8#.mp4",
"headers": {
"referer": "https://vizcloud.digital/embed/83P7OX0N8PLE"
}
},
{
"stream_url": "https://yqwym.vidstream.pro/EqPVIPsMWl322yVezviuGdNz9wsVp_2ySFow5Od52MBlQ9QQG34s9aQ0yhbkTfyI+tzdG4991O3X4fVqACOikmeZRvMNGrBeQ5aivXxFIkYzNJElHAM1icyfowvCviiceQevRCxV9F7i7CIYt0hIz61716gsQxXskJ6eV4Gg4_OC/br/list.m3u8",
"headers": {
"referer": "https://vizcloud.digital/embed/83P7OX0N8PLE"
}
},
{
"stream_url": "https://yzqq.mcloud.to/12a3c523f910040ae8d4785897aeeb0bc52ea15c07b9b6fb0a427baea96ed0842f54d0184c6820e9f935c248a146eb8df28cc21a817ad2e8c0eefd680420a692659945f21618bd454698bcbf6e42394f3d4ee734180c3281ce9bb00fcaa2298e7913aa40036bbb0abaf07046a14442c2f32c9df66b1a/r/list.m3u8",
"headers": {
"referer": "https://mcloud.to/embed/k18xp6"
}
}
]
这是animdl grab "9anime:one piece"
的美化输出,流有headers
和stream_url
属性。
如果你觉得某个特定的流速度足够快,可以使用-q [stream_url=r'.+mcloud\.to.+']
(或等效的,这只是用于测试)来选择该流。
结论
这个项目拥有强大的命令和参数来辅助它们,有许多未在此处指定但项目中可用的参数。这样做是因为这些命令是高级用法命令,可能会造成混淆。如有疑问,随时询问。
提供商
请查看animdl的官方提供商基准测试。
该存储库中的图片每隔几小时自动更新,因此请注意开发人员已经知道哪些出现问题。
由于DDoS保护服务,某些提供商可能无法工作。我们尽最大努力修复可修复的问题。即使其中一个失效,项目中也有很多替代方案。
项目包含未在此处提及的提供商。这是有意为之。
配置
配置文件可以在全局或本地指定。
你可以使用ANIMDL_CONFIG
环境变量在全局级别指定配置文件。
否则,如果工作目录中有名为animdl_config.yml
的文件,将使用该文件。
此外,配置文件可以全局放置在:
- Windows:
%USERPROFILE%/.animdl/config.yml
- 其他:
$HOME/.config/animdl/config.yml
只使用上述优先顺序中的一个配置文件,配置不会合并。
设置提供商
你可以使用default_provider
配置选项指定默认提供商。
default_provider: animixplay
该项目对每个提供商使用标准化的URL。这使得项目能够使用同一提供商的不同官方代理。
可以通过使用以下配置的site_urls
来指定。
site_urls:
animixplay: https://www.animixplay.to/
质量选择
你可以使用quality_string
配置选项指定默认质量。
quality_string: best[subtitle]/best
播放器选择
你可以使用default_player
配置选项指定默认播放器。
default_player: mpv
你可以更改播放器属性,例如executable
是什么以及在播放器调用期间要传递的opts
。
players:
mpv:
executable: mpv
opts: []
如果找到可执行文件,播放器将有资格使用。
目前支持的播放器有:
ffmpeg设置
你可以让项目强制使用ffmpeg
进行HLS下载(非常慢)以及在有外部字幕可用时合并下载的字幕。
ffmpeg:
executable: ffmpeg
hls_download: false
submerge: true
Discord Rich Presence设置
该项目支持RPC客户端,这只能通过配置启用。要使用此功能,你必须通过以下方式安装pypresence
:
pip install pypresence
discord_presence: true
fzf设置
你可以强制项目搜索提示使用fzf
。
这是一个非常强大的工具,可以大大提升用户体验。显然,你需要安装它并将其添加到PATH中(也可以配置为使用可执行文件路径)。
fzf:
executable: fzf
opts: []
state: true
用户可以通过使用fzf
和animdl stream twist:
来受益,因为这允许他们以一个天堂般的界面浏览整个Twist库。
上面的截图配置了fzf
的用户主题。
日程设置
该项目可用于查看用户珍视的时间和日期格式的每周即将播出的动漫日程。
schedule:
site_url: https://graphql.anilist.co/ # 除非你知道自己在做什么,否则不要更改
date_format: "%b. %d, %A"
time_format: "%X"
请参阅Python datetime.strftime
文档了解可用的格式。
为项目做贡献
不建议任何普通的Python开发人员参与项目代码库,因为使用的机制非常高级,需要对代码库和Python有更深入的理解。 如果您愿意,您可以通过提交拉取请求来为项目做出贡献。
最好的贡献方式是向开发者建议一个提供者或功能,如果您能展示如何实现的逻辑就更好了,您将会得到提及和感谢!
项目免责声明
项目的免责声明可以在此处找到。
简而言之
- 在爬取过程中耗费开发者的脑细胞,以提供最快速和最高效的工具集。
- 带来一个高度强大的代码库,非常适合爬取。
- 默认不使用任何重型依赖。
- 不使用
selenium
或JavaScript评估器进行爬取。 - 集成强大的内部工具,如HLS下载器。
- 尽可能大力维护。
代码再分发
欢迎自由使用并参考代码库。您无需向项目或justfoolingaround致谢,但请进行blame
检查,看看贡献者是否希望得到认可。
作者寄语
我只是为了自我满足而维护这个项目。我很乐意听到您关于项目和问题的反馈(即使与项目无关),所以请随时联系我。
很高兴您能来到这里!
荣誉提名
类似项目
- Shell
- Kotlin
这些都是积极维护的项目,每个项目都有其独特的特性和功能。
内部依赖
- 核心
- 可选
如果没有这些依赖,项目肯定无法完成甚至无法正常工作。
赞助项目
通常赞助意味着资金,进而意味着金钱,但对于本项目而言,它意味着星标。如果您认为项目值得一颗星,请随意给项目加星。此外,您也可以与开发者聊天、开玩笑和争论,这样您就是在用时间付费。
您是一个绝对的传奇,继续保持出色!