diff --git a/config/defaults.js b/config/defaults.js index 2a084737f5..12f6a2486b 100644 --- a/config/defaults.js +++ b/config/defaults.js @@ -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, diff --git a/plugins/downloader/menu.js b/plugins/downloader/menu.js index fb378606b4..f5b99d7390 100644 --- a/plugins/downloader/menu.js +++ b/plugins/downloader/menu.js @@ -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) => { @@ -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 } ); diff --git a/plugins/downloader/youtube-dl.js b/plugins/downloader/youtube-dl.js index 1a79f5fa28..814d992499 100644 --- a/plugins/downloader/youtube-dl.js +++ b/plugins/downloader/youtube-dl.js @@ -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({ @@ -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, @@ -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 : "" } diff --git a/plugins/last-fm/back.js b/plugins/last-fm/back.js index a34a0a19f1..efa4f41ee8 100644 --- a/plugins/last-fm/back.js +++ b/plugins/last-fm/back.js @@ -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; @@ -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('&'); @@ -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]}`; @@ -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 diff --git a/providers/song-info.js b/providers/song-info.js index 02ba6decde..6833fb8f55 100644 --- a/providers/song-info.js +++ b/providers/song-info.js @@ -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; @@ -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; +