* 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 [[https://mpv.io/][mpv]]. Here is an example.. let's assume you have the shortfilm [[https://www.dailydweebs.com/][The Daily Dweebs]] stored on a remote machine in the following directory structure: #+begin_src text movies ├── ... ├── The Daily Dweebs (2017) │   └── The Daily Dweebs (2017).mkv └── ... #+end_src If strm is configured to use the =movies= directory, you can play the shortfilm with the following command: #+begin_src sh strm daily dweebs #+end_src ** 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 [[https://nixos.wiki/wiki/Flakes][Nix flake]]. You can execute it with the following command if you have a recent version of [[https://nixos.org/][Nix]] installed and flakes are enabled: #+begin_src sh nix run github:Deleh/strm -- --help #+end_src If you use it this way, mpv is started with *MPRIS* support by default. ** Usage #+begin_src text 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' #+end_src The usual [[https://mpv.io/manual/master/#interactive-control][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: #+begin_src sh # Media directories on remote machines of the following form: # # # # 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="" #+end_src 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.