Add in process-caching, example links

This commit is contained in:
Jonathan Cremin 2014-12-04 23:50:45 +00:00
parent a401a0a351
commit 69c60a078e
4 changed files with 19 additions and 4 deletions

7
app.js
View file

@ -44,7 +44,12 @@ app.get('*', function(req,res,next) {
});
app.get('/', function(req, res) {
res.render('index', { error: req.flash('search-error') });
var samples = [
{artist: "Aesop Rock", album: "None Shall Pass", url: '/google/album/Bpnz47tzvmp3p46ht3syerwyvva'},
{artist: "Hozier", album: "self-titled album", url: '/google/album/Bd3mxcy3otokg4yc45qktq7l35q'},
{artist: "Daft Punk", album: "Discovery", url: '/google/album/B4t6yqqvhnb2hy4st4uisjrcsrm'}
];
res.render('index', { samples: samples, error: req.flash('search-error') });
});
app.post('/search', search);

View file

@ -73,6 +73,7 @@ module.exports.search = function(data) {
if (!data[type + "s"].items[0]) {
deferred.resolve({service:"spotify"});
return;
}
var item = data[type + "s"].items[0];

View file

@ -4,10 +4,13 @@ var Q = require('q');
var services = {};
var cache = {};
require("fs").readdirSync(path.join(__dirname, "..", "lib", "services")).forEach(function(file) {
var service = require("../lib/services/" + file);
if (service.search) {
services[service.id] = service;
cache[service.id] = {};
}
});
@ -17,6 +20,11 @@ module.exports = function(req, res) {
var itemId = req.params.id;
var promises = [];
if (cache[serviceId][type + "-" + itemId]) {
res.render(type, {items: cache[serviceId][type + "-" + itemId]});
return;
}
services[serviceId].lookupId(itemId, type).then(function(item) {
for (var id in services) {
if (id != serviceId) {
@ -38,7 +46,7 @@ module.exports = function(req, res) {
});
items.unshift(item);
cache[serviceId][item.type + "-" + item.id] = items;
res.render(type, {items: items});
});
});

View file

@ -25,7 +25,7 @@
<form role="form" method="post" action="/search">
<div class="input-group input-group-lg">
<input type="text" name="url" placeholder="Paste link here" class="form-control">
<input type="text" name="url" placeholder="Paste link here" class="form-control" autofocus>
<span class="input-group-btn">
<input type="submit" class="btn btn-lg btn-custom" value="Share Music">
</span>
@ -38,7 +38,8 @@
<div class="col-md-6 col-md-offset-3">
<p>Make sharing from music services better.
We match album and track links from Rdio, Spotify, Deezer, Beats Music, Google Music and iTunes and give you back a link with all of them.</p>
<p><a href="/google/album/B3qrtsvk5s3piwyla76sk6qyxny">Here's a sample</a>.</p>
<% var sample = samples[Math.floor(Math.random() * samples.length)] %>
<p><a href="<%= sample.url %>">Here's an example with <%= sample.artist %>'s <%= sample.album %></a>.</p>
</div>
</div>
</div>