REMOVE_UNUSED_FILES option

This commit is contained in:
boyska 2021-03-03 01:10:32 +01:00
parent b0c2d2195e
commit 255d97d42f
3 changed files with 19 additions and 5 deletions

View file

@ -68,7 +68,7 @@ MPD_PORT
If you are not using a socket, but a TCP address (which is *not* suggested), this is how you can specify the If you are not using a socket, but a TCP address (which is *not* suggested), this is how you can specify the
port. port.
DEBUG DEBUG
you can set it to ``true`` or ``false``. Defaults to ``false``. you can set it to ``true`` or ``false``. Defaults to ``false``. Will enable extremely verbose output.
TMPDIR TMPDIR
The base for larigira tmpdir. Please note that larigira will create its own directory inside this The base for larigira tmpdir. Please note that larigira will create its own directory inside this
temporary directory. This defaults to the system-wide ``$TMPDIR``, or to ``/tmp/`` if not ``TMPDIR`` is temporary directory. This defaults to the system-wide ``$TMPDIR``, or to ``/tmp/`` if not ``TMPDIR`` is
@ -154,3 +154,9 @@ LARIGIRA_UI_CALENDAR_DATE_FMT
The format to show in ``/db/calendar`` page. The format is specified `here <http://babel.pocoo.org/en/latest/dates.html>`_. Default is ``medium``. The format to show in ``/db/calendar`` page. The format is specified `here <http://babel.pocoo.org/en/latest/dates.html>`_. Default is ``medium``.
As an example, ``eee dd LLL`` will show ``Sun 10 Mar`` for english, and ``dom 10 mar`` for italian. As an example, ``eee dd LLL`` will show ``Sun 10 Mar`` for english, and ``dom 10 mar`` for italian.
Debug and development
^^^^^^^^^^^^^^^^^^^^^^^
REMOVE_UNUSED_FILES
By default, larigira removes the file it generates, as soon as they are no longer in MPD playlist. There is no good reason to change this behavior, unless you need to debug what's going on. For example, if you want to inspect files. Set this to `false` keep everything.

View file

@ -30,6 +30,9 @@ def get_conf(prefix="LARIGIRA_"):
conf["CHECK_SECS"] = 20 # period for checking playlist length conf["CHECK_SECS"] = 20 # period for checking playlist length
conf["EVENT_TICK_SECS"] = 30 # period for scheduling events conf["EVENT_TICK_SECS"] = 30 # period for scheduling events
conf["DEBUG"] = False conf["DEBUG"] = False
conf[
"REMOVE_UNUSED_FILES"
] = True # please keep it to True unless you are into deep debugging!
conf["LOG_CONFIG"] = False conf["LOG_CONFIG"] = False
conf["TMPDIR"] = os.getenv("TMPDIR", "/tmp/") conf["TMPDIR"] = os.getenv("TMPDIR", "/tmp/")
conf["FILE_PATH_SUGGESTION"] = () # tuple of paths conf["FILE_PATH_SUGGESTION"] = () # tuple of paths
@ -71,7 +74,9 @@ def from_envvars(prefix=None, envvars=None, as_json=True):
if not envvars: if not envvars:
envvars = { envvars = {
k: k[len(prefix) :] for k in os.environ.keys() if k.startswith(prefix) k: k[len(prefix) :]
for k in os.environ.keys()
if k.startswith(prefix)
} }
for env_name, name in envvars.items(): for env_name, name in envvars.items():

View file

@ -4,9 +4,10 @@ This component will look for files to be removed. There are some assumptions:
own specific TMPDIR own specific TMPDIR
* MPD URIs are parsed, and only file:/// is supported * MPD URIs are parsed, and only file:/// is supported
""" """
import logging
import os import os
from os.path import normpath from os.path import normpath
import logging
import mpd import mpd
@ -64,11 +65,13 @@ class UnusedCleaner:
"""check playlist + internal watchlist to see what can be removed""" """check playlist + internal watchlist to see what can be removed"""
mpdc = self._get_mpd() mpdc = self._get_mpd()
files_in_playlist = { files_in_playlist = {
song["file"] for song in mpdc.playlistid() if song["file"].startswith("/") song["file"]
for song in mpdc.playlistid()
if song["file"].startswith("/")
} }
for fpath in self.waiting_removal_files - files_in_playlist: for fpath in self.waiting_removal_files - files_in_playlist:
# we can remove it! # we can remove it!
self.log.debug("removing unused: %s", fpath) self.log.debug("removing unused: %s", fpath)
self.waiting_removal_files.remove(fpath) self.waiting_removal_files.remove(fpath)
if os.path.exists(fpath): if os.path.exists(fpath) and self.conf["REMOVE_UNUSED_FILES"]:
os.unlink(fpath) os.unlink(fpath)