strm/README.org
2021-04-25 02:58:26 +02:00

3 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 flies by query via mpv

Installation

Make sure, mpv is installed and that you have access to a remote 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 over SSH.

  OPTIONS
    -h, --help                Show this help message
    -c, --config CONFIG_FILE  Path to config file
    -l, --list                List files instead of playing
    -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'

Configuration

The scripts expects a configuration file with the following content:

  # SSH connection string
  # Examples:
  #   remote             # Current user at hostname 'remote' on port 22
  #   user@10.0.0.1      # 'user' at address '10.0.0.1' on port 22
  #   user@10.0.0.1:600  # 'user' at address '10.0.0.1' on port 600
  connection_string=""

  # Absolute path to media directory on remote machine
  # Example:
  #   /home/<user>/video
  media_directory=""

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 path. This is useful if you are using multiple remote machines or different media folders. One can set e.g. aliases for different streaming resources:

  alias mstrm="strm -c <path_to_music_config>"
  alias vstrm="strm -c <path_to_video_config>"