Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

adogecheems/animag

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

57 Commits
57 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Animag 2.0

PyPI License Downloads

English Version


项目概述

一个用于搜索动漫磁力链接与种子的Python库,拥有强大的可扩展性。

支持通过插件系统从不同来源搜索动画资源,并能够处理磁力链接、文件大小转换等功能。

使用过旧版本的用户注意,项目名称发生了改变,请务必重新安装。同时由于2.0版本的重构,部分API可能发生变化,建议查看文档。

主要特性

  • 支持多个资源站点的搜索功能
  • 可扩展的插件系统
  • 文件大小单位转换
  • CSV导出功能
  • 磁力链接处理
  • 时间格式转换
  • 错误处理机制

安装

Animag可以使用pip轻松地安装:

pip install animag

使用示例

# 导入搜索器类
from animag import Searcher

# 创建搜索器实例
searcher = Searcher(plugin_name='dmhy',
                    no_search_errors=True)

# 搜索动画(代理仅作为演示)
searcher.search("葬送的芙莉莲",
                collected=True,
                proxies={'http': 'http://localhost:6666',
                         'https': 'http://localhost:6666'})

# 打印搜索结果
print(searcher.get_animes())

"""
示例输出(2024年12月22日的结果):

Search completed successfully: 葬送的芙莉莲
[Anime(time='2024/10/20 12:23', title='[7³ACG\u200b] \u200b葬送的芙莉莲/Sousou no Frieren S01 | 01-28 [简繁字幕] BDrip 1080p AV1 OPUS 2.0\u200b\u200b\u200b', size='17.1GB', magnet='magnet:?xt=urn:btih:...

"""

# 转换所有结果的文件大小为GB
searcher.size_format_all('MB')

# 保存结果到CSV文件
searcher.save_csv("search_results.csv")

支持的插件

站点 插件参数名称 速度 季度全集搜索 size magnet torrent 注意事项
dmhy.org dmhy 适中
dmhy.org dmhy_rss 极快
nyaa.si nyaa 极快
nyaa.si nyaa_rss 极快
acg.rip acgrip 适中
acg.rip acgrip_rss 较慢 设置的最大搜索页数是5页,因为多了会被服务器阻断
可以自行修改模块的MAX_PAGE,不建议超过9
www.tokyotosho.info tokyotosho 适中 需要英文/日文搜索
www.tokyotosho.info tokyotosho_rss 较快 需要英文/日文搜索
animetosho.org animetosho 需要英文搜索
animetosho.org animetosho_rss 需要英文搜索

以上所有插件都需要代理才能正常工作,确保正确配置代理设置

配置选项

搜索器初始化选项

  • plugin_name: 插件名称,默认:'dmhy'
  • parser: 解析器选项,RSS插件无需提供,默认:'lxml'
  • verify: 验证选项,是否验证SSL证书,默认:True
  • timefmt: 时间格式,默认:'%Y/%m/%d %H:%M'
  • no_search_errors: 是否忽略搜索错误,默认:False

搜索选项

  • keyword: 搜索关键词
  • collected: 是否收集结果
  • proxies: 代理设置
  • system_proxy: 是否使用系统代理
  • **extra_options: 额外选项,会并入搜索时的查询字符串

核心组件

Anime类

Anime类用于表示单个动画资源的信息

主要属性

  • time: 发布时间
  • title: 标题
  • size: 文件大小
  • magnet: 磁力链接
  • torrent: 种子链接
  • hash: 磁力链接的哈希值,如果不存在magnet则其不存在

主要方法

  • size_format(): 转换文件大小单位
  • set_timefmt(): 转换时间格式

Searcher类

Searcher类是搜索功能的核心实现

主要功能

  • 初始化搜索插件
  • 执行搜索操作
  • 处理搜索结果
  • 导出数据

主要方法

  • search(): 搜索动画资源
  • get_anime(): 获取单个动画资源
  • get_animes(): 获取所有动画资源
  • size_format_all(): 批量转换文件大小单位
  • save_csv(): 将搜索结果保存为CSV文件
  • set_timefmt(): 设置时间格式

错误处理

库定义了多种错误类型:

  • PluginImportError: 插件导入错误
  • SearchRequestError: 搜索请求错误
  • SearchParseError: 搜索结果解析错误
  • SizeFormatError: 文件大小格式化错误
  • TimeFormatError: 时间格式化错误
  • HashExtractError: 磁力链接哈希提取错误
  • SaveCSVError: CSV保存错误

自定义插件

Animag支持安装自己实现的搜索插件,插件类必须继承BasePlugin类,并实现search()方法。

示例插件

# myplugin.py
# 文件名必须是小写的插件名称

from animag import BasePlugin, Anime
from typing import List, Optional


class MyPlugin(BasePlugin):
    abstract = False  # 这一行必须设置,否则不会被识别为插件

    def __init__(self,
                 parser: Optional[str] = None,
                 verify: Optional[bool] = None,
                 timefmt: Optional[str] = None):
        # 插件初始化
        pass

    def search(self, keyword: str,
               collected: Optional[bool] = None,
               proxies: Optional[dict] = None,
               system_proxy: Optional[bool] = None,
               **extra_options) -> List[Anime] | None:
        # 实现搜索逻辑
        pass

安装插件

将自定义插件安装到animag/plugins目录后,在搜索器初始化时,指定插件名称为myplugin即可,如果没有安装至此目录,也可以手动将模块导入至命名空间。

from animag import Searcher

searcher = Searcher(plugin_name='myplugin')

或者是直接导入插件模块

import myplugin
from animag import Searcher

searcher = Searcher(plugin_name='myplugin')

命令行接口 (CLI)

项目附赠了一个CLI工具,使用 Rich 库实现美观的控制台输出,支持交互式选择。

命令行参数

animag [-h] -s SEARCH [-p PLUGIN] [-c]

必选参数

-s, --search: 搜索关键词

可选参数

  • -h, --help: 显示帮助信息
  • -p, --plugin: 指定搜索插件(默认:'dmhy')
  • -c, --collected: 启用季度全集搜索模式

使用示例

# 基本搜索
animag -s "葬送的芙莉莲"

# 使用特定插件搜索
animag -s "葬送的芙莉莲" -p nyaa

# 搜索季度全集
animag -s "葬送的芙莉莲" -c

注意事项

  1. 目前所有的插件都需要代理才能工作,确保正确配置代理设置
  2. 时间格式必须符合Python的时间格式字符串规范
Morty Proxy This is a proxified and sanitized view of the page, visit original site.