diff --git a/src/main/cider-base.js b/src/main/cider-base.js index 032106d8..602aad49 100644 --- a/src/main/cider-base.js +++ b/src/main/cider-base.js @@ -8,9 +8,11 @@ const os = require('os'); const yt = require('youtube-search-without-api-key'); const discord = require('./discordrpc'); const lastfm = require('./lastfm'); +const {writeFile} = require('fs'); const mpris = require('./mpris'); const mm = require('music-metadata'); const fetch = require('electron-fetch').default; +const {Stream} = require('stream'); // Analytics for debugging. const ElectronSentry = require("@sentry/electron"); @@ -18,6 +20,8 @@ ElectronSentry.init({dsn: "https://68c422bfaaf44dea880b86aad5a820d2@o954055.inge const CiderBase = { win: null, + requests : [], + audiostream : new Stream.PassThrough(), async Start() { this.clientPort = await getPort({port: 9000}); this.win = this.CreateBrowserWindow() @@ -241,6 +245,10 @@ const CiderBase = { }) }); + ipcMain.on('writeAudio', function(event,buffer){ + CiderBase.audiostream.write(Buffer.from(buffer)); + }) + return win }, @@ -284,7 +292,7 @@ const CiderBase = { webapp.use(function (req, res, next) { // if not localhost - if (req.headers.host.includes("localhost") && req.headers["user-agent"].includes("Cider")) { + if (req.url.includes("audio.webm") ||(req.headers.host.includes("localhost") && req.headers["user-agent"].includes("Cider"))) { next(); } }); @@ -294,6 +302,25 @@ const CiderBase = { //res.sendFile(path.join(webRemotePath, 'index_old.html')); res.render("main", CiderBase.EnvironmentVariables) }); + webapp.get('/audio.webm', function (req, res) { + try { + req.connection.setTimeout(Number.MAX_SAFE_INTEGER); + // CiderBase.requests.push({req: req, res: res}); + // var pos = CiderBase.requests.length - 1; + // req.on("close", () => { + // console.info("CLOSED", CiderBase.requests.length); + // requests.splice(pos, 1); + // console.info("CLOSED", CiderBase.requests.length); + // }); + CiderBase.audiostream.on('data', (data) => { + try { + res.write(data); + } catch (ex) { + console.log(ex) + } + }) + } catch (ex) {console.log(ex)} + }); webapp.listen(CiderBase.clientPort, function () { console.log(`Cider client port: ${CiderBase.clientPort}`); }); diff --git a/src/renderer/audio/audio.js b/src/renderer/audio/audio.js index 549f1a0f..64118b7c 100644 --- a/src/renderer/audio/audio.js +++ b/src/renderer/audio/audio.js @@ -75,6 +75,21 @@ var CiderAudio = { CiderAudio.audioNodes.spatialNode.output.disconnect(CiderAudio.context.destination); CiderAudio.audioNodes.gainNode.disconnect(CiderAudio.audioNodes.spatialInput.input);} catch(e){} CiderAudio.audioNodes.gainNode.connect(CiderAudio.context.destination); + }, + sendAudio: function (){ + var options = { + mimeType : 'audio/webm; codecs=opus' + }; + var destnode = CiderAudio.context.createMediaStreamDestination(); + CiderAudio.audioNodes.gainNode.connect(destnode) + var mediaRecorder = new MediaRecorder(destnode.stream,options); + mediaRecorder.start(1); + mediaRecorder.ondataavailable = function(e) { + e.data.arrayBuffer().then(buffer => { + ipcRenderer.send('writeAudio',buffer) + } + ); + } } } diff --git a/src/renderer/style.less b/src/renderer/style.less index f2efc5ad..bde486d9 100644 --- a/src/renderer/style.less +++ b/src/renderer/style.less @@ -1556,34 +1556,6 @@ input[type="range"].web-slider.display--small::-webkit-slider-thumb { font-weight: bold; font-size: 26px; } - -.lyric-footer { - bottom: 0; - height: 50px; - width: 100%; - position: absolute; - z-index: 1000; - opacity: 1; - background: rgba(30, 30, 30, 0.8); - justify-content: center; - align-items: center; - display: none; - transition: opacity 0.1s var(--appleEase); -} - -.lyric-body:hover + .lyric-footer, .lyric-footer:hover { - display: flex; -} - -.modular-fs .app-drawer .lyric-footer { - background: rgba(30, 30, 30, 0.3); - display: flex; - opacity: 0.3; -} - -.modular-fs .app-drawer .lyric-footer:hover { - opacity: 1; -} .lyric-line { --bgSpeed: 1s; diff --git a/src/renderer/views/components/mediaitem-square-large.ejs b/src/renderer/views/components/mediaitem-square-large.ejs index 04b713b1..5f07c19a 100644 --- a/src/renderer/views/components/mediaitem-square-large.ejs +++ b/src/renderer/views/components/mediaitem-square-large.ejs @@ -1,5 +1,4 @@