summaryrefslogtreecommitdiff
path: root/tools/chapsurvey.py
diff options
context:
space:
mode:
authorClaude <noreply@anthropic.com>2026-09-21 09:03:48 +0000
committerClaude <noreply@anthropic.com>2026-09-21 09:03:48 +0000
commiteb1c69d47aaee463960909f99973da4cf791d801 (patch)
tree1f8bd7fc3ef92c464011ecd090477db670fb3363 /tools/chapsurvey.py
parentf3b36bacb95d8c57aa036959ad81f3c79127dd22 (diff)
Subscription resolution, OPML, queue ordering, retention
Discovery was cut, so the share sheet and OPML are the only ways to subscribe. That raises the bar on the resolver: anything that fails to resolve is a show the user cannot add at all. It handles a direct feed, a show page via its link rel=alternate, an Apple Podcasts link via its numeric id, and a YouTube channel or playlist via the RSS endpoint YouTube already publishes -- which means a channel becomes an ordinary subscription and only the download step is special. Handle (@name) URLs carry no channel id and return null rather than being guessed at. OPML is ported from FeeDreader but onto XmlPullParserFactory, so unlike the original it is actually testable off-device. Folder nesting is read and recorded even though Listen has no folders: silently discarding structure the user organised is worse than ignoring it. Queue ordering is pure list operations. Re-adding a queued episode moves it rather than duplicating it, play-next on the episode already playing is a no-op instead of interrupting it, and an out-of-range drag index is ignored rather than thrown. Retention keeps an episode when its position is non-zero even though it is marked played -- that combination means it was resumed, and the audio is in use. Disabled is a flag, not an enormous grace period, because playedAt + Long.MAX_VALUE overflows negative and would delete everything. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018AwnALZL6bD4VBtATDVv3B
Diffstat (limited to 'tools/chapsurvey.py')
0 files changed, 0 insertions, 0 deletions