799967501@qq.com

修改post的请求规则

更改shell的方法为exec
适配linux执行
@@ -33,7 +33,7 @@ const methods = { @@ -33,7 +33,7 @@ const methods = {
33 date = '0' + date 33 date = '0' + date
34 } 34 }
35 return { 35 return {
36 - ymd:year + "-" + month + "-" + date 36 + ymd:year+ month + date
37 } 37 }
38 }, 38 },
39 async getRequestClassIds(url, siteId, key, startTime, endTime,page) { 39 async getRequestClassIds(url, siteId, key, startTime, endTime,page) {
1 var express = require('express'); 1 var express = require('express');
2 var router = express.Router(); 2 var router = express.Router();
3 -const { spawn } = require('child_process'); 3 +const {spawn, exec} = require('child_process');
4 const fs = require("fs"); 4 const fs = require("fs");
  5 +var path = require('path')
5 6
6 const method = require("../config/method") 7 const method = require("../config/method")
7 const config = require("../config/config") 8 const config = require("../config/config")
8 9
9 // const { GETCLASSURL, GETCLASSURLPARAMETER, PROJECTCATALOG, PROJECTWINCATALOG, BACKMEDIACONFIG } = config 10 // const { GETCLASSURL, GETCLASSURLPARAMETER, PROJECTCATALOG, PROJECTWINCATALOG, BACKMEDIACONFIG } = config
10 -const { YesterdayTime, getRequestClassIds,dayTimeYMD } = method 11 +const {YesterdayTime, getRequestClassIds, dayTimeYMD} = method
11 12
12 -const { startTime, endTime, ymd } = YesterdayTime()  
13 let siteIds = [] 13 let siteIds = []
14 14
15 let classid = [] 15 let classid = []
16 let parentData = {} 16 let parentData = {}
17 var classobj = {}; 17 var classobj = {};
18 let className = "" 18 let className = ""
  19 +
  20 +// spawn("export DISPLAY=:7", { shell: true})
  21 +
19 /** 22 /**
20 - * 23 + *
21 * @param {*} id 课堂id 24 * @param {*} id 课堂id
22 */ 25 */
23 class MediaCreat { 26 class MediaCreat {
24 - constructor() { }  
25 - // 取出所有数据  
26 - async allData() {  
27 - let fileConfig = await new MediaCreat().getConfigFileJson()  
28 - if(!fileConfig) return false  
29 - className = siteIds.shift()  
30 - const { GETCLASSURL,GETCLASSURLPARAMETER } = JSON.parse(fileConfig)  
31 - let page = 1  
32 - if (className) {  
33 - let result = await getRequestClassIds(GETCLASSURL, className, GETCLASSURLPARAMETER.key, startTime, endTime, page)  
34 - parentData[result.data.data.siteId] = new Set()  
35 - for (let j = 0; j < result.data.data.list.length; j++) {  
36 - classid.push(result.data.data.list[j])  
37 - parentData[result.data.data.siteId].add(result.data.data.list[j]['classId'])  
38 - }  
39 - const { siteId, list, totalPage } = result.data.data  
40 - for (let i = page += 1; i <= totalPage; i++) {  
41 - let result = await getRequestClassIds(GETCLASSURL, className, GETCLASSURLPARAMETER.key, startTime, endTime, i)  
42 - for (let j = 0; j < result.data.data.list.length; j++) {  
43 - classid.push(result.data.data.list[j])  
44 - parentData[result.data.data.siteId].add(result.data.data.list[j]['classId'])  
45 - }  
46 - }  
47 - parentData[result.data.data.siteId] = Array.from(parentData[result.data.data.siteId])  
48 - if (siteIds.length) {  
49 - return await new MediaCreat().allData()  
50 - }  
51 - this.wrieLog("去重前的classId:------>" + JSON.stringify(classid))  
52 - this.wrieLog("httpData:------>" + JSON.stringify(result.data))  
53 - return true  
54 - } else {  
55 - return false 27 + constructor() {
56 } 28 }
57 - }  
58 - wrieLog(text){  
59 - // 写入log  
60 - let logFile = `./log/${dayTimeYMD().ymd}.txt`  
61 - fs.appendFileSync(logFile,new Date().toLocaleString() + " " +text+'\r\n');  
62 - }  
63 - async mediaCreat(id, siteId) {  
64 - let fileConfig = await new MediaCreat().getConfigFileJson()  
65 - if(!fileConfig) return false  
66 - const { BACKMEDIACONFIG,PROJECTWINCATALOG,PROJECTCATALOG } = JSON.parse(fileConfig)  
67 -  
68 - let mediaDir = PROJECTCATALOG + "/media/"  
69 - let classDir = PROJECTCATALOG + "/media/" + siteId  
70 - let ymdDir = PROJECTCATALOG + "/media/" + siteId + "/" + ymd  
71 - if (!fs.existsSync(mediaDir)) {  
72 - fs.mkdirSync(mediaDir);  
73 - }  
74 - if (!fs.existsSync(classDir)) {  
75 - fs.mkdirSync(classDir);  
76 - }  
77 - if (!fs.existsSync(ymdDir)) {  
78 - fs.mkdirSync(ymdDir);  
79 - }  
80 - let url = `web_capture_c -o=../media/${siteId}/${ymd}/${id}.mp4 -u="${BACKMEDIACONFIG.url}?classId=${id}&recordMp4=${BACKMEDIACONFIG.recordMp4}&userId=${BACKMEDIACONFIG.userId}&userName=${BACKMEDIACONFIG.userName}&userRole=${BACKMEDIACONFIG.userRole}&portalIP=${BACKMEDIACONFIG.portalIP}&portalPort=${BACKMEDIACONFIG.portalPort}&channels=${BACKMEDIACONFIG.channels}&playRecord=${BACKMEDIACONFIG.playRecord}" -d=${BACKMEDIACONFIG.d} -s=${BACKMEDIACONFIG.s} -fa=${BACKMEDIACONFIG.fa} -k=${BACKMEDIACONFIG.k} -w=${BACKMEDIACONFIG.w} -h=${BACKMEDIACONFIG.h}`  
81 - var workerProcess = spawn(url, { cwd: PROJECTWINCATALOG, shell: true })  
82 - // workerProcess.stdout.on('data', async function (data) {  
83 -  
84 - // });  
85 -  
86 - workerProcess.on('close', async (code) => {  
87 - let files = fs.readdirSync(ymdDir);  
88 - if (files.indexOf(id + ".mp4") == -1) {  
89 - //当前课堂没有写入到文件夹,进入重录  
90 - new MediaCreat().mediaCreat(id, siteId)  
91 - return false  
92 - } else {  
93 - if (parentData[siteId].indexOf(id.toString()) != -1) {  
94 - parentData[siteId].splice(parentData[siteId].indexOf(id.toString()), 1)  
95 - }  
96 - if (parentData[siteId].length == 0) {  
97 - // //全部录制完毕  
98 - this.wrieLog("录制结束:------>")  
99 - fs.writeFile(ymdDir + "/download.json", `{ "code": "0", "success": "ok"}`, function (err) {  
100 - if (err) {  
101 - console.log(err); 29 +
  30 + // 取出所有数据
  31 + async allData() {
  32 + const {startTime, endTime} = YesterdayTime()
  33 + let fileConfig = await new MediaCreat().getConfigFileJson()
  34 + if (!fileConfig) return false
  35 + className = siteIds.shift()
  36 + const {GETCLASSURL, GETCLASSURLPARAMETER} = JSON.parse(fileConfig)
  37 + let page = 1
  38 + if (className) {
  39 + let result = await getRequestClassIds(GETCLASSURL, className, GETCLASSURLPARAMETER.key, startTime, endTime, page)
  40 + parentData[result.data.data.siteId] = new Set()
  41 + for (let j = 0; j < result.data.data.list.length; j++) {
  42 + classid.push(result.data.data.list[j])
  43 + parentData[result.data.data.siteId].add(result.data.data.list[j]['classId'])
102 } 44 }
103 - });  
104 - }  
105 - if (classid.length) {  
106 - let shiftData = classid.shift()  
107 - new MediaCreat().mediaCreat(shiftData['classId'], shiftData['siteId']) 45 + const {siteId, list, totalPage} = result.data.data
  46 + for (let i = page += 1; i <= totalPage; i++) {
  47 + let result = await getRequestClassIds(GETCLASSURL, className, GETCLASSURLPARAMETER.key, startTime, endTime, i)
  48 + for (let j = 0; j < result.data.data.list.length; j++) {
  49 + classid.push(result.data.data.list[j])
  50 + parentData[result.data.data.siteId].add(result.data.data.list[j]['classId'])
  51 + }
  52 + }
  53 + parentData[result.data.data.siteId] = Array.from(parentData[result.data.data.siteId])
  54 + if (siteIds.length) {
  55 + return await new MediaCreat().allData()
  56 + }
  57 + this.wrieLog("去重前的classId:------>" + JSON.stringify(classid))
  58 + this.wrieLog("httpData:------>" + JSON.stringify(result.data))
  59 + return true
  60 + } else {
  61 + return false
108 } 62 }
109 - }  
110 - });  
111 - }  
112 - async recordingCreat(id, siteId) {  
113 - let fileConfig = await new MediaCreat().getConfigFileJson()  
114 - if(!fileConfig) return false  
115 - const { BACKMEDIACONFIG,PROJECTWINCATALOG,PROJECTCATALOG } = JSON.parse(fileConfig)  
116 - let mediaDir = PROJECTCATALOG + "/media/"  
117 - let recordingDir = mediaDir + "recording/"  
118 - let classDir = recordingDir + siteId +"/"  
119 - let dateDir = classDir + dayTimeYMD().ymd  
120 - if (!fs.existsSync(mediaDir)) {  
121 - fs.mkdirSync(mediaDir);  
122 - }  
123 - if (!fs.existsSync(recordingDir)) {  
124 - fs.mkdirSync(recordingDir);  
125 - }  
126 - if (!fs.existsSync(classDir)) {  
127 - fs.mkdirSync(classDir);  
128 } 63 }
129 - if (!fs.existsSync(dateDir)) {  
130 - fs.mkdirSync(dateDir); 64 +
  65 + wrieLog(text) {
  66 + // 写入log
  67 + let logFile = `./log/${dayTimeYMD().ymd}.txt`
  68 + fs.appendFileSync(logFile, new Date().toLocaleString() + " " + text + '\r\n');
131 } 69 }
132 - let url = `web_capture_c -o=../media/recording/${siteId}/${dayTimeYMD().ymd}/${id}.mp4 -u="${BACKMEDIACONFIG.url}?classId=${id}&recordMp4=${BACKMEDIACONFIG.recordMp4}&userId=${BACKMEDIACONFIG.userId}&userName=${BACKMEDIACONFIG.userName}&userRole=${BACKMEDIACONFIG.userRole}&portalIP=${BACKMEDIACONFIG.portalIP}&portalPort=${BACKMEDIACONFIG.portalPort}&channels=${BACKMEDIACONFIG.channels}&playRecord=${BACKMEDIACONFIG.playRecord}" -d=${BACKMEDIACONFIG.d} -s=${BACKMEDIACONFIG.s} -fa=${BACKMEDIACONFIG.fa} -k=${BACKMEDIACONFIG.k} -w=${BACKMEDIACONFIG.w} -h=${BACKMEDIACONFIG.h}`  
133 -  
134 - var workerProcess = spawn(url, { cwd: PROJECTWINCATALOG, shell: true })  
135 - // workerProcess.stdout.on('data', async function (data) {  
136 -  
137 - // });  
138 -  
139 - workerProcess.on('close', async (code) =>{  
140 - let files = fs.readdirSync(dateDir);  
141 - if (files.indexOf(id + ".mp4") == -1) {  
142 - //当前课堂没有写入到文件夹,进入重录  
143 - new MediaCreat().recordingCreat(id, siteId)  
144 - return false  
145 - } else {  
146 - if (parentData[siteId].indexOf(id.toString()) != -1) {  
147 - parentData[siteId].splice(parentData[siteId].indexOf(id.toString()), 1) 70 +
  71 + // async mediaCreat(id, siteId) {
  72 + // const {ymd} = YesterdayTime()
  73 + // let fileConfig = await new MediaCreat().getConfigFileJson()
  74 + // if (!fileConfig) return false
  75 + // const {BACKMEDIACONFIG, PROJECTWINCATALOG, PROJECTCATALOG} = JSON.parse(fileConfig)
  76 + //
  77 + // let mediaDir = PROJECTCATALOG + "/media/"
  78 + // let classDir = PROJECTCATALOG + "/media/" + siteId
  79 + // let ymdDir = PROJECTCATALOG + "/media/" + siteId + "/" + ymd
  80 + // if (!fs.existsSync(mediaDir)) {
  81 + // fs.mkdirSync(mediaDir);
  82 + // }
  83 + // if (!fs.existsSync(classDir)) {
  84 + // fs.mkdirSync(classDir);
  85 + // }
  86 + // if (!fs.existsSync(ymdDir)) {
  87 + // fs.mkdirSync(ymdDir);
  88 + // }
  89 + // let url = `"${PROJECTWINCATALOG} /web_capture_c" -o=../media/${siteId}/${ymd}/${id}.mp4 -u="${BACKMEDIACONFIG.url}?classId=${id}&recordMp4=${BACKMEDIACONFIG.recordMp4}&userId=${BACKMEDIACONFIG.userId}&userName=${BACKMEDIACONFIG.userName}&userRole=${BACKMEDIACONFIG.userRole}&portalIP=${BACKMEDIACONFIG.portalIP}&portalPort=${BACKMEDIACONFIG.portalPort}&channels=${BACKMEDIACONFIG.channels}&playRecord=${BACKMEDIACONFIG.playRecord}" -d=${BACKMEDIACONFIG.d} -s=${BACKMEDIACONFIG.s} -fa=${BACKMEDIACONFIG.fa} -k=${BACKMEDIACONFIG.k} -w=${BACKMEDIACONFIG.w} -h=${BACKMEDIACONFIG.h}`
  90 + // var workerProcess = exec(url) // , {cwd: PROJECTWINCATALOG, shell: true}
  91 + // // workerProcess.stdout.on('data', async function (data) {
  92 + //
  93 + // // });
  94 + //
  95 + // workerProcess.on('close', async (code) => {
  96 + // let files = fs.readdirSync(ymdDir);
  97 + // if (files.indexOf(id + ".mp4") == -1) {
  98 + // //当前课堂没有写入到文件夹,进入重录
  99 + // new MediaCreat().mediaCreat(id, siteId)
  100 + // return false
  101 + // } else {
  102 + // if (parentData[siteId].indexOf(id.toString()) != -1) {
  103 + // parentData[siteId].splice(parentData[siteId].indexOf(id.toString()), 1)
  104 + // }
  105 + // if (parentData[siteId].length == 0) {
  106 + // // //全部录制完毕
  107 + // this.wrieLog("录制结束:------>")
  108 + // fs.writeFile(ymdDir + "/download.json", `{ "code": "0", "success": "ok"}`, function (err) {
  109 + // if (err) {
  110 + // console.log(err);
  111 + // }
  112 + // });
  113 + // }
  114 + // if (classid.length) {
  115 + // let shiftData = classid.shift()
  116 + // new MediaCreat().mediaCreat(shiftData['classId'], shiftData['siteId'])
  117 + // }
  118 + // }
  119 + // });
  120 + // }
  121 +
  122 + recordingCreat(id, siteId) {
  123 + this.wrieLog(" 课堂录制开始:------>" + id)
  124 + let fileConfig = this.getConfigFileJson()
  125 + if (!fileConfig) return false
  126 + const {BACKMEDIACONFIG, PROJECTWINCATALOG, PROJECTCATALOG} = JSON.parse(fileConfig)
  127 + let mediaDir = PROJECTCATALOG + "/media/"
  128 + let classDir = PROJECTCATALOG + "/media/" + siteId
  129 + let ymdDir = PROJECTCATALOG + "/media/" + siteId + "/" + dayTimeYMD().ymd
  130 + if (!fs.existsSync(mediaDir)) {
  131 + fs.mkdirSync(mediaDir);
148 } 132 }
149 - if (parentData[siteId].length == 0) {  
150 - // //全部录制完毕  
151 - this.wrieLog("录制结束:------>")  
152 - fs.writeFile(dateDir + "/download.json", `{ "code": "0", "success": "ok"}`, function (err) {  
153 - if (err) {  
154 - console.log(err);  
155 - }  
156 - }); 133 + if (!fs.existsSync(classDir)) {
  134 + fs.mkdirSync(classDir);
157 } 135 }
158 - if (classid.length) {  
159 - let shiftData = classid.shift()  
160 - new MediaCreat().recordingCreat(shiftData['classId'], shiftData['siteId']) 136 + if (!fs.existsSync(ymdDir)) {
  137 + fs.mkdirSync(ymdDir);
161 } 138 }
162 - }  
163 - });  
164 - }  
165 -  
166 - async getConfigFileJson(){  
167 - const buffer= fs.readFileSync(process.cwd()+"/config/config.json")  
168 - return String(buffer)  
169 - } 139 + // 目前url是linux的写法 win系统不支持
  140 + // export DISPLAY=:7
  141 + // let url = `${path.resolve(__dirname, PROJECTWINCATALOG+"/web_capture_c")} -o=${ymdDir}/${id}.mp4 -u="${BACKMEDIACONFIG.url}?classId=${id}&recordMp4=${BACKMEDIACONFIG.recordMp4}&userId=${BACKMEDIACONFIG.userId}&userName=${BACKMEDIACONFIG.userName}&userRole=${BACKMEDIACONFIG.userRole}&portalIP=${BACKMEDIACONFIG.portalIP}&portalPort=${BACKMEDIACONFIG.portalPort}&channels=${BACKMEDIACONFIG.channels}&playRecord=${BACKMEDIACONFIG.playRecord}" -d=${BACKMEDIACONFIG.d} -s=${BACKMEDIACONFIG.s} -fa=${BACKMEDIACONFIG.fa} -k=${BACKMEDIACONFIG.k} -w=${BACKMEDIACONFIG.w} -h=${BACKMEDIACONFIG.h}`
  142 + // console.log("url", url)
  143 + let url = `${PROJECTWINCATALOG}/web_capture_c -o=${ymdDir}/${id}.mp4 -u="${BACKMEDIACONFIG.url}?classId=${id}&recordMp4=${BACKMEDIACONFIG.recordMp4}&userId=${BACKMEDIACONFIG.userId}&userName=${BACKMEDIACONFIG.userName}&userRole=${BACKMEDIACONFIG.userRole}&portalIP=${BACKMEDIACONFIG.portalIP}&portalPort=${BACKMEDIACONFIG.portalPort}&channels=${BACKMEDIACONFIG.channels}&playRecord=${BACKMEDIACONFIG.playRecord}" -d=${BACKMEDIACONFIG.d} -s=${BACKMEDIACONFIG.s} -fa=${BACKMEDIACONFIG.fa} -k=${BACKMEDIACONFIG.k} -w=${BACKMEDIACONFIG.w} -h=${BACKMEDIACONFIG.h} -k=0`
  144 + // console.log("url", url)
  145 + // console.log("PROJECTWINCATALOG", PROJECTWINCATALOG)
  146 + exec(url, {maxBuffer:1073741824},(err, stdout, stderr) => {
  147 + // setTimeout(()=>{
  148 + if (err != null) {
  149 + this.wrieLog(" 错误" + id +":" + err)
  150 + this.wrieLog(" 错误 stdout" + id +":" + stdout)
  151 + this.wrieLog(" 错误 stderr" + id +":" + stderr)
  152 + // if (files.indexOf(id + ".mp4") == -1) {
  153 + // // //当前课堂没有写入到文件夹,进入重录
  154 + // this.wrieLog(" 课堂录制未发现该" + id + "课堂号")
  155 + // this.recordingCreat(id, siteId)
  156 + // // return false
  157 + // }
  158 + // if (classid.length) {
  159 + // setTimeout(()=>{
  160 + // let shiftData = classid.shift()
  161 + // this.wrieLog(" 录制下一节课 课堂号:" + shiftData['classId'])
  162 + // this.recordingCreat(shiftData['classId'], shiftData['siteId'])
  163 + // },20000)
  164 + // // clearInterval(interValGetFile)
  165 + // }
  166 + return
  167 + }
  168 + let files = fs.readdirSync(ymdDir);
  169 + // let interValGetFile = setInterval(()=>{
  170 + if (files.indexOf(id + ".mp4") == -1) {
  171 + this.wrieLog(" 课堂录制未发现该" + id + "课堂号")
  172 + }else{
  173 + if (classid.length) {
  174 + setTimeout(()=>{
  175 + let shiftData = classid.shift()
  176 + this.wrieLog(" 录制下一节课 课堂号:" + shiftData['classId'])
  177 + this.recordingCreat(shiftData['classId'], shiftData['siteId'])
  178 + },60*1000*5)
  179 + // clearInterval(interValGetFile)
  180 + }else{
  181 + this.wrieLog("录制结束:------>")
  182 + fs.writeFile(ymdDir + "/download.json", `{ "code": "0", "success": "ok"}`, function (err) {
  183 + if (err) {
  184 + console.log(err);
  185 + }
  186 + });
  187 + // clearInterval(interValGetFile)
  188 + }
  189 + }
  190 + // },3000)
  191 + // if (files.indexOf(id + ".mp4") == -1) {
  192 + // // //当前课堂没有写入到文件夹,进入重录
  193 + // this.wrieLog(" 课堂录制未发现该" + id + "课堂号")
  194 + // this.recordingCreat(id, siteId)
  195 + // // return false
  196 + // } else {
  197 + // if (classid.length) {
  198 + // let shiftData = classid.shift()
  199 + // this.wrieLog(" 录制下一节课 课堂号:" + shiftData['classId'])
  200 + // this.recordingCreat(shiftData['classId'], shiftData['siteId'])
  201 + // } else {
  202 + // this.wrieLog("录制结束:------>")
  203 + // fs.writeFile(ymdDir + "/download.json", `{ "code": "0", "success": "ok"}`, function (err) {
  204 + // if (err) {
  205 + // console.log(err);
  206 + // }
  207 + // });
  208 + // }
  209 + // }
  210 + // },20000)
  211 + })
  212 + // console.log("/web_capture_c",path.resolve(__dirname, PROJECTWINCATALOG+"./web_capture_c"))
  213 + // spawnSync(path.resolve(__dirname, PROJECTWINCATALOG+"./web_capture_c"),[
  214 + // "-o",`${ymdDir}/${id}.mp4`,
  215 + // "-u",`${BACKMEDIACONFIG.url}?classId=${id}&recordMp4=${BACKMEDIACONFIG.recordMp4}&userId=${BACKMEDIACONFIG.userId}&userName=${BACKMEDIACONFIG.userName}&userRole=${BACKMEDIACONFIG.userRole}&portalIP=${BACKMEDIACONFIG.portalIP}&portalPort=${BACKMEDIACONFIG.portalPort}&channels=${BACKMEDIACONFIG.channels}&playRecord=${BACKMEDIACONFIG.playRecord}`,
  216 + // "-d",`${BACKMEDIACONFIG.d}`,
  217 + // "-s",`${BACKMEDIACONFIG.s}`,
  218 + // "-fa",`${BACKMEDIACONFIG.fa}`,
  219 + // "-k",`${BACKMEDIACONFIG.k}`,
  220 + // "-w",`${BACKMEDIACONFIG.w}`,
  221 + // "-h",`${BACKMEDIACONFIG.h}`
  222 + // ])
  223 + // workerProcess = spawnSync(url,{shell: true})// {cwd: PROJECTWINCATALOG, shell: true}
  224 + // console.log("workerProcess",workerProcess)
  225 + // workerProcess.stdout.on('data', function (data) {
  226 + // console.log("stdout",data)
  227 + // });
  228 + // workerProcess.stderr.on('data', (data) => {
  229 + // console.error(`stderr: ${data}`);
  230 + // });
  231 + //
  232 + // workerProcess.on('close', (code) => {
  233 + // console.log("code", code)
  234 + // if (code == 0) {
  235 + // this.wrieLog(" 课堂录制结束:------>" + id)
  236 + // let files = fs.readdirSync(ymdDir);
  237 + // if (files.indexOf(id + ".mp4") == -1) {
  238 + // // //当前课堂没有写入到文件夹,进入重录
  239 + // this.wrieLog(" 课堂录制未发现该" + id + "课堂号")
  240 + // new MediaCreat().recordingCreat(id, siteId)
  241 + // // return false
  242 + // } else {
  243 + // if (classid.length) {
  244 + // let shiftData = classid.shift()
  245 + // this.wrieLog(" 录制下一节课 课堂号:" + shiftData['classId'])
  246 + // new MediaCreat().recordingCreat(shiftData['classId'], shiftData['siteId'])
  247 + // } else {
  248 + // this.wrieLog("录制结束:------>")
  249 + // fs.writeFile(ymdDir + "/download.json", `{ "code": "0", "success": "ok"}`, function (err) {
  250 + // if (err) {
  251 + // console.log(err);
  252 + // }
  253 + // });
  254 + // }
  255 + // }
  256 + // }
  257 + // });
  258 + }
  259 +
  260 + getConfigFileJson() {
  261 + const buffer = fs.readFileSync(process.cwd() + "/config/config.json")
  262 + return String(buffer)
  263 + }
170 } 264 }
171 265
172 266
173 -router.get('/', async function (req, res, next) {  
174 - new MediaCreat().wrieLog("录制开始:------>")  
175 - let fileConfig = await new MediaCreat().getConfigFileJson()  
176 - if(!fileConfig) return false  
177 -  
178 - const {GETCLASSURLPARAMETER} = JSON.parse(fileConfig)  
179 - siteIds = GETCLASSURLPARAMETER.siteId  
180 -  
181 - let result = await new MediaCreat().allData()  
182 - if (result) {  
183 - // 去重  
184 - classobj = {}  
185 - classid = classid.reduce(function (item, next) {  
186 - classobj[next.classId] ? '' : classobj[next.classId] = true && item.push(next);  
187 - return item;  
188 - }, []);  
189 - // 写入log  
190 - new MediaCreat().wrieLog("去重后的classid:------>" + JSON.stringify(classid))  
191 - if (classid.length) {  
192 - for (let i = 0; i < GETCLASSURLPARAMETER.maxMedia; i++) {  
193 - let shiftData = classid.shift()  
194 - if (shiftData) {  
195 - new MediaCreat().mediaCreat(shiftData['classId'], shiftData['siteId'])  
196 - } else {  
197 - return false  
198 - }  
199 - }  
200 - res.send({ code: "0" });  
201 - }else{  
202 - res.send({ code: "1" ,message:"无录制数据"});  
203 - }  
204 - }  
205 -}); 267 +// router.get('/', async function (req, res, next) {
  268 +// new MediaCreat().wrieLog("录制开始:------>")
  269 +// let fileConfig = await new MediaCreat().getConfigFileJson()
  270 +// if (!fileConfig) return false
  271 +//
  272 +// const {GETCLASSURLPARAMETER} = JSON.parse(fileConfig)
  273 +// siteIds = GETCLASSURLPARAMETER.siteId
  274 +//
  275 +// let result = await new MediaCreat().allData()
  276 +// if (result) {
  277 +// // 去重
  278 +// classobj = {}
  279 +// classid = classid.reduce(function (item, next) {
  280 +// classobj[next.classId] ? '' : classobj[next.classId] = true && item.push(next);
  281 +// return item;
  282 +// }, []);
  283 +// // 写入log
  284 +// new MediaCreat().wrieLog("去重后的classid:------>" + JSON.stringify(classid))
  285 +// if (classid.length) {
  286 +// for (let i = 0; i < GETCLASSURLPARAMETER.maxMedia; i++) {
  287 +// let shiftData = classid.shift()
  288 +// if (shiftData) {
  289 +// // new MediaCreat().mediaCreat(shiftData['classId'], shiftData['siteId'])
  290 +// } else {
  291 +// return false
  292 +// }
  293 +// }
  294 +// res.send({code: "0"});
  295 +// } else {
  296 +// res.send({code: "1", message: "无录制数据"});
  297 +// }
  298 +// }
  299 +// });
206 300
207 /** 301 /**
208 * { 302 * {
@@ -210,32 +304,34 @@ router.get('/', async function (req, res, next) { @@ -210,32 +304,34 @@ router.get('/', async function (req, res, next) {
210 * } 304 * }
211 */ 305 */
212 router.post('/recording', async function (req, res, next) { 306 router.post('/recording', async function (req, res, next) {
213 - new MediaCreat().wrieLog("录制开始:------>")  
214 - let fileConfig = await new MediaCreat().getConfigFileJson()  
215 - if(!fileConfig) return false  
216 - const { classId } = req.body  
217 - if(classId && classId.length){  
218 - classid = classId  
219 - const { PROJECTCATALOG,GETCLASSURLPARAMETER } = JSON.parse(fileConfig)  
220 - for(let i=0;i<classId.length;i++){  
221 - if(!Array.isArray(parentData[classId[i].siteId])){  
222 - parentData[classId[i].siteId] = []  
223 - }  
224 - parentData[classId[i].siteId].push(classId[i].classId) 307 + new MediaCreat().wrieLog("录制启动:------>")
  308 + let fileConfig = new MediaCreat().getConfigFileJson()
  309 + if (!fileConfig) return false
  310 + let {classId, maxMedia} = req.body
  311 + if (classid.length > 0) {
  312 + // 有正在录制中的课堂,禁止重复
  313 + res.send({code: "1", message: "有正在录制中的课堂", data: classid});
  314 + return
225 } 315 }
226 - for(let i=0;i<GETCLASSURLPARAMETER.maxMedia;i++){  
227 - let shiftData = classid.shift()  
228 - if (shiftData) {  
229 - new MediaCreat().recordingCreat(shiftData['classId'], shiftData['siteId'])  
230 - } else {  
231 - return false  
232 - } 316 + if (classId && classId.length) {
  317 + classid = classId
  318 + if (!maxMedia || maxMedia == undefined) {
  319 + maxMedia = 1
  320 + }
  321 + console.log("maxMedia", maxMedia)
  322 + for (let i = 0; i < maxMedia; i++) {
  323 + let shiftData = classid.shift()
  324 + if (shiftData) {
  325 + new MediaCreat().recordingCreat(shiftData['classId'], shiftData['siteId'])
  326 + } else {
  327 + return false
  328 + }
  329 + }
  330 + res.send({code: "0"});
  331 + } else {
  332 + res.send({code: "1", message: "无录制数据"});
233 } 333 }
234 - res.send({ code: "0" });  
235 - }else{  
236 - res.send({ code: "1" ,message:"无录制数据"});  
237 - }  
238 - 334 +
239 }) 335 })
240 336
241 337