From e70ce4a9ca6a9b74f8fc55726f16bb34cb2b647f Mon Sep 17 00:00:00 2001 From: MeowcaTheoRange Date: Wed, 21 Feb 2024 09:13:31 -0600 Subject: [PATCH] Add command arguments for manual "scrobbling" --- index.js | 33 ++++++++++++++++++++++++++++----- package.json | 1 + 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/index.js b/index.js index 87d55df..4883201 100644 --- a/index.js +++ b/index.js @@ -8,6 +8,7 @@ const { createClient } = require("fix-esm").require("webdav"); const path = require("path"); const { readFileSync, writeFileSync } = require("fs"); const io = require('socket.io-client'); +const { program } = require('commander'); function pathGenerator({ url, name, channelName }) { return path.join(process.env.NEXTCLOUD_FOLDER, `${url}-${skewered(`${name} - ${channelName}`)}.mp3`) @@ -25,10 +26,21 @@ function writeLastSong({ name, channelName }) { return null; } -async function getVideo() { - const trackData = await fetch( - `https://${process.env.LASTFM_INSTANCE}/2.0/?method=user.getrecenttracks&user=${process.env.LASTFM_USERNAME}&api_key=${process.env.LASTFM_API_KEY}&format=json&limit=1&extended=1` - ).then(x => x.json()).then(data => data.recenttracks.track[0]); +async function getVideo({ msName, msArtist }) { + let trackData; + + if (msName != null && msArtist != null) { + trackData = { + name: msName, + artist: { + name: msArtist + } + }; + } else { + trackData = await fetch( + `https://${process.env.LASTFM_INSTANCE}/2.0/?method=user.getrecenttracks&user=${process.env.LASTFM_USERNAME}&api_key=${process.env.LASTFM_API_KEY}&format=json&limit=1&extended=1` + ).then(x => x.json()).then(data => data.recenttracks.track[0]); + } if (checkLastSong({ name: trackData.name, @@ -152,13 +164,24 @@ async function uploadToNextcloud({ fileStream, url, name, channelName }, nextclo } async function main() { + program + .option('-s, --song ', 'Look up a song', null) + .option('-a, --artist ', 'Look up an artist', null); + + program.parse(process.argv); + + const options = program.opts(); + const socket = io.connect(`http://localhost:${process.env.NOTIFICATION_SERVER_PORT}`, {reconnect: true}); socket.on('connect', function (s) { console.log('Successfully connected to notification server'); }); - const video = await getVideo(); + const video = await getVideo({ + msName: options.song, + msArtist: options.artist + }); console.log(video); if (video == null) return dismantle(socket); diff --git a/package.json b/package.json index bfdfa28..abdd575 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,7 @@ "author": "", "license": "ISC", "dependencies": { + "commander": "^12.0.0", "dotenv": "^16.4.4", "express": "^4.18.2", "fix-esm": "^1.0.1",