Files
chopin/backend/src/media/SoundcloudInformation.js

85 lines
2.3 KiB
JavaScript

const {LogType} = require('loguix');
const clog = new LogType("SoundcloudInformation");
const {Song} = require('../player/Song');
const {Playlist} = require('../playlists/Playlist');
const {Soundcloud} = require('soundcloud.ts')
const {getReadableDuration} = require('../utils/TimeConverter');
const soundcloud = new Soundcloud();
async function getTrack(url) {
try {
const info = await soundcloud.tracks.get(url)
if(!info) {
clog.error("Impossible de récupérer les informations de la piste Soundcloud à partir de l'URL");
return null;
}
const song = new Song();
song.title = info.title;
song.author = info.user.username;
song.url = info.permalink_url;
song.thumbnail = info.artwork_url;
song.id = info.id;
song.duration = info.duration / 1000;
song.readduration = getReadableDuration(info.duration / 1000);
song.type = "soundcloud";
return song;
} catch (error) {
clog.error('Erreur lors de la recherche Soundcloud (Track): ' + error);
return null;
}
}
async function getPlaylist(url) {
try {
const info = await soundcloud.playlists.get(url)
if(!info) {
clog.error("Impossible de récupérer les informations de la playlist Soundcloud à partir de l'URL");
return null;
}
const playlist = new Playlist();
playlist.title = info.title;
playlist.author = info.user.username;
playlist.url = info.permalink_url;
playlist.thumbnail = info.artwork_url;
playlist.id = info.id;
playlist.duration = 0;
playlist.songs = [];
playlist.type = "soundcloud";
for(const track of info.tracks) {
const song = new Song();
song.title = track.title;
song.author = track.user.username;
song.url = track.permalink_url;
song.thumbnail = track.artwork_url;
song.id = track.id;
song.duration = track.duration / 1000;
song.readduration = getReadableDuration(track.duration / 1000);
song.type = "soundcloud";
playlist.duration += track.duration / 1000;
playlist.songs.push(song);
}
playlist.readduration = getReadableDuration(playlist.duration);
return playlist;
} catch (error) {
clog.error('Erreur lors de la recherche Soundcloud (Playlist): ' + error);
return null;
}
}
module.exports = {getTrack, getPlaylist}