strm/README.org
2021-04-25 14:34:25 +02:00

3.5 KiB

strm

strm is a small Bash script that lets you stream media files over SSH.

No need for mounting and navigating through complex directory structures anymore. Just provide a query and the media files are played locally via mpv.

Here is an example.. let's assume you have the shortfilm The Daily Dweebs stored on a remote machine in the following directory structure:

  movies
  ├── ...
  ├── The Daily Dweebs (2017)
  │   └── The Daily Dweebs (2017).mkv
  └── ...

If strm is configured to use the movies directory, you can play the shortfilm with the following command:

  strm daily dweebs

Features

  • List remote files by query
  • Play remote files locally via mpv

Installation

Make sure, mpv is installed and that you have access to a machine via SSH.

strm is just a script, you can execute it directly. Or grab it and place it in you $PATH.

This project is also a Nix flake. You can execute it with the following command if you have a recent version of Nix installed and flakes are enabled:

  nix run github:Deleh/strm -- --help

If you use it this way, mpv is started with MPRIS support by default.

Usage

  Usage: strm [OPTIONS] QUERY ... [OPTIONS]

  Stream media files over SSH.

  OPTIONS
    -h, --help                                 Show this help message
    -c, --config CONFIG_FILE                   Path to config file
    -l, --list                                 List files instead of playing
    -m, --media-directories MEDIA_DIRECTORIES  Use given media directories, config is ignored
    -s, --shuffle                              Play files in random order

  EXAMPLES
    strm -l .             # List all available files
    strm Elephants Dream  # Play files whose path contain 'elephants' and 'dream' in order
    strm e*phants         # Play files whose path matches the wildcard 'e*phants'

The usual mpv controls are available while playback. Here is a subset:

LEFT and RIGHT
Seek backward/forward.
p and SPACE
Pause (pressing again unpauses).
< and >
Go backward/forward in the playlist.
q
Stop playing and quit.

Configuration

If the --media-directories argument is not set, the scripts looks for a configuration file with the following content:

  # Media directories on remote machines of the following form:
  #
  #   <SSH connection string><absolute_path_to_media_directory>
  #
  # Multiple media directories can be set with a comma (,) as delimiter.
  # Media directories are queried and played in order.
  #
  # Examples:
  #   localhost/home/bob/videos
  #   remote-machine/home/bob/music
  #   bob@another-machine/media/movies,bob@10.0.0.1/home/bob/series
  media_directories=""

An example configuration file can be found in ./strm.config.

The default path of the configuration is $HOME/.config/strm/strm.config. You can use the --config flag to set another configuration file.

The flag --media-directories is used in favour of a configuration file and can be used with the same syntax as described above.