Sign inSign up

xinmeng96/ani2openlist

By xinmeng96

•Updated 1 day ago

Ani2Openlist - 将 ANI Open 视频挂载到 Openlist

Buildkit cache
Image
0

3.2K

xinmeng96/ani2openlist repository overview

⁠Ani2Openlist

License: MIT Python 3.10+ Docker Docker Image Size Docker Pulls

将 ANI Open 项目的视频通过地址树的方式挂载到 Openlist 服务器上。

⁠功能特性

  • 🎬 支持从 ANI Open 获取动画资源
  • 📡 支持 RSS 订阅追更最新番剧
  • 📅 支持按年份和季度筛选动画
  • 🔍 支持自定义关键字搜索
  • 🌐 支持自定义域名反代
  • 📂 自动创建和更新 Openlist UrlTree 存储

⁠安装

⁠使用 Docker(推荐)
# 使用 docker-compose
docker-compose up -d

# 或使用 docker run
docker run -d \
  --name ani2openlist \
  -p 5000:5000 \
  -v $(pwd)/config.yaml:/app/config.yaml \
  -v $(pwd)/logs:/app/logs \
  yourusername/ani2openlist:latest

详见 Docker 部署指南⁠

⁠使用 pip 安装
pip install ani2openlist
⁠从源码安装
git clone https://github.com/yourusername/ani2openlist.git
cd ani2openlist
pip install -e .

⁠快速开始

⁠使用配置文件(推荐)
  1. 复制配置文件模板:
cp config.yaml.example config.yaml
  1. 编辑 config.yaml 配置文件:
# Openlist 服务器配置
openlist:
  url: "http://localhost:5244"
  username: "admin"
  password: "your_password"
  target_dir: "/Anime"

# ANI Open 配置
ani:
  rss_update: true
  src_domain: "aniopen.an-i.workers.dev"
  rss_domain: "api.ani.rip"

# 日志配置
logging:
  level: "INFO"
  1. 运行程序:
# 使用默认配置文件 config.yaml
python cli.py

# 或指定配置文件
python cli.py -c /path/to/config.yaml
  1. 或在 Python 代码中使用:
import asyncio
from ani2openlist import Ani2Openlist, load_config

async def main():
    # 从配置文件加载
    config = load_config("config.yaml")
    
    # 创建实例
    ani = Ani2Openlist(config=config)
    
    # 运行更新
    await ani.run()

if __name__ == "__main__":
    asyncio.run(main())
⁠使用代码配置
⁠基本用法
import asyncio
from ani2openlist import Ani2Openlist

async def main():
    # 创建 Ani2Openlist 实例
    ani = Ani2Openlist(
        url="http://localhost:5244",  # Openlist 服务器地址
        username="admin",              # Openlist 用户名
        password="password",           # Openlist 密码
        target_dir="/Anime",           # 挂载目录
        rss_update=True                # 使用 RSS 追更
    )
    
    # 运行更新
    await ani.run()

if __name__ == "__main__":
    asyncio.run(main())
⁠使用 Token 认证
ani = Ani2Openlist(
    url="http://localhost:5244",
    token="your-openlist-token",
    target_dir="/Anime",
    rss_update=True
)
⁠按季度获取动画
ani = Ani2Openlist(
    url="http://localhost:5244",
    username="admin",
    password="password",
    target_dir="/Anime",
    rss_update=False,
    year=2024,
    month=10  # 2024年10月(秋季)
)
⁠使用自定义关键字
ani = Ani2Openlist(
    url="http://localhost:5244",
    username="admin",
    password="password",
    target_dir="/Anime",
    rss_update=False,
    key_word="2024-10"  # 自定义关键字
)
⁠自定义域名反代
ani = Ani2Openlist(
    url="http://localhost:5244",
    username="admin",
    password="password",
    target_dir="/Anime",
    rss_update=True,
    src_domain="your-aniopen-proxy.com",  # ANI Open 反代域名
    rss_domain="your-rss-proxy.com"       # RSS 反代域名
)

⁠配置说明

⁠配置文件结构

配置文件使用 YAML 格式,包含以下几个部分:

⁠Openlist 配置
openlist:
  url: "http://localhost:5244"     # Openlist 服务器地址
  username: "admin"                # 用户名(与 token 二选一)
  password: "password"             # 密码(与 token 二选一)
  token: "your-token"              # Token 认证(优先使用)
  target_dir: "/Anime"             # 挂载目录
  update_timeout: 120              # 存储写回响应等待时间(秒)
