Skip to content

Commit

Permalink
create cleanupArtistName() in song-info
Browse files Browse the repository at this point in the history
  • Loading branch information
Araxeus committed May 7, 2021
1 parent 2d6e858 commit 8b471c0
Show file tree
Hide file tree
Showing 5 changed files with 25 additions and 29 deletions.
1 change: 0 additions & 1 deletion config/defaults.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@ const defaultConfig = {
api_root: "http://ws.audioscrobbler.com/2.0/",
api_key: "04d76faaac8726e60988e14c105d421a", // api key registered by @semvis123
secret: "a5d2a36fdf64819290f6982481eaffa2",
suffixesToRemove: [' - Topic', 'VEVO'] // removes suffixes of the artist name, for better recognition
},
discord: {
enabled: false,
Expand Down
3 changes: 2 additions & 1 deletion plugins/downloader/menu.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ let downloadLabel = defaultMenuDownloadLabel;
let metadataURL = undefined;
let callbackIsRegistered = false;

module.exports = (win, options, refreshMenu) => {
module.exports = (win, options) => {
if (!callbackIsRegistered) {
const registerCallback = getSongInfo(win);
registerCallback((info) => {
Expand All @@ -36,6 +36,7 @@ module.exports = (win, options, refreshMenu) => {
return;
}

console.log("trying to get playlist ID" +playlistID);
const playlist = await ytpl(playlistID,
{ limit: options.playlistMaxItems || Infinity }
);
Expand Down
12 changes: 3 additions & 9 deletions plugins/downloader/youtube-dl.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@ const ytdl = require("ytdl-core");

const { triggerAction, triggerActionSync } = require("../utils");
const { ACTIONS, CHANNEL } = require("./actions.js");
const { defaultMenuDownloadLabel, getFolder } = require("./utils");
const { getFolder } = require("./utils");
const { cleanupArtistName } = require("../../providers/song-info");

const { createFFmpeg } = FFmpeg;
const ffmpeg = createFFmpeg({
Expand All @@ -24,13 +25,6 @@ const ffmpeg = createFFmpeg({
});
const ffmpegMutex = new Mutex();

function noTopic(channelName) {
if (channelName && channelName.endsWith(" - Topic")) {
channelName = channelName.slice(0, -8);
}
return channelName;
}

const downloadVideoToMP3 = async (
videoUrl,
sendFeedback,
Expand All @@ -46,7 +40,7 @@ const downloadVideoToMP3 = async (
const info = await ytdl.getInfo(videoUrl);
const thumbnails = info.videoDetails?.author?.thumbnails;
metadata = {
artist: info.videoDetails?.media?.artist || noTopic(info.videoDetails?.author?.name) || "",
artist: info.videoDetails?.media?.artist || cleanupArtistName(info.videoDetails?.author?.name) || "",
title: info.videoDetails?.media?.song || info.videoDetails?.title || "",
imageSrc: thumbnails ? thumbnails[thumbnails.length - 1].url : ""
}
Expand Down
21 changes: 4 additions & 17 deletions plugins/last-fm/back.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,21 +5,10 @@ const { setOptions } = require('../../config/plugins');
const getSongInfo = require('../../providers/song-info');
const defaultConfig = require('../../config/defaults');

const cleanupArtistName = (config, artist) => {
// removes the suffixes of the artist name for more recognition by last.fm
const { suffixesToRemove } = config;
if (suffixesToRemove === undefined) return artist;

for (suffix of suffixesToRemove) {
artist = artist.replace(suffix, '');
}
return artist;
}

const createFormData = params => {
// creates the body for in the post request
const formData = new URLSearchParams();
for (key in params) {
for (const key in params) {
formData.append(key, params[key]);
}
return formData;
Expand All @@ -28,7 +17,7 @@ const createQueryString = (params, api_sig) => {
// creates a querystring
const queryData = [];
params.api_sig = api_sig;
for (key in params) {
for (const key in params) {
queryData.push(`${encodeURIComponent(key)}=${encodeURIComponent(params[key])}`);
}
return '?'+queryData.join('&');
Expand All @@ -37,12 +26,12 @@ const createQueryString = (params, api_sig) => {
const createApiSig = (params, secret) => {
// this function creates the api signature, see: https://www.last.fm/api/authspec
const keys = [];
for (key in params) {
for (const key in params) {
keys.push(key);
}
keys.sort();
let sig = '';
for (key of keys) {
for (const key of keys) {
if (String(key) === 'format')
continue
sig += `${key}${params[key]}`;
Expand Down Expand Up @@ -157,8 +146,6 @@ const lastfm = async (win, config) => {
registerCallback( songInfo => {
// set remove the old scrobble timer
clearTimeout(scrobbleTimer);
// make the artist name a bit cleaner
songInfo.artist = cleanupArtistName(config, songInfo.artist);
if (!songInfo.isPaused) {
setNowPlaying(songInfo, config);
// scrobble when the song is half way through, or has passed the 4 minute mark
Expand Down
17 changes: 16 additions & 1 deletion providers/song-info.js
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ const songInfo = {
const handleData = async (responseText, win) => {
let data = JSON.parse(responseText);
songInfo.title = data.videoDetails?.media?.song || data?.videoDetails?.title;
songInfo.artist = data.videoDetails?.media?.artist || await getArtist(win) || data?.videoDetails?.author;
songInfo.artist = data.videoDetails?.media?.artist || await getArtist(win) || cleanupArtistName(data?.videoDetails?.author);
songInfo.views = data?.videoDetails?.viewCount;
songInfo.imageSrc = data?.videoDetails?.thumbnail?.thumbnails?.pop()?.url;
songInfo.songDuration = data?.videoDetails?.lengthSeconds;
Expand Down Expand Up @@ -102,5 +102,20 @@ const registerProvider = (win) => {
return registerCallback;
};

const suffixesToRemove = [' - Topic', 'VEVO'];
function cleanupArtistName(artist) {
if (!artist) {
return artist;
}
for (const suffix of suffixesToRemove) {
if (artist.endsWith(suffix)) {
return artist.slice(0, -suffix.length)
}
}
return artist;
}

module.exports = registerProvider;
module.exports.getImage = getImage;
module.exports.cleanupArtistName = cleanupArtistName;

0 comments on commit 8b471c0

Please sign in to comment.