Skip to content

PeerTube on 6.x-8.x instances: avatars, channel pages, feed (#1202), search filters, split audio - proposed extractor fixes #2910

Description

@Aidan-Harper

Hi! I've been debugging PeerTube support against current instances (framatube.org, tilvids.com and peertube.tv run PeerTube 8.2.4, video.blender.org 8.2.2, kolektiva.media) with a small live probe around PipePipeExtractor plus the app on a Galaxy S10 (Android 12) and Android 14/17 emulators. Since you ask for discussion before contributions: would you accept the following as small, separate PRs against PipePipeExtractor (one concern each, mirroring the corresponding upstream NewPipeExtractor changes)? Nothing here touches YouTube/BiliBili/NicoNico code.

Confirmed defects (all reproduced in the app):

  1. Every PeerTube avatar/banner is blank. PeerTube 6.0 removed the singular avatar/banner objects; the extractor still reads them and falls back to /client/assets/images/default-avatar.png, which 404s on every instance. Fix: read the avatars[]/banners[] arrays (preferring the 8.0 fileUrl), like upstream commits 81c0d80a5/4e6fb368b/0a6011a50. This is the "channel avatar doesn't load" half of [Bug] Peertube videos not appearing on the "What's New" feed #1202.

    before after
    channel page before channel page after
    video page before video page after
  2. Channel/account pages fail on hosts whose name ends in a or c (e.g. kolektiva.media → "Unable to get displayName"): the channel id regex matches inside the hostname. Fix: parse the id from the URL path only (upstream bcacfc53c).

    before after
    kolektiva before kolektiva after
  3. The videos tab is advertised but not implemented (tab videos not supported), and account subscriptions have no videos tab at all, so they never contribute to "What's New" ([Bug] Peertube videos not appearing on the "What's New" feed #1202). Fix: a suffix-driven channel-tab extractor (upstream 1e8474b22) and VIDEOS/CHANNELS/PLAYLISTS tabs on accounts; a video channel gets PLAYLISTS instead of the CHANNELS tab, whose endpoint (/video-channels/x/video-channels) returns HTTP 400.

  4. Search content filters "Channels" and "Playlists" return the plain video list (the request always hits /api/v1/search/videos with an unknown resultType parameter). Fix: use /search/video-channels and /search/video-playlists and parse channel/playlist items (upstream d75a99761/dea6d8ce4); the published-date filter also sends a zone-less local timestamp (fix: UTC), and the Sepia search group has no name so the client dialog never shows it.

  5. Split audio (PeerTube ≥ 6.3) plays silently. Instances that separate audio and video (peertube.tv does for all recent uploads) expose video-only HLS variants (hasAudio:false) plus an "Audio only" entry; the extractor reports the variants as complete streams (isVideoOnly never set), so the player starts them without an audio renderer — video plays, no sound, no error. The same video's audio-only entry plays fine in background mode. Fix: read hasAudio/hasVideo and expose the variants as video-only streams so the existing video+audio merge path is used (upstream 3042e4005 / [Bug] Crash: No view found for id for fragment CommentsFragment #1319).

  6. Minor: captions/captionPath and avatar path are deprecated in 8.0 in favour of fileUrl (handled in 1).

Feature: channel search for PeerTube, using the existing channel-search UI (PeerTube's channel/account video listings accept ?search=), plus a small change in PipePipeClient so the search button shows for services that support it and the search runs on the channel's home instance.

I have working branches on my fork with a before/after probe matrix (zero broken image URLs across 7 instances, streams/kiosks/comments unchanged) and app screenshots from Android 12 (Galaxy S10), 14 and 17:

Could you reopen #1202 and let me know which of these you'd take, and in what order? I'd start with 1–3.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions