Skip to content

Commit

Permalink
New console command: add/remove [site] [streamer]
Browse files Browse the repository at this point in the history
  • Loading branch information
jrudess committed Dec 24, 2017
1 parent 4b92089 commit 6230b93
Show file tree
Hide file tree
Showing 8 changed files with 260 additions and 258 deletions.
2 changes: 1 addition & 1 deletion .eslintrc.json
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@
"consistent-return": "error",
"consistent-this": "off",
"curly": "error",
"default-case": "error",
"default-case": "off",
"dot-location": "error",
"dot-notation": [
"error",
Expand Down
5 changes: 3 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
node_modules/
capturing/
captured/
capturing/
node_modules/
Session.vim
streamdvr.log
108 changes: 46 additions & 62 deletions cb.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,68 +15,51 @@ class Cb extends site.Site {

processUpdates() {
const stats = fs.statSync("updates.yml");
if (!stats.isFile()) {
this.dbgMsg("updates.yml does not exist");
return {includeStreamers: [], excludeStreamers: [], dirty: false};
}

let includeStreamers = [];
let excludeStreamers = [];

if (stats.isFile()) {
const updates = yaml.safeLoad(fs.readFileSync("updates.yml", "utf8"));

if (!updates.includeCb) {
updates.includeCb = [];
} else if (updates.includeCb.length > 0) {
this.msg(updates.includeCb.length + " streamer(s) to include");
includeStreamers = updates.includeCb;
updates.includeCb = [];
}

if (!updates.excludeCb) {
updates.excludeCb = [];
} else if (updates.excludeCb.length > 0) {
this.msg(updates.excludeCb.length + " streamer(s) to exclude");
excludeStreamers = updates.excludeCb;
updates.excludeCb = [];
}
const updates = yaml.safeLoad(fs.readFileSync("updates.yml", "utf8"));

// if there were some updates, then rewrite updates.yml
if (includeStreamers.length > 0 || excludeStreamers.length > 0) {
fs.writeFileSync("updates.yml", yaml.safeDump(updates), "utf8");
}
if (!updates.includeCb) {
updates.includeCb = [];
} else if (updates.includeCb.length > 0) {
this.msg(updates.includeCb.length + " streamer(s) to include");
includeStreamers = updates.includeCb;
updates.includeCb = [];
}

return {includeStreamers: includeStreamers, excludeStreamers: excludeStreamers, dirty: false};
}

addStreamer(streamer) {
if (super.addStreamer(streamer, this.config.cb)) {
this.config.cb.push(streamer.uid);
return true;
if (!updates.excludeCb) {
updates.excludeCb = [];
} else if (updates.excludeCb.length > 0) {
this.msg(updates.excludeCb.length + " streamer(s) to exclude");
excludeStreamers = updates.excludeCb;
updates.excludeCb = [];
}
return false;
}

addStreamers(bundle) {
for (let i = 0; i < bundle.includeStreamers.length; i++) {
bundle.dirty |= this.addStreamer({nm: bundle.includeStreamers[i], uid: bundle.includeStreamers[i]});
// if there were some updates, then rewrite updates.yml
if (includeStreamers.length > 0 || excludeStreamers.length > 0) {
fs.writeFileSync("updates.yml", yaml.safeDump(updates), "utf8");
}
return bundle;
}

removeStreamer(streamer) {
this.config.cb = _.without(this.config.cb, streamer.uid);
return super.removeStreamer(streamer);
return {includeStreamers: includeStreamers, excludeStreamers: excludeStreamers, dirty: false};
}

removeStreamers(bundle) {
for (let i = 0; i < bundle.excludeStreamers.length; i++) {
const nm = bundle.excludeStreamers[i];
const index = this.config.cb.indexOf(nm);

if (index !== -1) {
bundle.dirty |= this.removeStreamer({nm: nm, uid: nm});
updateList(nm, add) {
if (super.updateList({nm: nm, uid: nm}, this.config.cb, add)) {
if (add) {
this.config.cb.push(nm);
return true;
} else if (this.config.cb.indexOf(nm) !== -1) {
this.config.cb = _.without(this.config.cb, nm);
return true;
}
}
return bundle.dirty;
return false;
}

checkStreamerState(nm) {
Expand Down Expand Up @@ -198,22 +181,23 @@ class Cb extends site.Site {
}

recordStreamers(streamersToCap, tryingToExit) {
if (streamersToCap !== null && streamersToCap.length > 0) {
const caps = [];
const me = this;

this.dbgMsg(streamersToCap.length + " streamer(s) to capture");
for (let i = 0; i < streamersToCap.length; i++) {
const cap = this.setupCapture(streamersToCap[i], tryingToExit).then(function(bundle) {
if (bundle.spawnArgs !== "") {
me.startCapture(bundle.spawnArgs, bundle.filename, bundle.streamer, tryingToExit);
}
});
caps.push(cap);
}
return Promise.all(caps);
if (streamersToCap === null || streamersToCap.length === 0) {
return null;
}

const caps = [];
const me = this;

this.dbgMsg(streamersToCap.length + " streamer(s) to capture");
for (let i = 0; i < streamersToCap.length; i++) {
const cap = this.setupCapture(streamersToCap[i], tryingToExit).then(function(bundle) {
if (bundle.spawnArgs !== "") {
me.startCapture(bundle.spawnArgs, bundle.filename, bundle.streamer, tryingToExit);
}
});
caps.push(cap);
}
return null;
return Promise.all(caps);
}
}

Expand Down
1 change: 1 addition & 0 deletions config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ debugcolor: yellow
errorcolor: red
includeSiteInFile: false
includeSiteInDir: false
batchSizeCB: 10
enableMFC: true
enableCB: true
enableTwitch: true
Expand Down
106 changes: 67 additions & 39 deletions main.js
Original file line number Diff line number Diff line change
Expand Up @@ -79,52 +79,78 @@ function log(text) {
console.log(text);
}

function showlist() {
for (let i = 0; i < SITES.length; i++) {
SITES[i].show();
function display(cmd, window) {
switch (window) {
case "list":
for (let i = 0; i < SITES.length; i++) {
switch (cmd) {
case "show": SITES[i].show(); break;
case "hide": SITES[i].hide(); break;
}
}
switch (cmd) {
case "show": logbody.top = "66%"; logbody.height = "34%"; break;
case "hide": logbody.top = 0; logbody.height = "100%-1"; break;
}
break;
case "log":
switch (cmd) {
case "show": logbody.show(); break;
case "hide": logbody.hide(); break;
}
for (let i = 0; i < SITES.length; i++) {
switch (cmd) {
case "show": SITES[i].restore(); break;
case "hide": SITES[i].full(); break;
}
}
break;
}
logbody.top = "66%";
logbody.height = "34%";
}

function hidelist() {
function updateList(cmd, site, nm) {
for (let i = 0; i < SITES.length; i++) {
SITES[i].hide();
const siteName = SITES[i].siteName.trim().toLowerCase();
if (site === siteName) {
SITES[i].updateList(nm, cmd === "add" ? 1 : 0);
SITES[i].writeConfig();
}
}
logbody.top = 0;
logbody.height = "100%-1";
}

function showlog() {
logbody.show();
for (let i = 0; i < SITES.length; i++) {
SITES[i].restore();
}
}
inputBar.on("submit", (text) => {
inputBar.clearValue();

function hidelog() {
logbody.hide();
for (let i = 0; i < SITES.length; i++) {
SITES[i].full();
const tokens = text.split(" ");
if (tokens.length === 0) {
screen.render();
return;
}
}

inputBar.on("submit", (text) => {
if (text === "hide list") {
hidelist();
} else if (text === "show list") {
showlist();
} else if (text === "hide log") {
hidelog();
} else if (text === "show log") {
showlog();
} else if (text === "help") {
switch (tokens[0]) {
case "add":
case "remove":
if (tokens.length >= 3) {
updateList(tokens[0], tokens[1], tokens[2]);
}
break;

case "show":
case "hide":
if (tokens.length >= 2) {
display(tokens[0], tokens[1]);
}
break;

case "help":
logbody.pushLine("Commands:");
logbody.pushLine("show [log|list]");
logbody.pushLine("hide [log|list]");
logbody.pushLine("add [site] [streamer]");
logbody.pushLine("remove [site] [streamer]");
logbody.pushLine("show [log|list]");
logbody.pushLine("hide [log|list]");
logbody.setScrollPerc(100);
break;
}
inputBar.clearValue();
screen.render();
});

Expand All @@ -139,11 +165,13 @@ function mainSiteLoop(site) {
}).then(function() {
return site.processUpdates();
}).then(function(bundle) {
return site.addStreamers(bundle);
return site.updateStreamers(bundle, 1);
}).then(function(bundle) {
return site.removeStreamers(bundle);
}).then(function(dirty) {
return site.writeConfig(dirty);
return site.updateStreamers(bundle, 0);
}).then(function(bundle) {
if (bundle.dirty) {
site.writeConfig();
}
}).then(function() {
return site.getStreamersToCap();
}).then(function(streamersToCap) {
Expand Down Expand Up @@ -272,11 +300,11 @@ if (config.enableTwitch) {
}

if (!config.listshown) {
hidelist();
display("hide", "list");
}

if (!config.logshown) {
hidelog();
display("hide", "log");
}

screen.append(logbody);
Expand Down
Loading

0 comments on commit 6230b93

Please sign in to comment.