XilinJia/Podcini · 文件 下载 ZIP
文件最后提交记录最后更新时间
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈
Podcini
一款开源的播客应用,调谐于 Puccini
,点缀以 pasticcini
,并以 porcini
增香,诚邀您和谐的心跳。
为避免对可能违反某些法律条款的怀疑和指控,我决定自 2025 年 1 月 13 日起停止开发、更新和维护此项目。
我将继续推进与本项目兼容但移除了 Youtube 访问权限的项目 Podcini.X。
注意:
翻译服务已迁移至 Crowdin,请参见下方链接。
Podcini.R 7 现已完全基于 Compose,支持自动备份、从 AntennaPod 和 Podcast Addict 导入数据库,以及自定义下载的媒体文件夹。
Podcini.R 6.5 作为重大进步,在应用内引入了 YouTube 和 YT Music 的内容。 这意味着终于:Nessun dorma。更多详情请参见下方的 Youtube 部分或更新日志
若要让 Podcini 显示在 Android Auto 的汽车 HUD 上,请阅读 AnroidAuto.md 以获取说明。
如果您需要投射到外部扬声器或屏幕,应安装 "play" apk,而非 "free" apk,这正是两者之间的区别。
Podcini.R 请求无限制后台活动权限,以实现播放列表的无中断后台播放。 更多详情请参见 this issue
如果您打算通过服务器进行同步,NextCloud 服务器已经过测试,但建议谨慎操作。
本项目基于 2024 年 2 月 5 日的 AntennaPod 分支开发而来。
与 AntennaPod 相比,本项目:
- 采用单模块架构,完全基于
Kotlin,使用 Jetpack Compose 构建,并在media3上启用AudioOffloadMode(对设备电池更友好)。 - 支持处理来自 YouTube 和 YT Music 的内容,以及常规播客和纯 RSS。
- 提供多个自然且循环的播放队列,可与任何播客关联。
- 支持合成播客,并允许将剧集归档到任何合成播客中。
- 允许为每个剧集设置个人笔记、5 级评分和 12 级播放状态。
- 提供针对剧集和播客的复杂过滤和排序功能。
- 推广由策略和单个源(播客)限制设置控制的自动下载。
- 支持将 YouTube 音频/视频内容投射到 Chromecast 扬声器/屏幕(播放应用)。
- 无需服务器即可在设备间突出显示
instant sync。 - 为 RSS 内容提供可读性和文本转语音功能。
- 用现代对象型 Realm DB 替换了 SQLite,用 Coil 替换了 Glide,用协程替换了 RxJava 和线程,用 SharedFlow 替换了 EventBus,用屏幕替换了片段。
该项目旨在利用现代框架,提高效率,并提供更多实用且用户友好的功能。
用法和主要功能描述
点击展开
快速入门
- 在全新安装的 Podcini 中,执行以下任一操作即可开始体验 Podcini 的强大功能:
- 从手机左边缘向右滑动以打开抽屉
- 点击“添加播客”,在新视图中输入任意关键词以搜索所需的播客,参见下文“在线源”部分
- 或者,从抽屉 -> 设置 -> 导入/导出,点击“导入 AntennaPod DB”或“导入 Podcast Addict DB”以导入您从其他应用导出的数据库。
- 或者,从抽屉 -> 设置 -> 导入/导出,点击 OPML 导入以导入包含一组播客的 opml 文件
- 或者,在手机上打开 YouTube 或 YT Music 应用,选择一个频道/播放列表或单个媒体,并将其共享到 Podcini,参见下文“Youtube & YT Music”部分
注意,如果您在 Podcini 中已有订阅,从其他应用导入 OPML 文件或数据库不会清除您在 Podcini 中的现有数据,除非导入的数据库包含您在 Podcini 中已有的共同播客,在这种情况下,导入的数据将覆盖 Podcini 中现有订阅中的那些数据。
播客(源)
- 每个信息源(播客)都可以关联一个队列,允许将下载的媒体添加到队列中
- 除了已订阅的播客外,还可以创建合成播客,其工作方式与已订阅的播客相同,但具有额外功能:
- 剧集可以复制/移动到任何合成播客
- 来自在线信息源的剧集可以存入任何合成播客,而无需订阅该在线信息源
- 从 Youtube 或 YT Music 共享的媒体会被添加到合成播客中
- FeedInfo 视图提供了一个链接,用于直接搜索与作者相关的信息源
- FeedInfo 视图有一个按钮,显示剧集数量,用于打开 FeedEpisodes 视图
- 可以为任何信息源设置 Trash、Bad、OK、Good、Super 评级
- 在 FeedInfo 视图中,可以在“我的观点”下为信息源输入个人评论/笔记
- 在 FeedEpisodes 视图的操作栏上,可以直接访问队列
- 在 FeedEpisodes 视图中长按筛选按钮,可以在不更改筛选设置的情况下启用/禁用筛选
- 播客设置可以在 FeedInfo 和 FeedEpisodes 视图中访问
- “优先流媒体而非下载”现在是单个信息源的设置
- 添加了音频类型设置(Speech、Music、Movie),以改进音频处理
- 添加了仅播放视频信息源音频的设置,
- 设置此选项的一个额外好处是,它使 Youtube 媒体仅流式传输音频内容,从而节省带宽。
- 这与在每个剧集上切换到“仅音频”不同,在这种情况下,视频也会被流式传输
- 没有可播放媒体的 RSS 源可以订阅并阅读/收听(通过 TTS)
- 访问 TTS 有两种方式:从 EpisodeHome 视图的操作栏,以及 FeedEspiosdes 视图的列表中
- 前者立即对可用文本播放 TTS,无论剧集是否有可播放媒体,且应用除播放/暂停外无法控制播放
- 后者仅在剧集没有媒体(纯 RSS)时可用,不播放任何内容,而是构建一个音频文件(类似下载)作为普通媒体播放,并可在 Podcini 中控制速度/快退/快进
剧集
- 在各类剧集视图中新增共享笔记菜单选项
- 不再仅有收藏,而是为每个剧集引入了新的评分系统:垃圾、差、一般、好、超赞
- 不再使用已播放或未播放状态,而是引入了新的播放状态系统:未指定、构建中、新剧集、未播放、稍后、即将、队列、进行中、已跳过、已播放、重播、永久、忽略
- 其中未播放、稍后、即将、队列、已跳过、已播放、重播、永久、忽略可由用户设置
- 当剧集开始播放时,其状态被设置为进行中
- 当剧集被手动设置为队列时,它会根据关联的源队列设置被添加到队列中
- 当剧集被添加到队列时,其状态被设置为队列;当它从队列中移除时,状态(如果低于已跳过)被设置为已跳过
- 在剧集信息视图中,用户可以在“我的观点”下为剧集输入个人评论/笔记
- 新增剧集主视图,具有两种显示模式:网页或阅读器
- 在剧集中,除了“描述”外,还有一个新的“文字稿”字段用于保存从剧集网站获取的文本(如有)
播客/剧集列表
- 订阅页面默认采用列表布局,可针对已订阅的播客选择网格布局
- 全新的订阅排序对话框和机制,基于标题、日期和数量,可与其他条件组合使用
- 针对播客和剧集的全新过滤方式,具有扩展的条件。
- 某些多因素条件选项默认隐藏,点击条件以显示选项。
- 在订阅视图顶部附近,有两个下拉选择器:标签,用于基于标签过滤订阅;队列,用于基于关联队列过滤订阅。
- 在订阅视图中,点击某个源的封面图片会打开 FeedInfo 视图(而非 FeedEpisodes 视图)
- FeedEpisodes 提供选项,通过更改源的“使用宽布局”设置来在列表中显示更大的图片
- 剧集视图提供对各种过滤器的便捷访问:
- AllEpisodes、History 和 Download
- New、Planned(用于 Soon 和 Later)、Repeats(用于 Again 和 Forever)、Liked(用于 Good 和 Super)
- 剧集列表显示在 Episodes、FeedEpisodes 和 OnlineEpisodes 视图中
- 针对播客和剧集列表的新的高效点击和长按操作方式:
- 点击标题区域打开播客/剧集
- 长按标题区域自动进入选择模式
- 选择上方或下方所有项的选项与全选一起显示在操作栏中
- 针对所选(单个或多个)项提示操作选项
- 在剧集列表中,点击剧集图片会打开 FeedInfo 视图
- 剧集列表支持滑动操作
- 列表上的左右滑动操作现在具有指示器,并可即时配置
- 滑动操作可用于执行多选菜单中的任何操作,并且存在一个组合滑动操作
- 向下滑动触发订阅源更新
- 在订阅视图中,所有订阅源都会更新
- 在 FeedEpisodes 视图中,仅更新单个订阅源
- 在剧集列表视图中,如果剧集没有媒体,则显示 TTS 按钮,用于获取转录文本(如果不存在)并随后从转录文本生成音频文件。TTS 音频文件可以像本地媒体一样播放(支持速度设置、暂停和快退/快进)
- 长按任意剧集列表右侧的操作按钮会显示更多选项
- 删除和更新订阅源会立即执行
- 对订阅源或剧集的本地搜索可以分别针对标题、作者(仅限订阅源)、描述(包括剧集中的转录文本)和评论(我的观点)进行指定
队列
- 可使用多个队列:默认提供 5 个队列,用户可重命名或添加至多 10 个队列
- 应用启动时,最近更新的队列将被设为活动队列
- 任何剧集都可以轻松添加/移动到活动队列或任何指定队列
- 任何队列都可以与任何播客关联,以提供自定义的播放体验
- 每个队列都是循环的:如果队列中的最后一项播放完毕,队列中的第一项(如果存在)将被播放
- 每个队列都有一个回收站(可从队列视图的顶栏访问),包含从队列中移除的过往剧集,便于进一步审阅和处理
- 与源关联的队列可以设置为 None,在这种情况下:
- 源中的剧集不会自动添加到任何队列,而是 FeedEpisodes 视图自身形成一个自然队列
- 在 FeedEpisodes 视图中播放剧集时,下一个要播放的剧集按以下方式确定:
- 如果当前播放的剧集已被(手动)添加到活动队列,则为队列中的下一个
- 否则,如果设置了“优先流媒体”,则为基于当前筛选和排序顺序的自然队列中下一个未播放(或 Again 和 Forever)的剧集
- 否则为下一个已下载的未播放(或 Again 和 Forever)剧集
- 队列视图的顶栏上有一个按钮,用于显示关联的源
- 否则,从队列以外的列表播放的剧集为一次性播放,除非该剧集位于活动队列中,在这种情况下,将播放队列中的下一集
玩家
- 在所有页面上显示更便捷的播放器控制
- 重新设计且更高效,在正面显示剧集详情的展开播放器视图
- 播放速度设置已整理,三种速度可单独或组合设置:当前音频、播客和全局
- 更新播放进度有两种机制(可在设置中配置):每 5 秒一次,或自适应地按媒体时长的 2% 间隔进行
- 在播放器详细视图中添加了音量自适应控制,用于设置当前媒体,其优先级高于信息流设置中的设置
- 在设置的“播放”下添加了偏好设置“快进速度”,默认值为 0.0,对话框允许设置 0.0 到 10.0 之间的数值
- 播放器上的“跳到下一集”按钮
- 长按移动到下一集
- 默认情况下,单击无操作
- 如果用户将“快进速度”自定义为大于 0.1 的值,则行为如下:
- 播放期间单击,使用设置的速度播放当前音频
- 再次单击,恢复原始播放速度
- 非播放期间单击无效果
- 在设置的“播放”下添加了偏好设置“回退速度”,默认值为 0.0,对话框允许设置一个浮点数(限制在 0.0 到 1.5 之间)
- 如果用户将“回退速度”自定义为大于 0.1 的值,在播放期间长按播放按钮将进入回退模式并以设定的回退速度播放,单击则退出回退模式
- 流媒体内容在某种程度上等同于已下载的内容
- 在播放器详细视图中启用剧集描述
- 启用片头跳过和片尾跳过
- 播放完毕时标记为已观看
- 流媒体内容会被添加到队列中,并在重启后恢复播放
- 视频播放有三种模式:全屏、窗口和仅音频,它们可以在视频播放器中无缝切换
- 当应用不可见或在应用内切换到其他视图时,视频播放器会自动切换为音频模式。
- 当视频模式设置为仅音频时,在视频剧集的音频播放器上点击图像会打开常规的播放器详细视图
- 播放至总时长 95% 的剧集被视为完全播放
在线源
- 任何在线搜索(通过“添加播客”)都会显示与搜索关键词相关的在线源列表
- 网页地址可作为搜索词
- 长按在线源列表中的某个源会提示直接订阅该源。
- 点击某个源会打开在线源视图,以查看该源的信息或剧集,并可选择订阅该源
- 在线源信息的显示方式与任何本地源类似,并提供订阅或查看剧集的选项
- 在线源的剧集可自由播放(流式传输),无需订阅
- 在线源的剧集可选择性地保留为合成播客,而无需订阅该源
Youtube & YT Music
- Youtube 频道可在播客搜索视图中进行搜索,也可从其他应用(如 Youtube)共享到 Podcini
- Youtube 频道可像普通播客一样订阅
- 订阅 Youtube 频道时,可选择标签以形成独立的播客
- Youtube 或 YT Music 上的播放列表和播客可共享到 Podcini,然后可以像频道一样进行订阅
- 已订阅的频道、播放列表/播客可像普通播客一样更新
- Youtube 或 YT Music 上的单个媒体也可从其他应用共享,并添加到所选的合成信息流中
- Youtube 或 YT Music 上的所有媒体均可播放(仅流媒体),支持全屏或窗口模式下的视频,或后台的纯音频模式
- 信息流偏好设置中的音频和视频质量设置(仅限 Youtube 信息流):全局、低、中、高
- 这些设置优先于全局设置
- 当设置为全局时,视频为最低质量,音频为最高质量(除非为计量网络设置了 prefLowQualityMedia)
- 如果订阅设置为“仅音频”,则在播放时,该订阅中的每个媒体仅获取音频流
- 接受的主机名包括:youtube.com, www.youtube.com, m.youtube.com, music.youtube.com, 和 youtu.be
即时(或 Wifi)同步
- 能够在同一 wifi 网络上的设备之间进行同步,无需服务器(实验性功能)
- 它会同步在两台设备中都存在的剧集的播放状态(位置和已播放状态)(请确保先刷新),且这些剧集已被播放(无论是否完成)
- 目前,每次同步都是全量同步,订阅和媒体文件不支持同步
自动化
- 自动下载算法基于单个订阅源的设置。
- 当在全局设置中启用自动下载时,需要自动下载的订阅源必须在订阅源设置中单独启用。
- 每个订阅源也有自己的下载策略(仅新集(带或不带替换)、最新、最旧或标记为尽快。
- 最新指最近的剧集,带替换时,新剧集将被下载,已下载的旧剧集将被删除
- 每个订阅源都有自己的已下载剧集数量限制(剧集缓存),此限制与应用程序的整体限制共同生效。
- 自动下载在订阅源更新后运行,无论是计划任务还是手动触发
- 任何未下载的剧集(无论来自哪个订阅源)添加到默认队列时,始终包含在自动下载中
- 自动下载运行后,订阅源中状态为新的剧集将更改为未播放。
- 在自动下载订阅源设置中:
- 现在包含独立对话框用于包含和排除过滤器,可以独立指定过滤标记
- 在排除对话框中,有可选复选框“排除短于以下时长的剧集”和“将排除的剧集标记为已播放”
- 睡眠定时器有一个新选项“直到剧集结束”
统计
- Statistics 汇总在指定期间内以及今天已播放的媒体
- 关于播放时间有 2 个数值:duration 和 time spent
- time spent 仅仅是播放媒体所花费的时间,因此播放速度、快退和快进可能会产生影响
- Duration 在 2 种设置下显示不同:"including marked as play" 或否
- 在前者情况下,它是曾经开始播放过的媒体的完整 duration
- 在后者情况下,它是媒体中达到的最大位置
Security and reliability
- 已禁用
usesCleartextTraffic,以使所有内容传输更加私密和安全 - 存在三组日志:已下载的剧集、共享到 Podcini 的内容,以及从 Podcini 移除的内容(无论是合成源中的源还是单个剧集)
- 在导入/导出设置中,新增了一个组合导入/导出
- 它处理偏好设置、数据库和媒体文件,可组合或选择性处理
- 所有内容均保存到您所选目录下的 "Podcini-Backups-(date)" 目录中
- 在导入时,媒体文件必须在数据库导入完成后进行(当选择导入数据库时,该选项被禁用)
- 偏好设置、数据库和媒体文件的单独导入/导出功能已被移除
- 如果需要导入之前导出的偏好设置、数据库或媒体文件,
- 手动创建一个名为 "Podcini-Backups" 的目录
- 将之前的 .realm 文件复制到上述目录中
- 将之前的目录 "Podcini-Prefs" 和/或 "Podcini-MediaFiles" 复制到上述目录中
- 无需复制全部三个,只需复制您需要的部分
- 然后执行组合导入
- 在设置->导入/导出中有一个选项可以开启自动备份
- 如果开启,需要指定间隔(以小时为单位)、文件夹以及保留的副本数量
- 然后偏好设置和数据库将备份到名为 "Podcini-AudoBackups-(date)" 的子文件夹中
- 备份时间是在上次备份时间间隔小时后的 Podcini 下次恢复时
- 要恢复,请使用组合恢复
- 已下载媒体的文件夹可自定义
- 自定义文件夹的使用可更改或重置
- SD 卡中的文件夹也应可用(请有人测试一下)
- 更改后,已下载的媒体文件将从旧文件夹移至新文件夹
- 导出和核对功能在自定义文件夹中也应正常工作
- 播放历史/进度可作为 Json 文件单独导出/导入(在从使用不同 DB 的 Podcini 5 迁移时曾需要此功能。现在似乎导出/导入 DB 并未带来太多好处)。
- 新增核对功能(从剧集视图的下载中访问),以确保已下载的媒体文件与 DB 中的规格同步
- 可从订阅视图中选择性导出播客
- 有一个设置用于禁用/启用 OPML 文件到 Google 的自动备份
- 重新安装 Podcini 后,之前备份到 Google 的 OPML 文件不会自动导入,而是基于用户确认。
有关更改的更多详细信息,请参阅 Changelog
截图
设置


订阅

播客

播客设置

剧集与播放器详情

YouTube 分享、联合发布与媒体

多队列与剧集便捷访问

使用自定义

在线获取订阅源

Android Auto

链接
许可证
Podcini 与其 fork 来源的项目一样,采用 GNU 通用公共许可证 (GPL-3.0) 授权。 您可以在 LICENSE 文件中找到许可证文本。
版权
项目中的新文件和内容由 Xilin Jia 及相关贡献者于 2024 年版权所有。
来自 fork 项目的原始内容保留 AntennaPod 团队的版权。