]> kaliko git repositories - mpd-sima.git/blobdiff - sima/plugins/core/history.py
Update simadb API
[mpd-sima.git] / sima / plugins / core / history.py
index 67414a845f2a756e5f0314f9c1aee5be7b3891a8..3380870754b84a12c775dd0075b40173e1f0c0c6 100644 (file)
@@ -1,8 +1,27 @@
 # -*- coding: utf-8 -*-
+# Copyright (c) 2013, 2014, 2020 kaliko <kaliko@azylum.org>
+#
+#  This file is part of sima
+#
+#  sima is free software: you can redistribute it and/or modify
+#  it under the terms of the GNU General Public License as published by
+#  the Free Software Foundation, either version 3 of the License, or
+#  (at your option) any later version.
+#
+#  sima 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 sima.  If not, see <http://www.gnu.org/licenses/>.
+#
+#
 """Add playing tracks to history
 """
 
 # standard library import
+from time import time
 
 # third parties components
 
@@ -15,17 +34,32 @@ class History(Plugin):
     """
     def __init__(self, daemon):
         Plugin.__init__(self, daemon)
-        self.sdb = daemon.sdb
+        self._last_clean = time()
 
     def shutdown(self):
         self.log.info('Cleaning database')
         self.sdb.purge_history()
-        self.sdb.clean_database()
 
-    def callback_next_song(self):
+    def _h_tip(self):
+        hist = self.sdb.fetch_history()
+        if hist:
+            return hist[0]
+        return None
+
+    def callback_player(self):
         current = self.player.current
-        self.log.debug('add history: "{}"'.format(current))
+        if not current:
+            if self.player.state == 'play':
+                self.log.debug('Cannot add "%s" to history (empty or missing file)', current)
+            return
+        last_hist = self._h_tip()
+        if last_hist and last_hist == current:
+            return
+        self.log.debug('add history: "%s"', current)
         self.sdb.add_history(current)
+        if time() - self._last_clean > 86400:
+            self.shutdown()
+            self._last_clean = time()
 
 
 # VIM MODLINE