Aniyomi扩展开发指南
项目概述
Aniyomi是一个基于Android 6.0+的免费开源动漫阅读器,本项目提供了完整的扩展开发框架和多个功能模块,支持开发者创建自定义的动漫源扩展。项目包含Google Drive集成、Stremio支持等高级功能。
功能特性
核心功能
- 多源支持:可同时集成多个动漫数据源
- Google Drive集成:直接播放Google Drive中的视频文件
- Stremio支持:集成Stremio流媒体服务
- 本地化管理:支持本地动漫文件管理
- 智能过滤:提供强大的搜索和过滤功能
扩展特性
- 模块化设计:采用Gradle模块化架构
- 灵活配置:支持多种配置选项和自定义设置
- 安全认证:集成Google登录和安全验证
- 缓存优化:智能缓存机制提升性能
安装指南
环境要求
- Android 6.0及以上版本
- Gradle构建工具
- Java/Kotlin开发环境
手动安装
将以下链接添加到Aniyomi的仓库设置中:
ruby
https://raw.githubusercontent.com/yuzono/anime-repo/repo/index.min.json
依赖配置
在build.gradle
中添加核心依赖:
kotlin
dependencies {
implementation 'aniyomi.lib:extension-api:1.4.0'
implementation 'aniyomi.lib:crypto-aes:1.4.0'
implementation 'aniyomi.lib:unpacker:1.4.0'
implementation 'aniyomi.lib:synchrony:1.4.0'
}
使用说明
Google Drive扩展配置
添加驱动器路径
在扩展设置中添加Google Drive文件夹链接:
ruby
https://drive.google.com/drive/folders/some-long-id
支持多个路径,用分号分隔:
ruby
[Weekly episodes]https://drive.google.com/drive/folders/id1;[Monthly episodes]https://drive.google.com/drive/folders/id2
高级选项配置
kotlin
// 设置递归深度
"https://drive.google.com/drive/folders/some-long-id#3"
// 设置集数范围
"https://drive.google.com/drive/folders/some-long-id#1,2,7"
Stremio扩展配置
服务器设置
kotlin
// WebUI URL配置
webui_url = "https://your-stremio-server.com"
// 服务器URL用于种子流播放
server_url = "https://torrent-server.com"
账户登录
kotlin
email = "your-email@example.com"
password = "your-password"
addons = "https://addon-server.com/manifest.json"
核心代码
扩展主类结构
kotlin
class GoogleDriveExtension : AnimeSource() {
// 核心变量定义
override val name = "Google Drive"
override val baseUrl = "https://drive.google.com"
override val lang = "all"
// 流行动漫列表
override suspend fun getPopularAnime(page: Int): AnimesPage {
// 实现获取热门动漫逻辑
return AnimesPage(animeList, hasNextPage)
}
// 搜索功能
override suspend fun getSearchAnime(
page: Int,
query: String,
filters: AnimeFilterList
): AnimesPage {
// 实现搜索逻辑
return AnimesPage(searchResults, hasNextPage)
}
// 动漫详情
override suspend fun getAnimeDetails(anime: Anime): DetailedAnime {
// 获取动漫详细信息
return DetailedAnime.create()
}
}
过滤器实现
kotlin
class DrivePathFilter : Filter.Text("Drive Path") {
override fun filter(anime: Anime): Boolean {
// 实现基于驱动器路径的过滤逻辑
return anime.url.contains(drivePath)
}
}
class SingleFolderFilter : Filter.Text("Add single folder") {
override fun filter(anime: Anime): Boolean {
// 单文件夹过滤实现
return anime.url == folderUrl
}
}
视频加载器
kotlin
class GoogleDriveVideoLoader : VideoLoader() {
suspend fun loadEpisodes(anime: Anime): List<Episode> {
// 从Google Drive加载剧集
val driveFiles = fetchDriveFiles(anime.url)
return parseEpisodes(driveFiles)
}
suspend fun getVideoUrl(episode: Episode): String {
// 获取视频播放URL
return generateStreamingUrl(episode.url)
}
private suspend fun fetchDriveFiles(folderUrl: String): List<DriveFile> {
// 调用Google Drive API获取文件列表
// 实现递归遍历和文件过滤
return emptyList()
}
}
认证管理器
kotlin
class GoogleAuthManager {
suspend fun authenticate(): Boolean {
// 处理Google登录流程
try {
// WebView认证实现
return performWebViewLogin()
} catch (e: Exception) {
// 处理认证失败
return false
}
}
fun clearCookies() {
// 清除认证cookies
webView.clearCache(true)
webView.clearFormData()
webView.clearHistory()
webView.clearSslPreferences()
}
}
配置管理器
kotlin
class ExtensionSettingsManager(context: Context) {
private val prefs = context.getSharedPreferences("extension_settings", Context.MODE_PRIVATE)
fun saveDrivePaths(paths: String) {
// 保存驱动器路径配置
prefs.edit().putString("drive_paths", paths).apply()
}
fun getDrivePaths(): String {
// 获取已配置的驱动器路径
return prefs.getString("drive_paths", "") ?: ""
}
fun parseDrivePathOptions(path: String): DrivePathOptions {
// 解析路径配置选项(名称、深度、范围等)
return DrivePathOptions(
name = extractName(path),
depth = extractDepth(path),
range = extractRange(path)
)
}
}
以上代码展示了Aniyomi扩展的核心架构,包括主类定义、过滤器实现、视频加载、认证管理和配置处理等关键组件,为开发者提供了完整的扩展开发参考。