]>
git.ktnx.net Git - mpd-feeder.git/log
summary |
shortlog | log |
commit |
commitdiff |
tree
first ⋅ prev ⋅ next
Damyan Ivanov [Tue, 16 Nov 2021 06:25:22 +0000 (06:25 +0000)]
implement unwanted album list manipulation
Damyan Ivanov [Tue, 16 Nov 2021 06:02:29 +0000 (06:02 +0000)]
do not crash when the playlist is cleared
the 'playlist' idle event returns no result in this case which lead to
an attempt to dereference undefined value
Damyan Ivanov [Mon, 15 Nov 2021 06:12:09 +0000 (06:12 +0000)]
rework DB update using COPY and a PostgreSQL function for maximum speed
COPY is the most effective data loading mechanism, and using a function
reduces the number of requests to just one
Damyan Ivanov [Sat, 13 Nov 2021 07:44:24 +0000 (07:44 +0000)]
drop "run" method which became a wrapper around prepare_to_wait_idle
Damyan Ivanov [Sat, 13 Nov 2021 07:43:55 +0000 (07:43 +0000)]
subscribe to "close" event only once, after connecting to mpd
Damyan Ivanov [Fri, 12 Nov 2021 09:37:43 +0000 (09:37 +0000)]
add list-unwanted-artists command
Damyan Ivanov [Fri, 12 Nov 2021 09:37:25 +0000 (09:37 +0000)]
fix DB interaction from commands after DB split-out
Damyan Ivanov [Fri, 12 Nov 2021 09:03:56 +0000 (09:03 +0000)]
a second HIP/INT signal causes a hard exit()
Damyan Ivanov [Fri, 12 Nov 2021 08:26:48 +0000 (08:26 +0000)]
split out DB operations in a module
Damyan Ivanov [Fri, 12 Nov 2021 07:26:48 +0000 (07:26 +0000)]
show command line upon re-exec (log_level=trace)
Damyan Ivanov [Fri, 12 Nov 2021 07:23:36 +0000 (07:23 +0000)]
exit cleanly on SIGTERM and SIGINT
Damyan Ivanov [Fri, 12 Nov 2021 07:12:23 +0000 (07:12 +0000)]
split command execution into App::MPD::Feeder::Command
avoids having dead code in RAM when the main loop is operating
Damyan Ivanov [Fri, 12 Nov 2021 06:42:53 +0000 (06:42 +0000)]
turn on :utf8 everywhere with utf8::all
now that sources are declared and decoded as utf8, output needs to be
encoded
Damyan Ivanov [Fri, 12 Nov 2021 06:42:35 +0000 (06:42 +0000)]
fix DB stats retrieval when no songs were queued recently
strangely one of the totals was getting undef and broke the division
perhaps the UNION is not working as expected?
Damyan Ivanov [Fri, 12 Nov 2021 06:34:15 +0000 (06:34 +0000)]
fixup split of App::MPD::Feeder
Damyan Ivanov [Fri, 12 Nov 2021 06:33:44 +0000 (06:33 +0000)]
move mail event loop to Feeder
Damyan Ivanov [Fri, 12 Nov 2021 06:22:54 +0000 (06:22 +0000)]
split-out App::MPD::Feeder -- the main application module
Damyan Ivanov [Thu, 11 Nov 2021 21:12:53 +0000 (21:12 +0000)]
move Options in a stand-alone module
Damyan Ivanov [Thu, 11 Nov 2021 20:12:03 +0000 (20:12 +0000)]
show counts of available songs/albums/artist
for now in log_level=debug
Damyan Ivanov [Thu, 11 Nov 2021 20:11:05 +0000 (20:11 +0000)]
connect to the DB early when in feeder mode
this way any problems in the connection will show at startup instead
of later when a new song needs to be queued
Damyan Ivanov [Thu, 11 Nov 2021 20:06:45 +0000 (20:06 +0000)]
fix two instances of hanging open statements
when a cursor is exhausted with while (sth->fetch) {...} there is no
problem. Single row fetches, however need an explicit sth->finish or
the cursor remains open. this is not a big problem, but it is annoying
to see the warnings when the statement is reused (due to caching) or the
connection is shut down
Damyan Ivanov [Thu, 11 Nov 2021 20:04:58 +0000 (20:04 +0000)]
fix filtering on album last queue time
joining on the full PK of albums table avoids multiple matches
and erroneous extra results
Damyan Ivanov [Thu, 11 Nov 2021 20:03:47 +0000 (20:03 +0000)]
fix filling album information
some songs have Artist, some have AlbumArtist. mpd-feeder prefers the
later, but takes the former too
Damyan Ivanov [Thu, 11 Nov 2021 15:11:26 +0000 (15:11 +0000)]
key artists by AlbumArtists
removes a favouring of compilation albums
perhaps en even better approach would be to consider both AlbumArtist
and Artist
Damyan Ivanov [Thu, 11 Nov 2021 14:47:06 +0000 (14:47 +0000)]
include wanted playlist size when reporting its current state
Damyan Ivanov [Thu, 11 Nov 2021 14:46:46 +0000 (14:46 +0000)]
dump configuration to STDERR on SIGUSR1
Damyan Ivanov [Thu, 11 Nov 2021 14:46:05 +0000 (14:46 +0000)]
parse wanted playlist length as an integer
Damyan Ivanov [Thu, 11 Nov 2021 14:44:57 +0000 (14:44 +0000)]
initially, log only errors
no need to always see details on command line/options parsing
Damyan Ivanov [Thu, 11 Nov 2021 14:43:57 +0000 (14:43 +0000)]
re-exec on SIGHUP, picking up configuration file changes
my first approach was to just re-read the config, but could not make
the idle/playlist loop behave. it gets stuck with responses getting
lost and eventually is disconnected my MPD due to timeout
re-exec works, but there is a (very small) chance of missing a database
update between disconnection and re-connection to MPD.
Damyan Ivanov [Thu, 11 Nov 2021 12:40:18 +0000 (12:40 +0000)]
debug--
Damyan Ivanov [Thu, 11 Nov 2021 12:37:15 +0000 (12:37 +0000)]
implement {add,del}-unwanted-artist commands
Damyan Ivanov [Thu, 11 Nov 2021 12:35:37 +0000 (12:35 +0000)]
rename unwanted artist/album tables
Damyan Ivanov [Thu, 11 Nov 2021 12:34:07 +0000 (12:34 +0000)]
do not print Pg errors, RaiseError=>1 is enough
Damyan Ivanov [Thu, 11 Nov 2021 11:15:38 +0000 (11:15 +0000)]
postpone db update for when it is really needed
would help lower the load when massive changes to the db are made
the db will be updated when a new song needs to be queued, and until
that need arises the db may be changed again
the (not that big) delay for db update when new song is needed is not
a problem, because it is about keeping the playlist full -- not an
urgent need
Damyan Ivanov [Thu, 11 Nov 2021 11:08:04 +0000 (11:08 +0000)]
make database update a synchronous operation
when someone calls for it, they rely that after the call to ->update_db
returns the database is fresh
there are tree callers - 'single', 'one-shot' and the database update
notification
Damyan Ivanov [Thu, 11 Nov 2021 10:57:20 +0000 (10:57 +0000)]
more on-demand connections
Damyan Ivanov [Thu, 11 Nov 2021 10:39:08 +0000 (10:39 +0000)]
rework command line handling - commands are commands, options are --options
also, initializa connections only if/when needed
Damyan Ivanov [Thu, 11 Nov 2021 09:43:26 +0000 (09:43 +0000)]
Log::Any, proper idle looping
could not make Net::Async::MPD->idle work as expected, and the "manual"
method seems reliable
Damyan Ivanov [Thu, 11 Nov 2021 09:26:45 +0000 (09:26 +0000)]
fix handling of database info
Damyan Ivanov [Thu, 11 Nov 2021 09:25:27 +0000 (09:25 +0000)]
proper mpd connection initialization
Damyan Ivanov [Thu, 11 Nov 2021 09:24:55 +0000 (09:24 +0000)]
make feeder->mpd accessible
Damyan Ivanov [Thu, 11 Nov 2021 09:24:18 +0000 (09:24 +0000)]
declare used modules
Damyan Ivanov [Thu, 11 Nov 2021 09:23:28 +0000 (09:23 +0000)]
added --skip-db-update option
skips initial database update
Damyan Ivanov [Thu, 11 Nov 2021 09:22:15 +0000 (09:22 +0000)]
fix interval handling when finding suitable songs
Damyan Ivanov [Thu, 11 Nov 2021 09:20:17 +0000 (09:20 +0000)]
fixed SQL param numbers
Damyan Ivanov [Thu, 11 Nov 2021 09:19:56 +0000 (09:19 +0000)]
fixed database connection string
Damyan Ivanov [Wed, 10 Nov 2021 06:20:21 +0000 (06:20 +0000)]
initial source import
option/config parsing works, perhaps the db interactions too