Example #1
0
	def load_from_id(klass, song_id, sid = None):
		if sid:
			d = db.c.fetch_row("SELECT * FROM r4_songs JOIN r4_song_sid USING (song_id) WHERE r4_songs.song_id = %s AND r4_song_sid.sid = %s", (song_id, sid))
		else:
			d = db.c.fetch_row("SELECT * FROM r4_songs WHERE song_id = %s", (song_id,))
		if not d:
			raise SongNonExistent

		try:
			s = klass()
			s.id = song_id
			s.sid = sid
			s.filename = d['song_filename']
			s.verified = d['song_verified']
			s.replay_gain = d['song_replay_gain']
			s.data['sids'] = db.c.fetch_list("SELECT sid FROM r4_song_sid WHERE song_id = %s", (song_id,))
			s.data['sid'] = sid
			s.data['rank'] = None
			s._assign_from_dict(d)

			if 'album_id' in d and d['album_id']:
				if sid:
					s.albums = [ Album.load_from_id_sid(d['album_id'], s.sid) ]
				else:
					s.albums = [ Album.load_from_id(d['album_id']) ]
			s.artists = Artist.load_list_from_song_id(song_id)
			s.groups = SongGroup.load_list_from_song_id(song_id)
		except Exception as e:
			log.exception("song", "Song failed to load.", e)
			db.c.update("UPDATE r4_songs SET song_verified = FALSE WHERE song_id = song_id")
			raise

		return s
Example #2
0
	def load_from_id(klass, song_id, sid = None):
		if sid is not None:
			d = db.c.fetch_row("SELECT * FROM r4_songs JOIN r4_song_sid USING (song_id) WHERE r4_songs.song_id = %s AND r4_song_sid.sid = %s", (song_id, sid))
		else:
			d = db.c.fetch_row("SELECT * FROM r4_songs WHERE song_id = %s", (song_id,))
		if not d:
			raise SongNonExistent

		try:
			s = klass()
			s.id = song_id
			s.sid = sid
			s.filename = d['song_filename']
			s.verified = d['song_verified']
			s.replay_gain = d['song_replay_gain']
			s.data['sids'] = db.c.fetch_list("SELECT sid FROM r4_song_sid WHERE song_id = %s", (song_id,))
			s.data['sid'] = sid
			s.data['rank'] = None
			s._assign_from_dict(d)

			if 'album_id' in d and d['album_id']:
				if sid is not None:
					s.albums = [ Album.load_from_id_sid(d['album_id'], s.sid) ]
				else:
					s.albums = [ Album.load_from_id(d['album_id']) ]
			s.artists = Artist.load_list_from_song_id(song_id)
			s.groups = SongGroup.load_list_from_song_id(song_id)
		except Exception as e:
			log.exception("song", "Song ID %s failed to load, sid %s." % (song_id, sid), e)
			s.disable()
			raise

		return s
Example #3
0
	def load_from_id(klass, song_id, sid = None, all_categories = False):
		if sid is not None:
			d = db.c.fetch_row("SELECT * FROM r4_songs JOIN r4_song_sid USING (song_id) WHERE r4_songs.song_id = %s AND r4_song_sid.sid = %s", (song_id, sid))
		else:
			d = db.c.fetch_row("SELECT * FROM r4_songs WHERE song_id = %s", (song_id,))
			sid = d['song_origin_sid']
		if not d:
			raise SongNonExistent

		try:
			s = klass()
			s.id = song_id
			s.sid = sid
			s.filename = d['song_filename']
			s.verified = d['song_verified']
			s.replay_gain = d['song_replay_gain']
			s.data['sids'] = db.c.fetch_list("SELECT sid FROM r4_song_sid WHERE song_id = %s", (song_id,))
			s.data['sid'] = sid
			s.data['rank'] = None
			s._assign_from_dict(d)

			if 'album_id' in d and d['album_id']:
				s.albums = [ Album.load_from_id_sid(d['album_id'], sid) ]
			s.artists = Artist.load_list_from_song_id(song_id)
			s.groups = SongGroup.load_list_from_song_id(song_id, sid, all_categories = all_categories)
		except Exception as e:
			log.exception("song", "Song ID %s failed to load, sid %s." % (song_id, sid), e)
			s.disable()
			raise

		return s