mirror of
https://github.com/onyx-and-iris/meld-cli.git
synced 2025-07-12 10:21:45 +00:00
implement record commands
This commit is contained in:
parent
38e279fe3c
commit
f9ec415ea4
61
index.js
61
index.js
@ -4,6 +4,7 @@ import cli from "./utils/cli.js";
|
|||||||
import { sceneHelp, sceneList, sceneSwitch, sceneCurrent } from "./utils/scene.js";
|
import { sceneHelp, sceneList, sceneSwitch, sceneCurrent } from "./utils/scene.js";
|
||||||
import { audioHelp, audioMute, audioUnmute, audioToggle, audioStatus } from "./utils/audio.js";
|
import { audioHelp, audioMute, audioUnmute, audioToggle, audioStatus } from "./utils/audio.js";
|
||||||
import { streamHelp, streamStart, streamStop, streamStatus } from "./utils/stream.js";
|
import { streamHelp, streamStart, streamStop, streamStatus } from "./utils/stream.js";
|
||||||
|
import { recordHelp, recordStart, recordStop, recordStatus } from "./utils/record.js";
|
||||||
import { QWebChannel } from "qwebchannel";
|
import { QWebChannel } from "qwebchannel";
|
||||||
|
|
||||||
|
|
||||||
@ -241,6 +242,66 @@ socket.onopen = function() {
|
|||||||
socket.close();
|
socket.close();
|
||||||
process.exit(0);
|
process.exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case "record":
|
||||||
|
if (flags.help) {
|
||||||
|
console.log(recordHelp);
|
||||||
|
socket.close();
|
||||||
|
process.exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
const recordCommand = input[1];
|
||||||
|
switch (recordCommand) {
|
||||||
|
case "start":
|
||||||
|
channel = new QWebChannel(socket, function (channel) {
|
||||||
|
recordStart(channel)
|
||||||
|
.then((message) => {
|
||||||
|
console.log(message);
|
||||||
|
socket.close();
|
||||||
|
process.exit(0);
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
console.error(`${err}`);
|
||||||
|
socket.close();
|
||||||
|
process.exit(1);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
case "stop":
|
||||||
|
channel = new QWebChannel(socket, function (channel) {
|
||||||
|
recordStop(channel)
|
||||||
|
.then((message) => {
|
||||||
|
console.log(message);
|
||||||
|
socket.close();
|
||||||
|
process.exit(0);
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
console.error(`${err}`);
|
||||||
|
socket.close();
|
||||||
|
process.exit(1);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
case "status":
|
||||||
|
channel = new QWebChannel(socket, function (channel) {
|
||||||
|
recordStatus(channel)
|
||||||
|
.then((isRecording) => {
|
||||||
|
console.log(`Recording is currently ${isRecording ? "active" : "inactive"}`);
|
||||||
|
socket.close();
|
||||||
|
process.exit(0);
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
console.error(`Error fetching recording status: ${err}`);
|
||||||
|
socket.close();
|
||||||
|
process.exit(1);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
console.log(recordHelp);
|
||||||
|
socket.close();
|
||||||
|
process.exit(0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error("Error handling CLI flags:", error);
|
console.error("Error handling CLI flags:", error);
|
||||||
|
@ -11,6 +11,9 @@ const commands = {
|
|||||||
stream: {
|
stream: {
|
||||||
desc: "Manage streaming",
|
desc: "Manage streaming",
|
||||||
},
|
},
|
||||||
|
record: {
|
||||||
|
desc: "Manage recording",
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
const flags = {
|
const flags = {
|
||||||
|
82
utils/record.js
Normal file
82
utils/record.js
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
import meowHelp from "cli-meow-help";
|
||||||
|
|
||||||
|
const commands = {
|
||||||
|
start: {
|
||||||
|
desc: "Start streaming",
|
||||||
|
},
|
||||||
|
stop: {
|
||||||
|
desc: "Stop streaming",
|
||||||
|
},
|
||||||
|
status: {
|
||||||
|
desc: "Show the current streaming status",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
const flags = {
|
||||||
|
help: {
|
||||||
|
type: "boolean",
|
||||||
|
shortFlag: "h",
|
||||||
|
desc: "Display help information",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
const recordHelp = meowHelp({
|
||||||
|
name: "meld-cli record",
|
||||||
|
flags,
|
||||||
|
commands,
|
||||||
|
description: "Manage recording in Meld",
|
||||||
|
defaults: false,
|
||||||
|
});
|
||||||
|
|
||||||
|
function recordStart(channel) {
|
||||||
|
if (!channel.objects || !channel.objects.meld) {
|
||||||
|
return Promise.reject(new Error("Meld object not found in channel."));
|
||||||
|
}
|
||||||
|
|
||||||
|
const meld = channel.objects.meld;
|
||||||
|
if (meld.isRecording) {
|
||||||
|
return Promise.reject(new Error("Recording is already active."));
|
||||||
|
}
|
||||||
|
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
meld.toggleRecord()
|
||||||
|
.then(() => {
|
||||||
|
resolve("Recording started successfully.");
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
reject(err);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function recordStop(channel) {
|
||||||
|
if (!channel.objects || !channel.objects.meld) {
|
||||||
|
return Promise.reject(new Error("Meld object not found in channel."));
|
||||||
|
}
|
||||||
|
|
||||||
|
const meld = channel.objects.meld;
|
||||||
|
if (!meld.isRecording) {
|
||||||
|
return Promise.reject(new Error("Recording is not currently active."));
|
||||||
|
}
|
||||||
|
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
meld.toggleRecord()
|
||||||
|
.then(() => {
|
||||||
|
resolve("Recording stopped successfully.");
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
reject(err);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function recordStatus(channel) {
|
||||||
|
if (!channel.objects || !channel.objects.meld) {
|
||||||
|
return Promise.reject(new Error("Meld object not found in channel."));
|
||||||
|
}
|
||||||
|
|
||||||
|
const meld = channel.objects.meld;
|
||||||
|
return Promise.resolve(meld.isRecording);
|
||||||
|
}
|
||||||
|
|
||||||
|
export { recordHelp, recordStart, recordStop, recordStatus };
|
Loading…
x
Reference in New Issue
Block a user