xenial (1) shell-fm.1.gz

Provided by: shell-fm_0.7+git20100414-3_amd64 bug

NAME

       Shell.FM - Lightweight, console-based player for Last.FM radio streams.

SYNOPSIS

       shell-fm [-d] [-i address] [-p port] [-b] [-D device] [-y proxy] [-h] lastfm://...

DESCRIPTION

       Shell.FM is a lightweight, console-based player for radio streams provided by Last.FM.

OPTIONS

       -d     Fork  to  background  (requires  a  socket  interface  to  be set up so it can still be controlled
              somehow).

       -i <address>
              Enable the socket interface and bind it to the given host address (should be the host name  or  IP
              address of the host shell-fm is running on).

       -p <port>
              Make the socket interface listen for incoming connections on the given port.  Default is 54311.

       -b     Enable  batch mode (some freaky mode that makes shell-fm easier to handle from inside emacs). This
              was not my idea.

       -D <device>
              Use the given device file as audio device. This is only used if libao support is disabled. Default
              is /dev/audio.

       -y <proxy>
              Make shell-fm use the given host as proxy server for HTTP requests.

       -h     Print help text and exit.

       lastfm://...
              URI   of   a   Last.FM   radio   stream   to  play  after  startup.   For  example:  `shell-fm  -d
              lastfm://artist/The%20Beatles/similarartists'

USAGE

       On startup, shell-fm will ask you for your Last.FM login and password (if not provided in your  ~/.shell-
       fm/shell-fm.rc).  If you've given a stream URI on the command line or there is a default radio defined in
       the configuration file, shell-fm will now try to play it. When the startup is done,  there  are  lots  of
       keys to control shell-fm. Here is a alphabetically sorted list.

       a      Add the currently played track to your Last.FM playlist.

       A      Ban  the  artist of the currently played track. Whenever a track of that artist is played from now
              on, it is automatically banned.

       B      Ban the currently played track.

       d      Enabled/disable discovery mode. I'm not sure if this has any effect, and it looks  like  even  the
              Last.FM  guys  don't really know what it does, but I think it is meant to ensure that you get only
              tracks that you don't know yet.

       f      Jump to the fan radio station of the artist of the currently played track.

       h      List bookmarks.

       H      Bookmark the currently played radio station. You'll be asked to hit a digit key. Whenever you  hit
              that key again from now on, shell-fm will jump to that radio station.

       i      Print some more information about the currently played track.

       l      Love the currently played track.

       n      Skip the currently played track.

       p      Pause.  If  you  pause  too long, the stream will break, which has the same effect as stopping the
              stream (see below).

       P      Enable/disable reporting played tracks to your Last.FM profile. Enabled by default.

       Q      Quit.

       r      Change radio station. This will prompt you for an Last.FM radio station URI.   The  tabulator  key
              helps  if  you  don't  know  what  to type. Arrow-Up and Arrow-Down allow you to browse your radio
              history. Enter these without the "lastfm://" prefix.

              For example: `radio url> globaltags/world'

       R      Recommend the currently played track/artist/album to another Last.FM user.

       S      Stop playing.

       s      Jump to the similar artists radio stream of the currently played tracks artist.

       T      Tag the currently played track/artist/album. Tabulator key completes known tags.

       U      Unlove the currently played track.

       u      Print upcoming tracks in playlist.

       +      Increase volume.

       -      Decrease volume.

SETUP

       Before you start, you should have created the directories ~/.shell-fm and ~/.shell-fm/cache or  you  will
       get  a lot of warnings, the tab-completion will be extremely slow and you can't make use of some features
       (auto-ban, history, bookmarks).  You might also want to place a configuration file in ~/.shell-fm  for  a
       faster startup.

