def update_rating(self): for sid in db.c.fetch_list( "SELECT sid FROM r4_album_sid WHERE album_id = %s", (self.id, )): ratings = db.c.fetch_all( "SELECT r4_song_ratings.song_rating_user AS rating, COUNT(r4_song_ratings.user_id) AS count " "FROM r4_songs " "JOIN r4_song_sid ON (r4_songs.song_id = r4_song_sid.song_id AND r4_song_sid.sid = %s AND r4_song_sid.song_exists = TRUE) " "JOIN r4_song_ratings ON (r4_song_sid.song_id = r4_song_ratings.song_id) " "JOIN phpbb_users ON (r4_song_ratings.user_id = phpbb_users.user_id AND phpbb_users.radio_inactive = FALSE) " "WHERE r4_songs.album_id = %s " "GROUP BY rating ", (sid, self.id)) (points, potential_points) = rating.rating_calculator(ratings) log.debug( "song_rating", "%s album ratings for %s (%s)" % (potential_points, self.data['name'], config.station_id_friendly[sid])) if points > 0 and potential_points > config.get( "rating_threshold_for_calc"): self.rating_precise = ((points / potential_points) * 4) + 1 self.data['rating'] = round(self.rating_precise, 1) self.data['rating_count'] = potential_points log.debug( "album_rating", "%s new rating for %s" % (self.rating_precise, self.data['name'])) db.c.update( "UPDATE r4_album_sid SET album_rating = %s, album_rating_count = %s WHERE album_id = %s AND sid = %s", (self.rating_precise, potential_points, self.id, sid))
def update_rating(self, skip_album_update=False): ratings = db.c.fetch_all( "SELECT song_rating_user AS rating, COUNT(user_id) AS count FROM r4_song_ratings JOIN phpbb_users USING (user_id) WHERE song_id = %s AND radio_inactive = FALSE AND song_rating_user IS NOT NULL GROUP BY song_rating_user", (self.id, ), ) (points, potential_points) = rating.rating_calculator(ratings) log.debug("song_rating", "%s ratings for %s" % (potential_points, self.filename)) if points > 0 and potential_points > config.get( "rating_threshold_for_calc"): self.data["rating"] = ((points / potential_points) * 4) + 1 self.data["rating_count"] = potential_points log.debug( "song_rating", "rating update: %s for %s" % (self.data["rating"], self.filename), ) db.c.update( "UPDATE r4_songs SET song_rating = %s, song_rating_count = %s WHERE song_id = %s", (self.data["rating"], potential_points, self.id), ) if not skip_album_update: for album in self.albums: album.update_rating()
def update_rating(self): for sid in db.c.fetch_list("SELECT sid FROM r4_album_sid WHERE album_id = %s", (self.id,)): ratings = db.c.fetch_all( "SELECT r4_song_ratings.song_rating_user AS rating, COUNT(r4_song_ratings.user_id) AS count " "FROM r4_songs " "JOIN r4_song_sid ON (r4_songs.song_id = r4_song_sid.song_id AND r4_song_sid.sid = %s AND r4_song_sid.song_exists = TRUE) " "JOIN r4_song_ratings ON (r4_song_sid.song_id = r4_song_ratings.song_id) " "JOIN phpbb_users ON (r4_song_ratings.user_id = phpbb_users.user_id AND phpbb_users.radio_inactive = FALSE) " "WHERE r4_songs.album_id = %s " "GROUP BY rating ", (sid, self.id), ) (points, potential_points) = rating.rating_calculator(ratings) log.debug( "song_rating", "%s album ratings for %s (%s)" % (potential_points, self.data["name"], config.station_id_friendly[sid]), ) if points > 0 and potential_points > config.get("rating_threshold_for_calc"): self.rating_precise = ((points / potential_points) * 4) + 1 self.data["rating"] = round(self.rating_precise, 1) self.data["rating_count"] = potential_points log.debug("album_rating", "%s new rating for %s" % (self.rating_precise, self.data["name"])) db.c.update( "UPDATE r4_album_sid SET album_rating = %s, album_rating_count = %s WHERE album_id = %s AND sid = %s", (self.rating_precise, potential_points, self.id, sid), )
def update_rating(self, skip_album_update=False): ratings = db.c.fetch_all("SELECT song_rating_user AS rating, COUNT(user_id) AS count FROM r4_song_ratings JOIN phpbb_users USING (user_id) WHERE song_id = %s AND radio_inactive = FALSE AND song_rating_user IS NOT NULL GROUP BY song_rating_user", (self.id,)) (points, potential_points) = rating.rating_calculator(ratings) log.debug("song_rating", "%s ratings for %s" % (potential_points, self.filename)) if points > 0 and potential_points > config.get("rating_threshold_for_calc"): self.data['rating'] = ((points / potential_points) * 4) + 1 self.data['rating_count'] = potential_points log.debug("song_rating", "rating update: %s for %s" % (self.data['rating'], self.filename)) db.c.update("UPDATE r4_songs SET song_rating = %s, song_rating_count = %s WHERE song_id = %s", (self.data['rating'], potential_points, self.id)) if not skip_album_update: for album in self.albums: album.update_rating()