Skip to content
Snippets Groups Projects
Commit 67a9aa15 authored by ale's avatar ale
Browse files

show album art

parent 09a5eb9a
No related branches found
No related tags found
No related merge requests found
......@@ -8,10 +8,12 @@ import logging
from datetime import datetime
from flask import Flask, request, Response, abort, jsonify, \
render_template, session
from flask.helpers import send_file
from djrandom import daemonize
from djrandom import utils
from djrandom.model.mp3 import MP3, PlayLog
from djrandom.model.playlist import Playlist
from djrandom.model.external import AlbumImageRetriever
from djrandom.database import Session, init_db
from djrandom.frontend import search
from sqlalchemy import distinct
......@@ -22,6 +24,7 @@ app = Flask(__name__)
app.secret_key = 'J@9als[13- "!>0@!!zWz}='
storage_root = None
searcher = None
album_images = None
USERID_COOKIE = 'USERID'
......@@ -100,6 +103,16 @@ def play_callback(sha1):
return jsonify(status=True)
@app.route('/album_image/<artist>/<album>')
def get_album_image(artist, album):
img_file = album_images.get_album_image(
urllib.urlunquote_plus(artist),
urllib.urlunquote_plus(album))
if not img_file:
abort(404)
return send_file(img_file, mimetype='image/jpeg', conditional=True)
@app.route('/json/playlist/save', methods=['POST'])
def save_playlist():
hashes = request.form.get('h', '')
......@@ -210,10 +223,11 @@ def download_song(sha1):
return response
def run_frontend(port, storage_dir, solr_url, db_url):
global storage_root, searcher
def run_frontend(port, storage_dir, solr_url, db_url, lastfm_api_key):
global storage_root, searcher, album_images
storage_root = storage_dir
searcher = search.Searcher(solr_url)
album_images = AlbumImageRetriever(lastfm_api_key)
init_db(db_url)
from gevent.wsgi import WSGIServer
......@@ -227,6 +241,7 @@ def main():
parser.add_option('--port', type='int', default=3003)
parser.add_option('--storage_dir')
parser.add_option('--db_url')
parser.add_option('--lastfm_api_key')
daemonize.add_standard_options(parser)
utils.read_config_defaults(
parser, os.getenv('DJRANDOM_CONF', '/etc/djrandom.conf'))
......@@ -239,8 +254,8 @@ def main():
parser.error('Too many arguments')
daemonize.daemonize(opts, run_frontend,
(opts.port, opts.storage_dir,
opts.solr_url, opts.db_url),
(opts.port, opts.storage_dir, opts.solr_url,
opts.db_url, opts.lastfm_api_key),
support_gevent=True)
......
......@@ -329,10 +329,14 @@ djr.Player.prototype.play = function(song) {
// Load song info in the player UI. We cheat by stealing the data
// from the existing <div> instead than from the server.
var artist = $('#song_' + song + ' .artist').text();
var album = $('#song_' + song + ' .album').text();
var album_art_url = '/album_image/' + escape(artist) + '/' + escape(album);
$('#jp_playlist_1').html(
$('#song_' + song + ' .title').text() + '<br>'
+ $('#song_' + song + ' .artist').text() + '<br>'
+ '<small>' + $('#song_' + song + ' .album').text() + '</small>'
+ artist + '<br>'
+ '<small>' + album + '</small><br>'
+ '<img src=\"' + album_art_url + '\" border=\"0\">'
);
// Report the new song being played.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment