The zload CDN URL (remote_control.php) is a valid faststart progressive mp4 that ExoPlayer plays fine when fresh: 206, no IP/referer binding, ~2h token TTL, verified from a residential IP. Real-device failures (player_error/gone telemetry) come from the static URL going stale: a rotated or dead CDN node, or an expired token. Instead of falling back to the tube page in a WebView (removed, it papered over the real issue), PlayerScreen now re-resolves the scene fresh via the backend on initial-load error for backend-native KVS tubes (watchporn). That yields a live node plus a fresh token and stays on the native direct stream (0 VPS bandwidth). For these origins a CDN 'gone' (404) means stale URL, not deleted, so we re-resolve on gone too; a genuinely deleted post raises HosterDead (410) and falls through to the normal fallback chain. Also: add playback_events.error_detail (raw ExoPlayer message) to pin down the exact failure of tubes we cannot reproduce on the emulator. Keep FLAG_SECURE on release builds only (!__DEV__) so debug builds stay screenshottable for local UI verification. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| __init__.py | ||
| base.py | ||
| blacklist.py | ||
| bug_report.py | ||
| external_record.py | ||
| favorite_movie.py | ||
| favorite_performer.py | ||
| favorite_scene.py | ||
| favorite_studio.py | ||
| ingest_run.py | ||
| merge_candidate.py | ||
| movie.py | ||
| movie_playback_source.py | ||
| performer.py | ||
| play_progress.py | ||
| playback_event.py | ||
| playback_source.py | ||
| saved_search.py | ||
| scene.py | ||
| source.py | ||
| source_stats.py | ||
| studio.py | ||
| tag.py | ||