Skip to content

Releases: aizhimou/pigeon-pod

release 1.30.0

Choose a tag to compare

@aizhimou aizhimou released this 05 Jun 04:12

Changelog

Features

  • Multi-user Support: Introduced multi-user capabilities with role-based access control (RBAC). Only Admin users have permission to manage subscriptions and system configurations, while Standard users can subscribe to existing feeds but cannot modify system-wide settings.
  • User Management: Administrators can now manage user accounts, reset passwords, and list active users.
  • Built-in SSL: Added support for built-in SSL configuration to secure your PigeonPod instance.

Fixes

  • YouTube Sync Stability: Refactored the YouTube synchronization logic to improve reliability and reduce download complexity.
  • Large File Handling: Fixed a transmission issue when streaming or downloading large local media files.
  • UI Resiliency: Resolved frontend issues that could cause blank pages or setting collisions during multi-user sessions.
  • Character Encoding: Fixed a character normalization issue affecting Korean text (NFC).
  • Docker Entrypoint: Improved the Docker entrypoint and standalone startup process for better environment compatibility.

更新日志

新增功能

  1. 多用户支持:支持多用户登录及基于角色的访问控制(RBAC)。明确权限划分:仅 管理员 (Admin) 拥有编辑订阅和系统配置的权限;普通用户 仅能订阅已有的 feed,无法修改系统级配置。
  2. 用户管理:管理员可以管理用户账号,包括查看用户列表、重置密码及删除用户。
  3. 内置 SSL 支持:新增内置 SSL 配置支持,方便为 PigeonPod 实例启用加密连接。

修复问题

  1. 同步稳定性:重构了 YouTube 同步逻辑,提升了同步成功率并降低了下载过程的复杂度。
  2. 大文件传输:修复了传输大型本地媒体文件时可能出现的异常。
  3. 界面可靠性:解决了多用户环境下可能导致的页面白屏或配置项冲突问题。
  4. 字符编码:修复了影响韩文字符显示的编码规范化问题(NFC)。
  5. 环境适配:优化了 Docker 入口脚本及独立运行配置,提升了不同部署环境下的稳定性。

release 1.29.1

Choose a tag to compare

@aizhimou aizhimou released this 27 May 10:47

Changelog

Features

  • Add a configurable sync interval for YouTube playlists, so each playlist can control how often full synchronization runs.
  • Standardize backend log format and language, and add a backend logging guideline to make runtime diagnostics easier to read and maintain.
  • Improve backend download failure logs by including the captured yt-dlp output, making failed download diagnosis more direct.

Fixes

  • Fix YouTube playlist synchronization failures by simplifying the playlist sync flow and removing the legacy snapshot retry path.
  • Improve download stability by simplifying post-download media validation, reducing the chance that completed downloads remain stuck in the Downloading state.

更新日志

新增功能

  1. 新增 YouTube 播放列表同步间隔配置,每个播放列表可以单独控制全量同步的执行频率。
  2. 统一后端日志格式和语言,并新增后端日志规范,让运行时诊断信息更易阅读和维护。
  3. 优化后端下载失败日志:失败时记录捕获到的 yt-dlp 输出,方便更直接地定位下载问题。

修复问题

  1. 修复 YouTube 播放列表同步失败问题:简化播放列表同步流程,并移除旧的 snapshot 重试路径。
  2. 优化下载流程稳定性:简化下载完成后的媒体校验,降低已完成下载卡在 Downloading 状态的概率。

release 1.28.0

Choose a tag to compare

@aizhimou aizhimou released this 03 May 00:02

Changelog

Features

  • Transform YouTube playlist synchronization strategy to use the official YouTube Data API instead of yt-dlp --flat-playlist, significantly improving metadata sync speed and reliability.
  • Show the current retry count and the next scheduled retry timestamp for failed episodes in the dashboard, providing better visibility into the auto-recovery process.
  • Add automatic log rotation to manage application log file sizes more effectively.

Fixes

  • Fix download failures caused by special symbols in file names during the yt-dlp process.
  • Implement execution timeouts for yt-dlp and a task recycling policy to prevent download tasks from being stuck indefinitely in the "downloading" state.

更新日志

新增功能

  1. 重构 YouTube 播放列表同步策略:从 yt-dlp --flat-playlist 切换至官方 YouTube Data API,大幅提升元数据同步的速度与稳定性。
  2. 仪表盘失败任务列表新增显示当前重试次数及下次预定自动重试的时间戳,提升自动恢复过程的透明度。
  3. 新增日志轮转规则,更有效地管理应用程序日志文件大小。

修复问题

  1. 修复由于文件名中包含特殊符号导致 yt-dlp 下载失败的问题。
  2. yt-dlp 执行过程增加超时机制,并引入任务回收策略,防止下载任务无限期卡死在“下载中”状态。

release 1.27.0

Choose a tag to compare

@aizhimou aizhimou released this 14 Apr 10:44

Changelog

Features

  • Add post-download media validation to catch broken or incomplete files before they remain in the library.
  • Add bulk delete actions in the failed episode list so users can clean up failed tasks faster.
  • Add a configurable download file name pattern with variables such as {channel}, {title}, {id}, and {date}.
  • Automatically create a playlist when adding a single YouTube video, so individual videos can be subscribed to and managed like a normal feed.

Fixes

  • Improve YouTube VOD and Premiere detection so episode filtering behaves more accurately.
  • Fix cases where automatically created episodes could be skipped by auto-download tasks.
  • Fix manually submitted download tasks that were not entering the queue in some cases.
  • Fix playlist auto-download behavior by preserving episode order and avoiding unintended auto-downloads when retrying from playlist details.
  • Fix download file name collisions by appending numeric suffixes instead of reusing an existing name.
  • Fix the failed task list layout on small phone screens.

更新日志

新增功能

  1. 新增下载后媒体校验能力,在文件损坏或下载不完整时尽早识别问题,避免异常文件留在媒体库中。
  2. 失败任务列表新增批量删除操作,清理失败任务时更高效。
  3. 新增下载文件名模式配置,支持 {channel}{title}{id}{date} 等变量。
  4. 新增单个 YouTube 视频订阅支持,添加单个视频时会自动生成对应播放列表,便于像普通订阅源一样持续管理。

修复问题

  1. 优化 YouTube VOD 与 Premiere 的识别逻辑,使节目过滤结果更准确。
  2. 修复自动下载任务在部分情况下可能跳过新节目的问题。
  3. 修复手动提交的下载任务在部分情况下未能进入队列的问题。
  4. 修复播放列表自动下载行为,保持节目顺序稳定,并避免在播放列表详情页重试时触发非预期自动下载。
  5. 修复下载文件名冲突问题:当目标文件名已存在时,自动追加数字后缀,避免覆盖已有文件。
  6. 修复小屏手机上失败任务列表的布局异常。

release 1.26.0

Choose a tag to compare

@aizhimou aizhimou released this 20 Mar 04:22

Changelog

Features

  • Add a YouTube feed option to exclude archived live stream VODs from preview results, episode lists, and RSS output.

Fixes

  • Fix manually submitted downloads so they are added to the queue immediately instead of staying outside the normal download pipeline.
  • Fix automatic download refresh so all newly discovered episodes that match the feed rules can enter the download queue instead of some being skipped.
  • Fix the failed-task list layout on small phone screens and make error details easier to view.

更新日志

新增功能

  1. 为 YouTube 订阅新增“排除已结束直播回放”选项,可从预览结果、节目列表和 RSS 输出中隐藏直播回放内容。

修复问题

  1. 修复手动提交的下载任务未进入队列的问题,现在会立即接入统一下载流程。
  2. 修复自动下载刷新时部分符合条件的新节目可能被跳过的问题,现在会正确进入下载队列。
  3. 修复小屏手机上失败任务列表的布局显示问题,并优化错误详情查看体验。

release 1.25.0

Choose a tag to compare

@aizhimou aizhimou released this 15 Mar 08:51

Changelog

Features

  • Add automatic failed-download retry scheduling with exponential backoff, so temporary download errors can recover in the background without immediate manual intervention.
  • Add failed-download notifications with configurable email and webhook delivery, along with digest-based alerts after automatic retries are exhausted.
  • Add yt-dlp runtime management so users can view available runtimes and switch the active runtime directly from the console.

Fixes

  • Move source video text and links to the end of episode descriptions in generated RSS content to keep show notes easier to read.

更新日志

新增功能

  1. 新增失败下载自动重试调度,采用指数退避策略处理临时性下载异常,减少用户立即手动干预的需求。
  2. 新增失败下载通知功能,支持配置 Email 和 Webhook 两种通知方式,并提供重试耗尽后的摘要告警能力。
  3. 新增 yt-dlp 运行时管理能力,用户可以直接在控制台查看可用运行时并切换当前生效的运行时。

修复问题

  1. 调整生成的 RSS 节目描述内容,将 source video 文本和链接移动到末尾,提升 show notes 的整体可读性。

release 1.24.0

Choose a tag to compare

@aizhimou aizhimou released this 11 Mar 00:44

Changelog

Features

  • Expand cookie management with BiliBili cookie support.
  • Add episode sharing so users can share favorite episodes with one click, along with a streamlined public share page that supports direct web playback without login.
  • Add an auto-login flow so users can enter the PigeonPod console without signing in when deployed in an internal network or other trusted environments.
  • Add proxy configuration so both the YouTube Data API and yt-dlp can use custom network proxies.
  • Optimize the mobile home layout and add search to help users quickly find target shows in their subscriptions.

Fixes

  • Refactor the episode metadata storage model so filters only affect the presentation layer instead of sync and persistence, fixing inaccurate YouTube historical data retrieval and simplifying metadata synchronization.
  • Fix task stalls caused by many subscriptions updating concurrently in a short period of time.
  • Fix incorrect tags in RSS content.

更新日志