CONFIGURATION

       This  section  describes  the  syntax and options for the shell-fm configuration file. The file should be
       placed in ~/.shell-fm/shell-fm.rc and should consist of simple key = value assignments.  See (far)  below
       for a sample configuration. These are the available options.

       username = your-login
              This  is  your  login  on  Last.FM.  If this is provided, shell-fm won't ask you for it on startup
              anymore.

       password = your-password
              This is your  (clear  text)  Last.FM  password.  If  this  and  your  login  is  provided  in  the
              configuration, shell-fm won't ask you on startup.

       default-radio = lastfm://...
              If  this  is  provided  (and  valid), shell-fm will play this station by default after startup. If
              there's another station URI given on the command line, it will override this setting.

       np-file = path-to-file
              If this is defined, shell-fm will print information about the  currently  played  track  into  the
              given file, whenever a new track is played.

       np-file-format = format-string
              This  defines  how  the  information  written  to  your now-playing file will look like. There are
              several format flags available. Have a look at the

       preview-format = format-string
              Format of the track information in the playlist preview (key 'u').  FORMAT FLAGS section  for  the
              details.

       np-cmd = shell command
              If  this  is defined, the given command will be execute whenever a new track starts. The value may
              contain format flags.

       pp-cmd = shell command
              If this is defined, the given command will be execute whenever a downloading track ends. The value
              will have the path to the file appended.

       ?-color = color
              This  allows  you  to  color format elements. The ?  may be the letter of any format flag (without
              percent). The color is just a normal shell color code matching "[01];3[0-7]". Whenever the  format
              element is printed to the console, it will have the given color. Have a look at the

       daemon = something
              If  this  is set to something, shell-fm will start in daemon mode by default.  Starting with -d as
              command line option will disable daemon mode.

       COLORS section for a list.

       key0x?? = shell command
              This allows you to bind shell commands to free keys (keys that are not used by shell-fm, check the
              USAGE  section  above  for  a list).  ??  should be the hex code of the ASCII code of the key. The
              command you assign will be evaluated (check the FORMAT FLAGS  section)  and  executed  then.  This
              "feature"  allows  you  to  implement  own  features, like fetching and printing the lyrics of the
              currently played track, etc. If you have a cool idea or even a working script, I'd be happy if you
              let me know.

       bind = host
              This  specifies  the network interface you want shell-fm to bind to.  host should be the host name
              or an IP address of host shell-fm is running on.  shell-fm will open a port (see the  port  option
              below)  on  the specified interface which you can connect to to control shell-fm remotely (or from
              local scripts, see key0x??  above). Check the NETWORK INTERFACE COMMANDS section below for a  list
              of  known commands.  NOTE: The network interface has no user authentication, so anyone with access
              to your network/host can control shell-fm. Use it only if you really need to control shell-fm over
              a network. Otherwise use the UNIX socket interface (see below).

       unix = path
              If  this  is  set  to a proper path, on that path a UNIX socket will be created for local "remote"
              control. This socket interface takes the same commands as the TCP socket interface (see above).

       port = port-number
              With this option you can change the port shell-fm will listen on (if bind is  specified).  Default
              is 54311.

       extern = shell command
              This  allows  you  to  specify  an external program or script as player for the streams. If given,
              shell-fm will run the command and pipe the MP3 stream into  it,  instead  of  playing  the  stream
              itself.  For example, extern = madplay -Q - works very fine. This option is meant as a work-around
              for architectures that shell-fm doesn't work completly profectly on.

       proxy = proxy server
              This allows you to specify a proxy server for the HTTP requests.

       expiry = some-number
              This defines the number of seconds until a cached page expires. The default is 86400  seconds  (24
              hours).  You  shouldn't  set  a very low value here, since the Last.FM server often are very slow.
              This mostly affects the prompts (radio prompt, tag prompt, ...), since shell-fm fetches some feeds
              to get values for the tab-completion.

       device = path
              Path to the audio device to use (see -D command line option).

       title-format = format-string
              This  is  the  format  of  the track string that is printed to the console for every track played.
              Default is 'Now playing "%t" by %a.'.

       minimum = percentage
              With this option you can change the minimum duration a track must have been played to be scrobbled
              (in percent, but without the % sign). For example, if this option is set to 75, the track will not
              be scrobbled if it has not been played for at least 75% of its total duration. If you skip or stop
              the  track  before  it  has  been  played  for  75%,  it will not be scrobbled. Default is 50%, as
              specified in the scrobbling protocol version 1.2.

       delay-change = something
              If this is set to anything, and you change the station with 'r', 's' or  'f',  the  station-change
              will  be  delayed  until the currently played track finishes or is skipped. Also they key 'q' will
              initialize a delayed quit, so after the currently played track shell-fm will exit. 'Q' (uppercase)
              still quits immediately.

       screen-format = format-string
              If  this is set, shell-fm will check if the terminal it's running in is a screen session ($TERM is
              "screen") and set the screen windows title to the formatted string to  be  seen  on  $ESCAPE+w  or
              $ESCAPE+".

       term-format = format-string
              Works like screen-format, but sets the x-terminals window title.

       download = format-string
              If  this  is  set  to a valid path (may contain format flags), and the played track is free, it is
              saved at the given place.

       gap = seconds
              If this is set to a number, shell-fm will wait that amount of seconds between tracks.

       discovery = something
              Enable discovery mode by default.

       stream-timeout = seconds
              Users reported that in some regions in the world, Last.FM servers sometimes pretend  to  stream  a
              track  but then don't send anything, which makes shell-fm hang forever waiting for the track data.
              If you have that problem, use this option to define a stream timeout. When shell-fm is waiting for
              stream data, it will wait that many seconds and then skip to the next track.

       no-rtp = something
              Start with RTP disabled.

