Loader for lyrics

This commit is contained in:
James Barnsley
2017-10-09 16:56:09 +13:00
parent b344c3585c
commit 011750796c
5 changed files with 128 additions and 47 deletions

View File

@ -24,7 +24,7 @@ const sendRequest = (dispatch, getState, endpoint) => {
Authorization: 'Bearer 2AGP9sfzKQcxfKSZuGa_3lqsDIpuOiTGT7-vhJYcKaaDjHIIA2HICsxXCiC30Xxi'
},
data: JSON.stringify({
url: 'https://api.genius.com/'+endpoint
url: 'https://genius.com/'+endpoint
}),
url: '//'+getState().mopidy.host+':'+getState().mopidy.port+'/iris/http/proxy_request'
};
@ -50,45 +50,45 @@ const sendRequest = (dispatch, getState, endpoint) => {
export function getTrackLyrics(track){
return (dispatch, getState) => {
var query = '';
var endpoint = '';
for (var i = 0; i < track.artists.length; i++){
query += track.artists[i].name+' ';
endpoint += track.artists[i].name+' ';
}
query += track.name+' lyrics';
query = query.replace(/\s+/g, '-').toLowerCase();
endpoint += track.name+' lyrics';
endpoint = endpoint.replace(/\s+/g, '-').toLowerCase();
var config = {
method: 'POST',
cache: false,
timeout: 15000,
data: JSON.stringify({
url: 'https://genius.com/'+query
}),
url: '//'+getState().mopidy.host+':'+getState().mopidy.port+'/iris/http/proxy_request'
};
sendRequest(dispatch, getState, endpoint)
.then(
response => {
var html = $(response);
var lyrics = html.find('.lyrics');
if (lyrics.length > 0){
$.ajax(config).then(
response => {
var html = $(response.response);
var lyrics = html.find('.lyrics');
if (lyrics.length > 0){
lyrics = lyrics.first();
lyrics.find('a').replaceWith(function(){
return this.innerHTML;
});
lyrics = lyrics.first();
lyrics.find('a').replaceWith(function(){ return this.innerHTML; });
var lyrics_html = lyrics.html();
lyrics_html = lyrics_html.replace(/(\[)/g, '<span class="grey-text">[');
lyrics_html = lyrics_html.replace(/(\])/g, ']</span>');
dispatch({
type: 'TRACK_LOADED',
key: track.uri,
track: {
lyrics: lyrics.html()
}
});
dispatch({
type: 'TRACK_LOADED',
key: track.uri,
track: {
lyrics: lyrics_html
}
});
}
},
error => {
dispatch(coreActions.handleException(
'Could not get track lyrics',
error
));
}
},
(xhr, status, error) => {
console.log(xhr, status, error)
}
)
);
}
}