def track_search(keylist): track=[] for keyword in keylist: tmp= Track.select(Track.q.title.contains(keyword)) track.extend(tmp) track=set(track) return track
def recently_played(n): """ Returns n latest played tracks """ try: recent = [t.track for t in TrackStatistics.select(orderBy=DESC(TrackStatistics.q.last_played))[:10]] if len(recent) < n: recent = recent + [track for track in Track.select()[:n-len(recent)] if track not in recent] return recent except SQLObjectNotFound: return []
def top_tracks(n): """ Returns the top n tracks """ try: top = [t.track for t in TrackStatistics.select(orderBy=DESC(TrackStatistics.q.play_count))[:10]] if len(top) < n: top = top + [track for track in Track.select()[:n-len(top)] if track not in top] return top except SQLObjectNotFound: return []
def requires_update(self, path): if self.full: return True stat_info = os.stat(path) if stat.S_ISDIR(stat_info.st_mode): if stat_info.st_mtime > self.last_shutdown_time: return True return False if stat.S_ISREG(stat_info.st_mode): # if file hasn't been catalogued before # index it anyway already_done = list(Track.select(Track.q.url == 'file://' + path)) if not already_done: return True if stat_info.st_mtime > self.last_shutdown_time: return True return False
def on_deleted(self, event): # instead of bothering with file/directory changes # we simply match path and drop all tracks. tracks = Track.select(Track.q.url.startswith('file://'+event.src_path)) [track.destroySelf() for track in tracks]
def find_existing(url, attrs): #TODO: improve return list(Track.select(Track.q.url == ('file://'+url)))