⁠ANI Open 配置
ani:
  rss_update: true                          # 使用 RSS 追更
  year: 2024                                # 动画年份(rss_update=false 时)
  month: 10                                 # 动画季度(rss_update=false 时)
  key_word: "2024-10"                       # 自定义关键字
  src_domain: "aniopen.an-i.workers.dev"   # ANI Open 源域名
  rss_domain: "api.ani.rip"                # RSS 域名
⁠日志配置
logging:
  level: "INFO"                    # 日志级别: DEBUG/INFO/WARNING/ERROR
  format: "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
  file: "logs/ani2openlist.log"       # 日志文件(可选)
  max_bytes: 10485760              # 日志文件最大大小(可选)
  backup_count: 5                  # 保留的日志文件数量(可选)
⁠命令行参数

命令行参数会覆盖配置文件中的设置:

# 指定配置文件
python cli.py -c config.yaml

# 覆盖配置文件中的参数
python cli.py --url http://localhost:5244 --username admin --password pass

# 使用 RSS 追更
python cli.py --rss

# 指定年份和季度
python cli.py --year 2024 --month 10

# 使用自定义关键字
python cli.py --keyword "2024-10"

⁠参数说明

参数类型默认值说明
urlstr"http://localhost:5244⁠"Openlist 服务器地址
usernamestr""Openlist 用户名
passwordstr""Openlist 密码
tokenstr""Openlist 永久令牌(与用户名密码二选一)
target_dirstr"/Anime"挂载到 Openlist 的目录
rss_updateboolTrue是否使用 RSS 追更最新番剧
yearint | NoneNone动画年份
monthint | NoneNone动画季度(1, 4, 7, 10)
src_domainstr"aniopen.an-i.workers.dev"ANI Open 项目地址
rss_domainstr"api.ani.rip"RSS 订阅地址
flaresolverr_urlstr""可选 FlareSolverr 地址,仅用于手动目录扫描
flaresolverr_timeoutint60000FlareSolverr 浏览器请求超时(毫秒)
resource_domainstr""手动扫描生成链接使用的资源域名,留空沿用源域名
http_timeoutfloat30普通 HTTP 请求超时(秒)
storage_update_timeoutfloat120存储写回响应等待时间(秒),配置键为 openlist.update_timeout
key_wordstr | NoneNone自定义关键字
configConfig | NoneNoneConfig 对象(优先使用)

FlareSolverr 会话、配置示例及源站兼容性限制见 FlareSolverr 目录扫描⁠。

⁠项目结构

ani2openlist/
├── ani2openlist/           # 主包
│   ├── __init__.py
│   ├── ani2openlist.py    # 核心功能
│   ├── openlist/          # Openlist 客户端
│   │   ├── __init__.py
│   │   ├── client.py
│   │   ├── path.py
│   │   └── storage.py
│   ├── core/           # 核心模块
│   │   ├── __init__.py
│   │   ├── config.py   # 配置管理
│   │   └── logger.py   # 日志管理
│   └── utils/          # 工具类
│       ├── __init__.py
│       ├── openlist.py
│       ├── http.py
│       ├── multiton.py
│       ├── retry.py
│       ├── singleton.py
│       └── url.py
├── examples/           # 示例代码
│   ├── config_usage.py # 配置文件使用示例
│   └── ...
├── config.yaml.example # 配置文件模板
├── config.yaml        # 配置文件
├── requirements.txt   # 依赖
├── setup.py          # 安装配置
├── cli.py            # 命令行入口
└── README.md         # 说明文档

⁠依赖项

  • Python 3.10+
  • feedparser >= 6.0.11
  • httpx[http2] >= 0.27.2
  • pydantic >= 2.9.2
  • PyYAML >= 6.0

⁠许可证

本项目基于 MIT 许可证开源。详见 LICENSE⁠ 文件。

⁠致谢

⁠相关项目

本项目提取自 AutoFilm⁠

⁠贡献

欢迎提交 Issue 和 Pull Request!

⁠作者

AkimioJR

⁠更新日志

⁠v1.0.0 (2025-10-14)
  • 首次发布
  • 从 AutoFilm 项目独立出来
  • 支持 RSS 追更和按季度获取动画
  • 支持自定义关键字和域名反代

Tag summary

Content type

Image

Digest

sha256:4bcea397e…

Size

52.7 MB

Last updated

1 day ago

docker pull xinmeng96/ani2openlist