feat: open streaming URLs without changing resolved handoffs
This commit is contained in:
@@ -35,9 +35,9 @@ Builds are ad-hoc signed for personal use, not notarized. Bundled licenses and s
|
||||
|
||||
## Usage
|
||||
|
||||
Open one or more local files with **⌘O**, drag them onto the video, or use Finder's **Open With**. A selection replaces the session's queue and plays in natural filename order (for example, episode 2 before episode 10). Open YouTube with **⇧⌘O** or drop a video link. Media starts automatically and resumes its saved position; finished videos restart from the beginning. Live and audio-only media do not save progress.
|
||||
Open one or more local files with **⌘O**, drag them onto the video, or use Finder's **Open With**. A selection replaces the session's queue and plays in natural filename order (for example, episode 2 before episode 10). Open a YouTube video or Miruro episode with **⇧⌘O** or drop its link. Media starts automatically and resumes its saved position; finished videos restart from the beginning. Live and audio-only media do not save progress.
|
||||
|
||||
The start screen uses a fixed 640 × 400-point two-pane window: Terebi's identity and version on the left; **Open…**, **Open URL…**, and the six most recently played local files or YouTube videos on the right. Opening media restores normal resizing; closing media returns to the fixed start size. Shortcut hints follow your configured bindings. **Open URL…** reveals a focused inline YouTube field. When the most recent item has saved progress, it appears once as a **Resume** row with its saved timestamp. Recent titles and ordering survive relaunches; failed opens are not added. Resolved streams are excluded because reopening them requires a fresh external handoff. The action pane scrolls, and drag-and-drop remains available.
|
||||
The start screen uses a fixed 640 × 400-point two-pane window: Terebi's identity and version on the left; **Open…**, **Open Stream…**, and the six most recently played local files or YouTube videos on the right. Opening media restores normal resizing; closing media returns to the fixed start size. Shortcut hints follow your configured bindings. **Open Stream…** reveals a focused inline URL field. When the most recent item has saved progress, it appears once as a **Resume** row with its saved timestamp. Recent titles and ordering survive relaunches; failed opens are not added. Resolved streams are excluded from recents. The action pane scrolls, and drag-and-drop remains available.
|
||||
|
||||
Start-screen actions use 14-point text and begin 64 points below the top edge. Branding uses a 16-point app name and 12-point version; the drop hint uses 13-point text. Open actions have no idle fill; their background appears on hover or press.
|
||||
|
||||
@@ -93,6 +93,14 @@ Playback defaults to the best available SDR resolution up to **1080p**. Use **ge
|
||||
|
||||
Only individual videos are supported, not playlists or channels. Private, age-restricted, region-blocked, or sign-in-required videos may fail; browser cookies are not read. The extractor is bundled, so YouTube compatibility updates require rebuilding/reinstalling terebi, not updating an external yt-dlp.
|
||||
|
||||
### Miruro episode links
|
||||
|
||||
**Open Stream…**, dropped links and CLI URLs accept `https://barelystarted.miruro.tv/watch/<opaque-id>/<slug>?ep=<episode>`. An explicit positive episode number is required; series pages, other Miruro domains and arbitrary streaming sites are not supported.
|
||||
|
||||
Terebi resolves a fresh direct Sun soft-subtitle source, preserving stream headers, external WebVTT subtitles and stable episode identity. No provider fallback, cookies, protection bypass or proxy/HLS rewriting is used. Resolution errors leave the previous media loaded. Miruro URL playback currently uses the title “Miruro episode N”.
|
||||
|
||||
The configurable URL action is now `open_stream` (formerly `open_youtube`); custom key bindings must use the new name. The default remains **⇧⌘O**.
|
||||
|
||||
### Chromecast
|
||||
|
||||
Open media, select the **Cast** icon or **Playback → Cast to Device → Find Cast Devices…**, and choose a receiver on the same LAN. Allow macOS Local Network access and incoming firewall connections. Terebi keeps the Mac awake during the handoff and active Cast playback while allowing the screensaver and display sleep once local playback stops. Keep the Mac connected: it relays media to the receiver. Closing the lid, explicitly sleeping the Mac or critical-battery sleep can still interrupt playback.
|
||||
@@ -120,16 +128,16 @@ The CLI opens one file or video, reusing the running player by default. With no
|
||||
|
||||
### Resolved sources and progress reporting
|
||||
|
||||
Miruro playback requires a freshly resolved source document from an external caller such as Tubular; terebi does not discover episodes or accept Miruro page URLs directly.
|
||||
External callers such as Tubular can continue supplying freshly resolved Miruro source documents. This path does not re-resolve page URLs or override the caller's selection, headers, title or subtitles; the source-file and progress-report contracts are unchanged.
|
||||
|
||||
```sh
|
||||
terebi --new-instance --source-file '/private/session/source.json' \
|
||||
--progress-file '/private/session/progress.jsonl'
|
||||
```
|
||||
|
||||
Both options require `--new-instance`; `--progress-file` also works with YouTube. Use a private session directory and a nonexistent report destination. Keep the source file present and unchanged during playback; the caller owns cleanup. Reports contain playback facts, not watched-state decisions.
|
||||
Both options require `--new-instance`; `--progress-file` also works with YouTube and Miruro episode URLs. Use a private session directory and a nonexistent report destination. Keep the source file present and unchanged during playback; the caller owns cleanup. Reports contain playback facts, not watched-state decisions.
|
||||
|
||||
See the [integration contract](docs/miruro-playback-handoff.md) for source JSON, resource-header/origin restrictions, and progress schemas. Tubular still needs to adopt Miruro's version-2 progress identity.
|
||||
See the [integration contract](docs/miruro-playback-handoff.md) for source JSON, resource-header/origin restrictions, and progress schemas.
|
||||
|
||||
## Configuration
|
||||
|
||||
|
||||
Reference in New Issue
Block a user