def test_max_out_degree(self): recommend.MAX_OUT_DEGREE = 1 recommend.positive(1, 4) self.assertTrue(recommend._graph.has_edge(1, 4)) self.assertFalse(recommend._graph.has_edge(1, 3)) self.assertFalse(recommend._graph.has_edge(1, 2))
def test_max_in_degree(self): recommend.MAX_IN_DEGREE = 1 recommend.positive(5, 2) self.assertTrue(recommend._graph.has_edge(5, 2)) self.assertFalse(recommend._graph.has_edge(1, 2)) self.assertFalse(recommend._graph.has_edge(6, 2))
def on_playlist_changed(self, changed_val): changed_dict = changed_val.get_dict() type = changed_dict["type"] if type not in (xmmsclient.PLAYLIST_CHANGED_INSERT, xmmsclient.PLAYLIST_CHANGED_MOVE, xmmsclient.PLAYLIST_CHANGED_REMOVE, xmmsclient.PLAYLIST_CHANGED_REPLACE): return True if type == xmmsclient.PLAYLIST_CHANGED_REPLACE: logging.debug("playlist replaced, resetting") self.reset_playlist_cache() return True pos = changed_dict["position"] if type == xmmsclient.PLAYLIST_CHANGED_REMOVE: logging.debug("removal dict: %s", changed_dict) if pos > 0: recommend.negative(self.playlist_entries_cache[pos-1], self.playlist_entries_cache[pos], recommend.FEEDBACK_WEIGHT_HIGH) del self.playlist_entries_cache[pos] elif type == xmmsclient.PLAYLIST_CHANGED_INSERT: logging.debug("insert dict: %s", changed_dict) mid = changed_dict["id"] if self.check_own_insertion(pos, mid): weight = recommend.FEEDBACK_WEIGHT_LOW else: weight = recommend.FEEDBACK_WEIGHT_HIGH if pos > 0: recommend.positive(self.playlist_entries_cache[pos-1], mid, weight) self.playlist_entries_cache.insert(pos, mid) elif type == xmmsclient.PLAYLIST_CHANGED_MOVE: logging.debug("move dict: %s", changed_dict) mid = changed_dict["id"] newpos = changed_dict["newposition"] del self.playlist_entries_cache[pos] self.playlist_entries_cache.insert(newpos, mid) if newpos > 0: recommend.positive(self.playlist_entries_cache[newpos-1], self.playlist_entries_cache[newpos], recommend.FEEDBACK_WEIGHT_HIGH) self.fill_playlist() return True