]> git.ktnx.net Git - mpd-feeder.git/blobdiff - bin/mpd-feeder
add some docs, license under GPL-2
[mpd-feeder.git] / bin / mpd-feeder
index 29a6d5b10f6247f2bf6e9ee54e65ae96f8e16605..99453c364981690263dc0bc53d3f73c265abd043 100755 (executable)
@@ -24,3 +24,141 @@ if (@ARGV) {
 }
 
 $feeder->run_loop;
+
+__END__
+
+=encoding UTF-8
+
+=head1 NAME
+
+mpd-feeder -- MPD playlist manager with emphasys on diversity
+
+=head1 SYNOPSIS
+
+Engage daemon mode, keeping the MPD playlist full:
+
+    mpd-feeder [I<option>...]
+
+Perform a single command and return:
+
+    mpd-feeder [I<option>...] I<command>
+
+=head1 DESCRIPTION
+
+C<mpd-feeder> keeps the playlist of MPD full with songs, avoiding songs,
+artists and albums that have been queued recently. This can be used for
+listening to large song collections without repetitions that happen with random
+shuffling or when a given artist has many more songs that the rest.
+
+The song list is stored in a PostgreSQL database that is kept updated
+automatically as the MPD database is updated.
+
+The timespans for "recent" queueing are configurable.
+
+=head1 COMMANDS
+
+In daemon mode (with no command given), C<mpd-feeder> connects to MPD, updates
+its local copy of the song database and makes sure that the playlist never has
+fewer songs than the configured minimum. Playlist changes are detected when
+they happen.
+
+When a command is given, C<mpd-feeder> does not engage in daemon mode, but returns
+to the OS after execution.
+
+=head2 dump-config
+
+Prints configuration file contents on standard output. Can be used to create
+skeleton F<mpd-feeder.conf>. Makes no connection to MPD or PostgreSQL.
+
+=head2 add-unwanted-artist I<artist name>
+
+Adds one artist to toe list of unwanted artists. That list is consulted when a
+new song needs to be added to MPD's playlist and songs by artists in it are
+skipped.
+
+=head2 del-unwanted-artist I<artist name>
+
+The reverse of C<add-unwanted-artist>.
+
+=head2 list-unwanted-artists
+
+Prints the contents of the unwanted artist list, one per line.
+
+=head2 add-unwanted-album I<album name> by I<artist name>
+
+=head2 del-unwanted-album I<album name> by I<artist name>
+
+=head2 list-unwanted-albums
+
+Manupulate the list of unwanted albums. Useful when there is an album you don't
+want to listen to, but you still want to hear other albums by the same artist.
+
+=head2 one-shot
+
+Connects to MPD, and if the playlist is below the configured minimum, adds some
+songs.
+
+=head2 single
+
+Adds one song to the playlist. Ignores the configured minimum.
+
+=head1 OPTIONS
+
+=over
+
+=item B<--log-level> I<trace|debug|info|notice|warning|error|critical|alert|emergency>
+
+Set log verbosity. C<trace> is most talkative, including all exchanges with MPD.
+
+=item B<--skip-db-update>
+
+Skips the startup sync of the song database from MPD.
+
+=item B<--tql> I<number>
+
+=item B<--target-queue-length> I<number>
+
+Sets the wanted playlist length.
+
+=item B<--mpd-host> I<hostname>
+
+=item B<--mpd-port> I<number>
+
+Parameters for connecting to MPD.
+
+=item B<--db-path> I<DSN>
+
+=item B<--db-user> I<username>
+
+Parameters for connecting to PostgreSQL.
+
+=item B<--min-album-interval> I<duration>
+
+=item B<--min-song-interval> I<duration>
+
+=item B<--min-artist-interval> I<duration>
+
+Tunes the minimum time between adding songs from the same album/artist and
+before re-adding the same song.
+
+I<duration> is a text duration, recognised by L<Time::Duration::Parse>.
+
+=back
+
+=head1 CONFIGURATION FILE
+
+=head1 COPYRIGHT & LICENSE
+
+Copyright © 2021 Damyan Ivanov L<dam+mpdfeeder@ktnx.net>
+
+This program is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License version 2 as published by the Free
+Software Foundation.
+
+This program is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+this program; if not, write to the Free Software Foundation, Inc., 51 Franklin
+Street, Fifth Floor, Boston, MA 02110-1301 USA.