Skip to content

Commit

Permalink
feat:优化代码结构
Browse files Browse the repository at this point in the history
  • Loading branch information
c10342 committed Nov 10, 2020
1 parent 66e62c6 commit 19e003d
Show file tree
Hide file tree
Showing 5 changed files with 124 additions and 104 deletions.
2 changes: 1 addition & 1 deletion package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -62,9 +62,9 @@
]
},
"dependencies": {
"electron-updater": "^4.2.0",
"axios": "^0.18.0",
"dplayer": "^1.25.0",
"electron-updater": "^4.2.0",
"element-ui": "^2.4.11",
"express": "^4.16.4",
"good-storage": "^1.1.0",
Expand Down
103 changes: 53 additions & 50 deletions src/main/api/express.js
Original file line number Diff line number Diff line change
@@ -1,50 +1,53 @@
(function () {
const express = require('express')

const fs = require('fs')

const app = express()

app.get('/video', function (req, res) {
let pathSrc = req.query.video
let stat = fs.statSync(pathSrc);
let fileSize = stat.size;
let range = req.headers.range;
// fileSize 3332038
if (range) {
//有range头才使用206状态码
let parts = range.replace(/bytes=/, "").split("-");
let start = parseInt(parts[0], 10);
let end = parts[1] ? parseInt(parts[1], 10) : start + 999999;

// end 在最后取值为 fileSize - 1
end = end > fileSize - 1 ? fileSize - 1 : end;

let chunksize = (end - start) + 1;
let file = fs.createReadStream(pathSrc, {
start,
end
});
let head = {
'Content-Range': `bytes ${start}-${end}/${fileSize}`,
'Accept-Ranges': 'bytes',
'Content-Length': chunksize,
'Content-Type': 'video/mp4',
};
res.writeHead(206, head);
file.pipe(res);
} else {
let head = {
'Content-Length': fileSize,
'Content-Type': 'video/mp4',
};
res.writeHead(200, head);
fs.createReadStream(pathSrc).pipe(res);
}
})

app.listen(6789, () => {
console.log('localhost:6789')
})

})()
const { log } = require("console");

(function() {
const express = require("express");

const fs = require("fs");

const app = express();

app.get("/video", function(req, res) {
let pathSrc = req.query.video;

let stat = fs.statSync(pathSrc);
let fileSize = stat.size;
let range = req.headers.range;
// fileSize 3332038

if (range) {
//有range头才使用206状态码
let parts = range.replace(/bytes=/, "").split("-");
let start = parseInt(parts[0], 10);
let end = parts[1] ? parseInt(parts[1], 10) : start + 999999;

// end 在最后取值为 fileSize - 1
end = end > fileSize - 1 ? fileSize - 1 : end;

let chunksize = end - start + 1;
let file = fs.createReadStream(pathSrc, {
start,
end,
});
let head = {
"Content-Range": `bytes ${start}-${end}/${fileSize}`,
"Accept-Ranges": "bytes",
"Content-Length": chunksize,
"Content-Type": "video/mp4",
};
res.writeHead(206, head);
file.pipe(res);
} else {
let head = {
"Content-Length": fileSize,
"Content-Type": "video/mp4",
};
res.writeHead(200, head);
fs.createReadStream(pathSrc).pipe(res);
}
});

app.listen(6789, () => {
console.log("localhost:6789");
});
})();
9 changes: 9 additions & 0 deletions src/renderer/components/Video.vue
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ import { musicReg } from "../api/util";
import { remote } from "electron";
import fs from "fs";
import { playOrderList, volumePercentList } from "../config";
import { log } from "util";
const openDialog = new OpenDialog();
Expand Down Expand Up @@ -579,6 +580,14 @@ export default {
: `http://localhost:6789/video?video=${encodeURIComponent(
newVal.src
)}`;
// console.log(url);
// this.dp.switchVideo({
// video: {
// url: url,
// type: "auto"
// }
// });
this.dp.switchVideo({
url
});
Expand Down
112 changes: 60 additions & 52 deletions src/renderer/main.js
Original file line number Diff line number Diff line change
@@ -1,66 +1,74 @@
import Vue from 'vue'
import axios from 'axios'
import store from './store'
import Vue from "vue";
import axios from "axios";
import store from "./store";
// import flvjs from "flv.js";

import i18n from './lang'
// window.flvjs = flvjs;

import './font-awesome-4.7.0/css/font-awesome.css'
import './base.css'
import i18n from "./lang";

import { MessageBox, Col, Row } from 'element-ui'
import "./font-awesome-4.7.0/css/font-awesome.css";
import "./base.css";

Vue.prototype.$prompt = MessageBox.prompt;
import { MessageBox, Col, Row } from "element-ui";

Vue.use(Col)
Vue.use(Row)
Vue.prototype.$prompt = MessageBox.prompt;

Vue.use(Col);
Vue.use(Row);

import App from './App'
import MyHeader from './components/Header'
import MyVideo from './components/Video'
import MyFooter from './components/Footer'
import PlayList from './components/PlayList'
import MyProgress from './components/Progress'
import VideoProgress from './components/VideoProgress'
import ListItem from './components/ListItem'
import HistoryItem from './components/HistoryItem'
import About from './components/About'
import FileInfo from './components/FileInfo'
import App from "./App";
import MyHeader from "./components/Header";
import MyVideo from "./components/Video";
import MyFooter from "./components/Footer";
import PlayList from "./components/PlayList";
import MyProgress from "./components/Progress";
import VideoProgress from "./components/VideoProgress";
import ListItem from "./components/ListItem";
import HistoryItem from "./components/HistoryItem";
import About from "./components/About";
import FileInfo from "./components/FileInfo";

Vue.component('MyHeader', MyHeader)
Vue.component('MyVideo', MyVideo)
Vue.component('MyFooter', MyFooter)
Vue.component('PlayList', PlayList)
Vue.component('MyProgress', MyProgress)
Vue.component('VideoProgress', VideoProgress)
Vue.component('ListItem', ListItem)
Vue.component('HistoryItem', HistoryItem)
Vue.component('About', About)
Vue.component('FileInfo', FileInfo)
Vue.component("MyHeader", MyHeader);
Vue.component("MyVideo", MyVideo);
Vue.component("MyFooter", MyFooter);
Vue.component("PlayList", PlayList);
Vue.component("MyProgress", MyProgress);
Vue.component("VideoProgress", VideoProgress);
Vue.component("ListItem", ListItem);
Vue.component("HistoryItem", HistoryItem);
Vue.component("About", About);
Vue.component("FileInfo", FileInfo);

if (!process.env.IS_WEB) Vue.use(require('vue-electron'))
Vue.http = Vue.prototype.$http = axios
Vue.config.productionTip = false
if (!process.env.IS_WEB) Vue.use(require("vue-electron"));
Vue.http = Vue.prototype.$http = axios;
Vue.config.productionTip = false;

import { ipcRenderer } from 'electron'
import storage from 'good-storage'
import { ipcRenderer } from "electron";
import storage from "good-storage";

// 窗口关闭前,保存store中的状态,以便下次打开恢复上次的状态
ipcRenderer.on('close', () => {
storage.set('locale',i18n.locale)
if (store.state.currentVideo && !store.state.isTrace) {
storage.set('state', Object.assign({}, store.state, { currentVideo: { ...store.state.currentVideo, currentTime: store.state.currentTime, speed: store.state.speed } }))
} else {
storage.set('state', store.state)
}
})


ipcRenderer.on("close", () => {
storage.set("locale", i18n.locale);
if (store.state.currentVideo && !store.state.isTrace) {
storage.set(
"state",
Object.assign({}, store.state, {
currentVideo: {
...store.state.currentVideo,
currentTime: store.state.currentTime,
speed: store.state.speed,
},
})
);
} else {
storage.set("state", store.state);
}
});

new Vue({
components: { App },
template: '<App/>',
store,
i18n
}).$mount('#app')

components: { App },
template: "<App/>",
store,
i18n,
}).$mount("#app");

0 comments on commit 19e003d

Please sign in to comment.