Esempio n. 1
0
def get_songs_play(ids, full=False):
	ids = list(map(int, ids.split(',')))
	res_files = []
	covers = []
	titles = []
	artists = []
	for id in ids:
		song = Song.query.filter(Song.id == id).first()
		if song is None:
			return jsonify({'status': False})
		fn = get_song_filename(song)
		link = ''
		for key in ['file_flac', 'file']:
			mfn = song.__dict__[key]
			if mfn:
				link = files.get_link(mfn, fn + '.' + get_ext(mfn, ''), 86400)
				break
		res_files.append(link)
		album = Album.query.filter(Album.id == song.album_id).one()
		if len(album.cover_files):
			covers.append(files.get_link(album.cover_files[0], 'cover.jpg'))
		else:
			covers.append('')
		if full:
			titles.append(song.title)
			artists.append(song.artist)
	res = {'files': res_files, 'covers': covers}
	if full:
		res['titles'] = titles
		res['artists'] = artists
	return jsonify({'status': True, 'data': res})
Esempio n. 2
0
def get_album_scans(id):
	id = int(id)
	album = Album.query.filter(Album.id == id).first()
	if album is None:
		return jsonify({'status': False})
	scans = Scan.query.filter(Scan.album_id == id).all()
	res = []
	for scan in scans:
		imgs = json.loads(scan.files)
		tmp = []
		for fn, thb, src in imgs:
			tmp.append([fn, files.get_link(thb, fn + '.thumb.png'), files.get_link(src, fn)])
		res.append({'id': scan.id, 'packname': scan.name, 'files': tmp})
	return jsonify({'status': True, 'data': res})
Esempio n. 3
0
def get_song_link(id):
	id = int(id)
	song = Song.query.filter(Song.id == id).first()
	if song is None:
		return jsonify({'status': False})
	fn = get_song_filename(song)
	data = {}
	for key in ['file', 'file_flac']:
		mfn = song.__dict__[key]
		data[key] = files.get_link(mfn, fn + '.' + get_ext(mfn, ''), 86400) if mfn else ''
	return jsonify({'status': True, 'data': data})
Esempio n. 4
0
def random_album():
	count = int(request.values.get('count'))
	if count <= 0 or count > 100:
		return jsonify({'status': False})
	albums = Album.query.order_by(func.rand()).all()[:count]
	res = []
	for album in albums:
		tmp = album_schema.dump(album)
		tmp['cover_files'] = list(map(lambda x: files.get_link(x, 'cover.jpg'), tmp['cover_files']))
		res.append(tmp)
	return jsonify({'status': True, 'data': res})
Esempio n. 5
0
def random_song():
	count = int(request.values.get('count'))
	if count <= 0 or count > 100:
		return jsonify({'status': False})
	songs = Song.query.order_by(func.rand()).all()[:count]
	res = []
	for song in songs:
		album = Album.query.filter(Album.id == song.album_id).one()
		tmp = song_schema.dump(song)
		tmp['album_title'] = album.title
		tmp['cover_files'] = list(map(lambda x: files.get_link(x, 'cover.jpg'), album.cover_files))
		res.append(tmp)
	return jsonify({'status': True, 'data': res})
Esempio n. 6
0
def get_album_info(id):
	id = int(id)
	album = Album.query.filter(Album.id == id).first()
	if album is None:
		return jsonify({'status': False})
	res = album_schema.dump(album)
	res['cover_files'] = list(map(lambda x: files.get_link(x, 'cover.jpg'), res['cover_files']))
	songs = Song.query.filter(Song.album_id == id).order_by(Song.track).all()
	res['songs'] = []
	for i in songs:
		res['songs'].append(song_schema.dump(i))
		if request.values.get('extra_data') is not None:
			res['songs'][-1]['extra_data'] = i.extra_data
	if request.values.get('extra_data') is not None:
		res['extra_data'] = album.extra_data
	return jsonify({'status': True, 'data': res})
Esempio n. 7
0
def get_log_download(id):
	if re.match(r'^[a-zA-Z0-9\._]+$', id) is None:
		return jsonify({'status': False})
	return jsonify({'status': True, 'data': files.get_link(id, 'album.log')})