init
This commit is contained in:
commit
846f8c6850
6 changed files with 145 additions and 0 deletions
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
node_modules
|
||||||
|
null
|
||||||
|
temp.txt
|
1
README.md
Normal file
1
README.md
Normal file
|
@ -0,0 +1 @@
|
||||||
|
# Discord-Rich-Presence-For-Cinema-4D
|
32
package.json
Normal file
32
package.json
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
{
|
||||||
|
"name": "discord-rich-presence-for-cinema-4d",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "A simple node project to show your friends on discord what you're working on in Cinema 4D! Bit hacky but it works x)",
|
||||||
|
"main": "Rich Presence for C4D.js",
|
||||||
|
"scripts": {
|
||||||
|
"test": "echo \"Error: no test specified\" && exit 1"
|
||||||
|
},
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "git+https://github.com/djkato/Discord-Rich-Presence-For-Cinema-4D.git"
|
||||||
|
},
|
||||||
|
"keywords": [
|
||||||
|
"Cinema",
|
||||||
|
"4D",
|
||||||
|
"Maxon",
|
||||||
|
"Discord",
|
||||||
|
"Discord",
|
||||||
|
"RPC",
|
||||||
|
"Rich",
|
||||||
|
"presence"
|
||||||
|
],
|
||||||
|
"author": "",
|
||||||
|
"license": "ISC",
|
||||||
|
"bugs": {
|
||||||
|
"url": "https://github.com/djkato/Discord-Rich-Presence-For-Cinema-4D/issues"
|
||||||
|
},
|
||||||
|
"homepage": "https://github.com/djkato/Discord-Rich-Presence-For-Cinema-4D#readme",
|
||||||
|
"dependencies": {
|
||||||
|
"discord-rich-presence": "0.0.8"
|
||||||
|
}
|
||||||
|
}
|
25
src/C4DRichPresence.bat
Normal file
25
src/C4DRichPresence.bat
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
@echo off
|
||||||
|
|
||||||
|
set Active=0
|
||||||
|
|
||||||
|
:Search
|
||||||
|
timeout /t 60 /nobreak > null
|
||||||
|
|
||||||
|
wmic process list brief | find /i "Cinema 4D.exe"
|
||||||
|
set result=%ERRORLEVEL%
|
||||||
|
if "%result%"=="0" goto ProcessFound
|
||||||
|
|
||||||
|
goto ProcessNotFound
|
||||||
|
|
||||||
|
:ProcessFound
|
||||||
|
IF %Active%==1 goto Search
|
||||||
|
|
||||||
|
start node "Rich Presence For C4D.js"
|
||||||
|
set Active=1
|
||||||
|
|
||||||
|
goto Search
|
||||||
|
|
||||||
|
:ProcessNotFound
|
||||||
|
|
||||||
|
set Active=0
|
||||||
|
goto Search
|
4
src/DRCSettings.json
Normal file
4
src/DRCSettings.json
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
"portfolio_website": "djkato.net",
|
||||||
|
"scan_refresh_rate": 1000
|
||||||
|
}
|
80
src/Rich Presence for C4D.js
Normal file
80
src/Rich Presence for C4D.js
Normal file
|
@ -0,0 +1,80 @@
|
||||||
|
const fs = require('fs')
|
||||||
|
const client = require('discord-rich-presence')('936296341250904065')
|
||||||
|
const { spawnSync, spawn, execSync, exec } = require('child_process')
|
||||||
|
var StringDecoder = require('string_decoder').StringDecoder
|
||||||
|
const { stdout, mainModule } = require('process')
|
||||||
|
|
||||||
|
let currentProject
|
||||||
|
let pastProject = ""
|
||||||
|
let cmd = 'tasklist /fi "imagename eq Cinema 4D.exe" /fo list /v'
|
||||||
|
//Loads DRC settings
|
||||||
|
let DRCSettings = JSON.parse(fs.readFileSync("DRCSettings.json"))
|
||||||
|
function sleep(ms) {
|
||||||
|
return new Promise(resolve => setTimeout(resolve, ms))
|
||||||
|
}
|
||||||
|
|
||||||
|
function isCinemaOpen() {
|
||||||
|
return new Promise((resolve) => {
|
||||||
|
exec(cmd, (err, stdout, stderr) => {
|
||||||
|
if (err || stderr) {
|
||||||
|
resolve("true")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (stdout.includes("No tasks")) {
|
||||||
|
resolve("false")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (stdout.includes("Cinema 4D")) {
|
||||||
|
//if window title is the actual project title(hover tooltips change window title to tooltip),
|
||||||
|
//resolves to Project file name from Process dump from.bat file
|
||||||
|
resolve(stdout)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
resolve("true")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
function setDRCProject() {
|
||||||
|
//update current presence settings
|
||||||
|
if (currentProject !== pastProject) {
|
||||||
|
client.updatePresence({
|
||||||
|
state: `Porfolio: ${DRCSettings.portfolio_website}`,
|
||||||
|
details: `Working on ${currentProject}`,
|
||||||
|
startTimestamp: Date.now(),
|
||||||
|
largeImageKey: 'c4d',
|
||||||
|
instance: true,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
pastProject = currentProject
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
async function main() {
|
||||||
|
let str
|
||||||
|
while (true) {
|
||||||
|
str = await isCinemaOpen()
|
||||||
|
console.log(str)
|
||||||
|
if (str == "false") {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
else if (str == "true") {
|
||||||
|
setDRCProject()
|
||||||
|
await sleep(DRCSettings.scan_refresh_rate)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
//gets project file name
|
||||||
|
str = str.split("\n")
|
||||||
|
str = str[9].split("[")
|
||||||
|
str = str[1].split("]")
|
||||||
|
currentProject = str[0].toString()
|
||||||
|
setDRCProject()
|
||||||
|
await sleep(DRCSettings.scan_refresh_rate)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
main()
|
Loading…
Reference in a new issue