FORMAT FLAGS

       There are several format flags allowed for some options. Here is the list.

       %a     Artist name.

       %t     Track title.

       %l     Album name.

       %d     Track duration in seconds.

       %s     Station name.

       %S     Station URL.

       %A     URL of the artists page on Last.FM.

       %L     URL of the albums page on Last.FM.

       %T     URL of the tracks page on Last.FM.

       %R     Remaining seconds of the played track.

       %%     A %.

COLORS

       0;30   Black (not very useful).

       1;30   Dark gray.

       0;31   Red.

       1;31   Light red.

       0;32   Green.

       1;32   Light green.

       0;33   Dark yellow/brown.

       1;33   Yellow.

       0;34   Blue.

       1;34   Light blue.

       0;35   Violet.

       1;35   Pink.

       0;36   Turquoise.

       1;36   Cyan.

       0;37   Gray.

       1;37   White.

NETWORK INTERFACE COMMANDS

       This  section  describes  the commands shell-fm's network interface knows. To use the interface, you must
       provide a valid value to the bind option in your configuration or use the -i option on the command  line.
       Then  you can connect the specified port (54311 by default) and send one command at a time. You also have
       to hurry, since there is a very short timeout. Best thing would be if you used  a  script  for  accessing
       this interface. (See shell-fm-*/scripts/ for examples) This is a list of the known commands.

       play lastfm://...
              Play the given stream.

       love   Love the currently played track.

       ban    Ban the currently played track.

       skip   Skip the currently played track.

       quit   Quit.

       info some-format-string
              Evaluate  the  given  format  string  (check  the  FORMAT  FLAGS section) and return the formatted
              information.

       pause  Pause.

       discovery
              Toggle discovery mode on/off.

       tag-artist some-comma-separated-tags
              Tag the artist of the currently played track.

       tag-album some-comma-separated-tags
              Tag the album of the currently played track.

       tag-track some-comma-separated-tags
              Tag the currently played track.

       artist-tags
              Returns the tags of the currently played tracks artist.

       album-tags
              Returns the tags of the currently played tracks album.

       track-tags
              Returns the tags of the currently played track.

       stop   Stop stream.

FILES

       This section describes the meanings of the files in $HOME/.shell-fm/. The base directory can be overriden
       by setting the environment variable $SHELL_FM_HOME to another directory.

       autoban
              This file contains the auto-banned artists.

       bookmarks
              This file contains the bookmarked stations in the format "[digit] = [url]".

       cache/ This directory contains cached sites fetched from Last.FM for faster tab-completion etc.

       i-template
              If  this  file  exists,  it will be used as a template for the output of 'i'. It may contain usual
              format flags.

       radio-history
              The radio stations you have listened to. The history is used for the radio prompt.

       scrobble-cache
              If Shell.FM can't scrobble the data of a track for any reason before you quit, it stores the track
              data in here and it will try to submit the tracks the next time it is run.

       shell-fm.rc
              Your configuration file as described above.

EXAMPLES

       Sample Configuration for shell-fm.rc

              # shell-fm.rc example
              username = shellfmlover
              password = CheckFileIsOnlyReadableByOwner
              default-radio = lastfm://user/shellfmlover/playlist
              np-file = /home/shellfmlover/.shell-fm/nowplaying
              np-file-format = %t:%a:%S:%A
              minimum = 80
              delay-change = true

       shell-fm-*.*/scripts/
              Includes  examples  of  using  the  network  interface  plus  a color printing script to help with
              choosing colors.

       URL FORMAT

              lastfm://user/$USER/loved
              lastfm://user/$USER/personal
              lastfm://usertags/$USER/$TAG
              lastfm://artist/$ARTIST/similarartists
              lastfm://globaltags/$TAG
              lastfm://user/$USER/recommended
              lastfm://user/$USER/playlist
              lastfm://tag/$TAG1*$TAG2*$TAG3

BUGS

       Please send bug reports to <shell-fm@nex.scrapping.cc>.

       Copyright (C) 2006-2010 by Jonas Kramer.  Published under the terms of the GNU General Public License.

                                                                                                     shell-fm(1)