新增功能

  1. 拓展 Cookie 管理能力,新增 BiliBili 平台 Cookie 支持。
  2. 新增节目分享功能,让用户能一键将喜欢的节目分享给朋友,并配备简洁高效的节目分享页面,让用户无需登录就能直接在 Web 页面收听或收看分享的节目。
  3. 新增自动登录流程,以便用户在内网或者其他安全环境中免登录直接进入 PigeonPod 控制台。
  4. 新增代理配置,让 YouTube Data API 和 yt-dlp 支持用户自定义的网络代理。
  5. 优化移动端首页布局,新增搜索功能,方便用户在已订阅节目中快速定位目标。

修复问题

  1. 重构节目元数据存储模型,节目过滤器不再影响元数据的同步和存储,仅在展示层起过滤作用,以解决 YouTube 历史数据获取不准确的问题,并简化元数据同步逻辑。
  2. 修复大量订阅短时间内同时并发更新造成的任务卡死问题。
  3. 修复 RSS 内容中错误的标签。

release 1.23.0

Choose a tag to compare

@aizhimou aizhimou released this 01 Mar 10:15

Changelog

Features

  • Add default minimumDuration in feed configuration and change its unit from minutes to seconds.
  • Add source video link to episode titles in the web app and unify cover-click behavior by removing redirect logic for undownloaded episodes.
  • Add <itunes:block> to RSS feeds to reduce unintended indexing of private feeds by podcast platforms.
  • Add source video link and source channel link (playlist subscriptions only) in RSS content.
  • Wrap RSS descriptions in CDATA, and improve playlist source channel rendering using a standard <a> tag plus line breaks.

Fixs

  • Split audio download and chapter-embedding into separate procedures so chapter embedding errors do not fail downloads.
  • Fix the issue where default minimumDuration did not take effect for new subscriptions.
  • Fix custom artwork not being displayed.

更新日志

新增功能

  1. 在订阅源默认配置中新增 minimumDuration,并将其单位从分钟改为秒。
  2. 在 Web 端剧集标题中新增源视频链接,并移除未下载剧集封面跳转逻辑以统一封面点击行为。
  3. 在 RSS 中新增 <itunes:block> 标签,降低私有订阅被播客平台意外索引的风险。
  4. 在 RSS 内容中新增源视频链接与源频道链接(仅播放列表订阅类型)
  5. 将 RSS 描述内容包裹为 CDATA,并通过标准 <a> 标签与换行优化播放列表来源频道显示。

修复问题

  1. 将音频下载与章节嵌入拆分为独立流程,避免章节嵌入失败导致下载失败。
  2. 修复新建订阅时默认 minimumDuration 不生效的问题。
  3. 修复自定义封面不显示的问题。

release 1.22.0

Choose a tag to compare

@aizhimou aizhimou released this 17 Feb 02:17

🎉🧨🎆 Happy Chinese & Luna New Year / 祝大家新年快乐 🥳🍷🍻

Changelog

Features

  1. Add a channel source badge in the web UI and include channel source text in RSS content for YouTube playlist feeds.
  2. Add a feed configuration option to disable subtitles.

Fixes

  1. Fix incorrect recognition of YouTube playlist URLs.

更新日志

新增功能

  1. 在 Web 界面新增频道来源徽标,并在 YouTube 播放列表订阅源的 RSS 内容中加入频道来源文本。
  2. 在订阅源配置中新增“禁用字幕”选项。

修复问题

  1. 修复 YouTube 播放列表 URL 识别错误。

release 1.21.0

Choose a tag to compare

@aizhimou aizhimou released this 15 Feb 22:41

🎉🧨🎆 Happy Chinese & Luna New Year / 祝大家新年快乐 🥳🍷🍻

Changelog

Features

  • Add bilibili subscription support
  • Add S3 storage support
  • Added global download default configuration function
  • Add YouTube Data API usage limits and statistics
  • Add batch download functionality for historical episodes
  • Upgrade keyword filtering from simple OR to OR + AND patterns
  • Simplify deployment configuration by moving storage policy and base URL config to web page and database storage
  • Use yt-dlp --flat-playlist with YouTube Data API to reduce calls and improve sync performance
  • Add itunes:category and itunes:explicit tags in RSS and adjust chapter type
  • Optimize FeedHeader UI
  • Add supported URL ID format hints

Fixes

  • Separate channel and playlist views to avoid source interference for same-channel episodes
  • Optimize performance when syncing playlists with a large number of episodes, reduce memory usage, and avoid OOM on machines with limited memory

更新日志

新增功能

  • 新增 Bilibili 订阅支持
  • 新增 S3 存储支持
  • 新增全局下载默认配置功能
  • 新增 YouTube Data API 使用限额与统计功能
  • 新增历史节目批量下载能力
  • 关键字过滤从仅“或”升级为支持“或 + 与”
  • 将存储策略与 base url 配置迁移到网页和数据库存储,简化部署配置
  • 结合 yt-dlp --flat-playlist 与 YouTube Data API 提升同步性能并减少 API 调用
  • RSS 新增 itunes:categoryitunes:explicit,并调整 chapter type
  • 优化 FeedHeader UI
  • 新增受支持 URL ID 格式提示

修复问题

  • 分离频道与播放列表视图,避免同频道节目时订阅源互相干扰
  • 优化大节目数量播放列表同步时的性能,减小内容占用,避免在小内存机器上 OOM