Example #1
0
 def filter_by_parameters(self, parameters, base_track, target_track):
     pattern = list(filter(lambda p: p.name == "pattern", parameters))
     if len(pattern) > 0:
         cp = CriticizePattern(pattern[0].value)
         return cp.is_fit_pattern(base_track, target_track)
     else:
         return self.is_fit_track(base_track, target_track)
Example #2
0
    def request_to_parameters(self, criticize_type, track, request_parameters):
        if criticize_type != TrackCriticizeType.Parameter and not track:
            raise Exception("Target track is None")

        parameters = []
        if criticize_type == TrackCriticizeType.Parameter:
            if "bpm" in request_parameters:
                parameters.append(Parameter("bpm", request_parameters["bpm"]))

        elif criticize_type == TrackCriticizeType.Pattern:
            criticize = CriticizePattern(pattern=request_parameters["pattern"])
            direction = criticize.get_direction()
            parameters.append(Parameter("pattern", criticize.pattern))
            for c in criticize.get_targets():
                parameters.append(Parameter(c.name, vector_utils.to_value(getattr(track, c.name)), direction))

        elif criticize_type == TrackCriticizeType.Like:
            for c in self.__get_criticizables():
                parameters.append(Parameter(c, vector_utils.to_value(getattr(track, c))))

        if "q" in request_parameters and request_parameters["q"]:
            parameters.append(Parameter("q", request_parameters["q"]))

        if Parameter.first_or_default("genre", parameters) and not Parameter.first_or_default("genre_score", parameters):
            genre = Parameter.first_or_default("genre", parameters)
            if Track.genre_to_score(genre):
                g_score = Track.genre_to_score(genre)
                parameters.append(Parameter("genre_score", g_score))

        return parameters