From 5835f55eb277620e0e6e19a01159d2e79b40eba3 Mon Sep 17 00:00:00 2001 From: Bryan Schumaker Date: Thu, 21 Oct 2010 12:43:59 -0400 Subject: [PATCH] Track play count The play count is incremented under two conditions. 1) The track finishes playing. 2) The user skips to the next track, but the current track has played more than 75% --- libsaria/collection/__init__.py | 20 +++++++++++++++++--- libsaria/collection/lens.py | 5 +++++ 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/libsaria/collection/__init__.py b/libsaria/collection/__init__.py index 7d9b9d6f..29a3d9c8 100644 --- a/libsaria/collection/__init__.py +++ b/libsaria/collection/__init__.py @@ -44,6 +44,11 @@ def lib_get_attr(id, attr): if id >= 0: return library.get_attr(id, attr) +def lib_inc_count(id): + global library + if id >= 0: + library.inc_count(id) + def lib_play_id(id): global cur_lib_id cur_lib_id = id @@ -101,7 +106,7 @@ def plist_filter(text): def plist_refresh(): return call("PLISTREFRESH") -def plist_next(arg=None): +def choose_next(): global playlist global cur_lib_id if libsaria.prefs["random"] == True: @@ -109,7 +114,16 @@ def plist_next(arg=None): else: next = playlist.next_id(cur_lib_id) if next != None: - lib_play_id(next) -libsaria.event.invite("POSTEOS", plist_next) + return call("NEXT", lib_play_id, next) + +def plist_next(): + prcnt = libsaria.music.get_progress() + if prcnt > 75: + lib_inc_count(cur_lib_id) + +def catch_eos(arg=None): + lib_inc_count(cur_lib_id) + choose_next() +libsaria.event.invite("POSTEOS", catch_eos) diff --git a/libsaria/collection/lens.py b/libsaria/collection/lens.py index 516cc68d..2cf7dec1 100644 --- a/libsaria/collection/lens.py +++ b/libsaria/collection/lens.py @@ -37,6 +37,11 @@ class Library(collection.Collection): save(badfiles, "badfiles", "") self.disp() + def inc_count(self, id): + rec = self.records.get(id, None) + if rec: + rec.count += 1 + def update(self, path): global badfiles FileRef = libsaria.collection.FileRef