Archived
Merge branch 'localvideodb'
This commit is contained in:
+64
-9
@@ -1,14 +1,69 @@
|
|||||||
const express = require('express');
|
const express = require('express');
|
||||||
const app = express();
|
const bodyParser = require('body-parser');
|
||||||
|
const low = require('lowdb');
|
||||||
|
const lodashId = require('lodash-id');
|
||||||
|
const FileAsync = require('lowdb/adapters/FileAsync');
|
||||||
|
const app = express(); // app is an instance of express
|
||||||
|
|
||||||
app.use(express.static(__dirname + '/build'));
|
app.use(bodyParser.urlencoded({ extended: false })) // parse application/x-www-form-urlencoded
|
||||||
|
app.use(bodyParser.json()) // parse application/json
|
||||||
|
app.use(express.static(__dirname + '/build')); // serve static build site
|
||||||
|
|
||||||
app.get('/test/:id', (req, res) => {
|
// Create database instance and start server
|
||||||
// req.params.id
|
// const adapter = new FileAsync(__dirname + '/db.json');
|
||||||
// new wiki().page(req.params.id)
|
low(new FileAsync(__dirname + '/db.json')) // production
|
||||||
// .then(page => page.fullInfo())
|
// low(new FileAsync('/tmp/db.json')) // dev
|
||||||
// .then(parsed => res.send(parsed));
|
.then(db => {
|
||||||
res.send({ok:req.params.id});
|
db._.mixin(lodashId);
|
||||||
|
// DATABASE ROUTES
|
||||||
|
|
||||||
|
// ==============
|
||||||
|
|
||||||
|
app.post('/test',(req,res)=>{
|
||||||
|
// "reason": {
|
||||||
|
// "fitali": req.body.reason.toString() === "fvitali" ? 1:0,
|
||||||
|
// "": req.body.reason.toString() === "" ? 1:0,
|
||||||
|
// "": req.body.reason.toString() === "" ? 1:0,
|
||||||
|
// }
|
||||||
|
// try {
|
||||||
|
// let test = table.updateById(req.body.id, { })
|
||||||
|
// }
|
||||||
|
// catch(e) {
|
||||||
|
// }
|
||||||
|
res.send(req.body);
|
||||||
});
|
});
|
||||||
|
|
||||||
app.listen(8000, () => console.log('listen on 8000'));
|
// ==============
|
||||||
|
|
||||||
|
// GET /videotrack/:id?
|
||||||
|
app.get('/videotrack/:id?', (req, res) => {
|
||||||
|
const videos = db.get('videos');
|
||||||
|
req.params.id ? res.send(videos.getById(req.params.id).value()) : res.send(videos.value())
|
||||||
|
});
|
||||||
|
|
||||||
|
// POST /videotrack
|
||||||
|
app.post('/videotrack', (req, res) => {
|
||||||
|
const videos = db.get('videos');
|
||||||
|
const row = videos.getById(req.body.id);
|
||||||
|
if(row.value()) {
|
||||||
|
row
|
||||||
|
.update('timesWatched',(n) => ++n)
|
||||||
|
.update('lastWatched',() => new Date().toISOString())
|
||||||
|
.write()
|
||||||
|
.then(output => res.send(output))
|
||||||
|
} else {
|
||||||
|
let newRow = {
|
||||||
|
"id": req.body.id.toString(),
|
||||||
|
"timesWatched": 1,
|
||||||
|
"lastWatched": new Date().toISOString(),
|
||||||
|
}
|
||||||
|
videos.push(newRow).last().write().then(output => res.send(output))
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Set db default values
|
||||||
|
return db.defaults({ videos: [] }).write();
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
app.listen(8000, () => console.log('listen on 8000')); // bind to port 8000 as required from specs
|
||||||
|
});
|
||||||
|
|||||||
Generated
+43
-30
@@ -5488,8 +5488,7 @@
|
|||||||
},
|
},
|
||||||
"ansi-regex": {
|
"ansi-regex": {
|
||||||
"version": "2.1.1",
|
"version": "2.1.1",
|
||||||
"bundled": true,
|
"bundled": true
|
||||||
"optional": true
|
|
||||||
},
|
},
|
||||||
"aproba": {
|
"aproba": {
|
||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
@@ -5507,13 +5506,11 @@
|
|||||||
},
|
},
|
||||||
"balanced-match": {
|
"balanced-match": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"bundled": true,
|
"bundled": true
|
||||||
"optional": true
|
|
||||||
},
|
},
|
||||||
"brace-expansion": {
|
"brace-expansion": {
|
||||||
"version": "1.1.11",
|
"version": "1.1.11",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"balanced-match": "^1.0.0",
|
"balanced-match": "^1.0.0",
|
||||||
"concat-map": "0.0.1"
|
"concat-map": "0.0.1"
|
||||||
@@ -5526,18 +5523,15 @@
|
|||||||
},
|
},
|
||||||
"code-point-at": {
|
"code-point-at": {
|
||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
"bundled": true,
|
"bundled": true
|
||||||
"optional": true
|
|
||||||
},
|
},
|
||||||
"concat-map": {
|
"concat-map": {
|
||||||
"version": "0.0.1",
|
"version": "0.0.1",
|
||||||
"bundled": true,
|
"bundled": true
|
||||||
"optional": true
|
|
||||||
},
|
},
|
||||||
"console-control-strings": {
|
"console-control-strings": {
|
||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
"bundled": true,
|
"bundled": true
|
||||||
"optional": true
|
|
||||||
},
|
},
|
||||||
"core-util-is": {
|
"core-util-is": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
@@ -5640,8 +5634,7 @@
|
|||||||
},
|
},
|
||||||
"inherits": {
|
"inherits": {
|
||||||
"version": "2.0.3",
|
"version": "2.0.3",
|
||||||
"bundled": true,
|
"bundled": true
|
||||||
"optional": true
|
|
||||||
},
|
},
|
||||||
"ini": {
|
"ini": {
|
||||||
"version": "1.3.5",
|
"version": "1.3.5",
|
||||||
@@ -5651,7 +5644,6 @@
|
|||||||
"is-fullwidth-code-point": {
|
"is-fullwidth-code-point": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"number-is-nan": "^1.0.0"
|
"number-is-nan": "^1.0.0"
|
||||||
}
|
}
|
||||||
@@ -5664,20 +5656,17 @@
|
|||||||
"minimatch": {
|
"minimatch": {
|
||||||
"version": "3.0.4",
|
"version": "3.0.4",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"brace-expansion": "^1.1.7"
|
"brace-expansion": "^1.1.7"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"minimist": {
|
"minimist": {
|
||||||
"version": "0.0.8",
|
"version": "0.0.8",
|
||||||
"bundled": true,
|
"bundled": true
|
||||||
"optional": true
|
|
||||||
},
|
},
|
||||||
"minipass": {
|
"minipass": {
|
||||||
"version": "2.2.4",
|
"version": "2.2.4",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"safe-buffer": "^5.1.1",
|
"safe-buffer": "^5.1.1",
|
||||||
"yallist": "^3.0.0"
|
"yallist": "^3.0.0"
|
||||||
@@ -5694,7 +5683,6 @@
|
|||||||
"mkdirp": {
|
"mkdirp": {
|
||||||
"version": "0.5.1",
|
"version": "0.5.1",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"minimist": "0.0.8"
|
"minimist": "0.0.8"
|
||||||
}
|
}
|
||||||
@@ -5767,8 +5755,7 @@
|
|||||||
},
|
},
|
||||||
"number-is-nan": {
|
"number-is-nan": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"bundled": true,
|
"bundled": true
|
||||||
"optional": true
|
|
||||||
},
|
},
|
||||||
"object-assign": {
|
"object-assign": {
|
||||||
"version": "4.1.1",
|
"version": "4.1.1",
|
||||||
@@ -5778,7 +5765,6 @@
|
|||||||
"once": {
|
"once": {
|
||||||
"version": "1.4.0",
|
"version": "1.4.0",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"wrappy": "1"
|
"wrappy": "1"
|
||||||
}
|
}
|
||||||
@@ -5854,8 +5840,7 @@
|
|||||||
},
|
},
|
||||||
"safe-buffer": {
|
"safe-buffer": {
|
||||||
"version": "5.1.1",
|
"version": "5.1.1",
|
||||||
"bundled": true,
|
"bundled": true
|
||||||
"optional": true
|
|
||||||
},
|
},
|
||||||
"safer-buffer": {
|
"safer-buffer": {
|
||||||
"version": "2.1.2",
|
"version": "2.1.2",
|
||||||
@@ -5885,7 +5870,6 @@
|
|||||||
"string-width": {
|
"string-width": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"code-point-at": "^1.0.0",
|
"code-point-at": "^1.0.0",
|
||||||
"is-fullwidth-code-point": "^1.0.0",
|
"is-fullwidth-code-point": "^1.0.0",
|
||||||
@@ -5903,7 +5887,6 @@
|
|||||||
"strip-ansi": {
|
"strip-ansi": {
|
||||||
"version": "3.0.1",
|
"version": "3.0.1",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"ansi-regex": "^2.0.0"
|
"ansi-regex": "^2.0.0"
|
||||||
}
|
}
|
||||||
@@ -5942,13 +5925,11 @@
|
|||||||
},
|
},
|
||||||
"wrappy": {
|
"wrappy": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"bundled": true,
|
"bundled": true
|
||||||
"optional": true
|
|
||||||
},
|
},
|
||||||
"yallist": {
|
"yallist": {
|
||||||
"version": "3.0.2",
|
"version": "3.0.2",
|
||||||
"bundled": true,
|
"bundled": true
|
||||||
"optional": true
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -8247,6 +8228,11 @@
|
|||||||
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
|
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
|
||||||
"integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg=="
|
"integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg=="
|
||||||
},
|
},
|
||||||
|
"lodash-id": {
|
||||||
|
"version": "0.14.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/lodash-id/-/lodash-id-0.14.0.tgz",
|
||||||
|
"integrity": "sha1-uvSJNOVDobXWNG+MhGmLGoyAOJY="
|
||||||
|
},
|
||||||
"lodash._reinterpolate": {
|
"lodash._reinterpolate": {
|
||||||
"version": "3.0.0",
|
"version": "3.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
|
||||||
@@ -8312,6 +8298,25 @@
|
|||||||
"js-tokens": "^3.0.0 || ^4.0.0"
|
"js-tokens": "^3.0.0 || ^4.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"lowdb": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/lowdb/-/lowdb-1.0.0.tgz",
|
||||||
|
"integrity": "sha512-2+x8esE/Wb9SQ1F9IHaYWfsC9FIecLOPrK4g17FGEayjUWH172H6nwicRovGvSE2CPZouc2MCIqCI7h9d+GftQ==",
|
||||||
|
"requires": {
|
||||||
|
"graceful-fs": "^4.1.3",
|
||||||
|
"is-promise": "^2.1.0",
|
||||||
|
"lodash": "4",
|
||||||
|
"pify": "^3.0.0",
|
||||||
|
"steno": "^0.4.1"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"pify": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
|
||||||
|
"integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"lower-case": {
|
"lower-case": {
|
||||||
"version": "1.1.4",
|
"version": "1.1.4",
|
||||||
"resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz",
|
"resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz",
|
||||||
@@ -13329,6 +13334,14 @@
|
|||||||
"resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz",
|
||||||
"integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks="
|
"integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks="
|
||||||
},
|
},
|
||||||
|
"steno": {
|
||||||
|
"version": "0.4.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/steno/-/steno-0.4.4.tgz",
|
||||||
|
"integrity": "sha1-BxEFvfwobmYVwEA8J+nXtdy4Vcs=",
|
||||||
|
"requires": {
|
||||||
|
"graceful-fs": "^4.1.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
"stream-browserify": {
|
"stream-browserify": {
|
||||||
"version": "2.0.1",
|
"version": "2.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz",
|
||||||
|
|||||||
@@ -4,8 +4,11 @@
|
|||||||
"private": true,
|
"private": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"axios": "^0.18.0",
|
"axios": "^0.18.0",
|
||||||
|
"body-parser": "^1.18.3",
|
||||||
"bootstrap": "^4.1.3",
|
"bootstrap": "^4.1.3",
|
||||||
"express": "^4.16.4",
|
"express": "^4.16.4",
|
||||||
|
"lodash-id": "^0.14.0",
|
||||||
|
"lowdb": "^1.0.0",
|
||||||
"react": "^16.6.1",
|
"react": "^16.6.1",
|
||||||
"react-app-polyfill": "^0.1.3",
|
"react-app-polyfill": "^0.1.3",
|
||||||
"react-bootstrap": "^1.0.0-beta.2",
|
"react-bootstrap": "^1.0.0-beta.2",
|
||||||
|
|||||||
+12
-5
@@ -125,20 +125,27 @@ class VideoList extends React.Component {
|
|||||||
{items.map(item => (
|
{items.map(item => (
|
||||||
<Col key={item.videoID} lg={{ span: 3 }} md="6">
|
<Col key={item.videoID} lg={{ span: 3 }} md="6">
|
||||||
<Card className="my-1 carta">
|
<Card className="my-1 carta">
|
||||||
<Link to={{
|
<Link
|
||||||
|
to={{
|
||||||
pathname: '/video/' + item.videoID,
|
pathname: '/video/' + item.videoID,
|
||||||
state: {
|
state: {
|
||||||
artist: item.artist,
|
artist: item.artist,
|
||||||
title: item.title +' '+ item.artist
|
title: item.title
|
||||||
}
|
}
|
||||||
}}>
|
}}
|
||||||
|
>
|
||||||
{/* {item.artist} - {item.title} {item.videoID} {item.category} */}
|
{/* {item.artist} - {item.title} {item.videoID} {item.category} */}
|
||||||
<Card.Img src={item.thumbnail} alt={'Thumbnail of '+item.title } />
|
<Card.Img
|
||||||
|
src={item.thumbnail}
|
||||||
|
alt={'Thumbnail of ' + item.title}
|
||||||
|
/>
|
||||||
<Card.ImgOverlay>
|
<Card.ImgOverlay>
|
||||||
<Card.Title className="bg-dark d-inline text-white">
|
<Card.Title className="bg-dark d-inline text-white">
|
||||||
{item.artist} - {item.title}
|
{item.artist} - {item.title}
|
||||||
</Card.Title>
|
</Card.Title>
|
||||||
<p className='d-table d-lg-none card-text bg-dark text-white'>{item.category}</p>
|
<p className="d-table d-lg-none card-text bg-dark text-white">
|
||||||
|
{item.category}
|
||||||
|
</p>
|
||||||
</Card.ImgOverlay>
|
</Card.ImgOverlay>
|
||||||
</Link>
|
</Link>
|
||||||
</Card>
|
</Card>
|
||||||
|
|||||||
+13
-7
@@ -1,5 +1,6 @@
|
|||||||
import React, { Component } from 'react'; // eslint-disable-line no-unused-vars
|
import React, { Component } from 'react'; // eslint-disable-line no-unused-vars
|
||||||
import YouTube from 'react-youtube'; // eslint-disable-line no-unused-vars
|
import YouTube from 'react-youtube'; // eslint-disable-line no-unused-vars
|
||||||
|
import axios from 'axios';
|
||||||
/* eslint no-console: ["error", { allow: ["info", "error", "warn"] }] */
|
/* eslint no-console: ["error", { allow: ["info", "error", "warn"] }] */
|
||||||
|
|
||||||
class VideoPlayer extends Component {
|
class VideoPlayer extends Component {
|
||||||
@@ -64,15 +65,14 @@ class VideoPlayer extends Component {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// access to player in all event handlers via event.target
|
||||||
_onError(event) {
|
_onError(event) {
|
||||||
console.error('on error', event);
|
console.error('Error: ', event);
|
||||||
}
|
}
|
||||||
|
|
||||||
_onPlay(event) {}
|
_onPlay(event) {}
|
||||||
|
|
||||||
_onReady(event) {
|
_onReady(event) {}
|
||||||
// access to player in all event handlers via event.target
|
|
||||||
}
|
|
||||||
|
|
||||||
_onStateChange(event) {
|
_onStateChange(event) {
|
||||||
let timerId1, timerId2;
|
let timerId1, timerId2;
|
||||||
@@ -92,7 +92,6 @@ class VideoPlayer extends Component {
|
|||||||
}
|
}
|
||||||
}, 500);
|
}, 500);
|
||||||
this.setState({ outsideReject2: reject });
|
this.setState({ outsideReject2: reject });
|
||||||
|
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
this.state.promise2.then(msg => {
|
this.state.promise2.then(msg => {
|
||||||
@@ -110,9 +109,16 @@ class VideoPlayer extends Component {
|
|||||||
});
|
});
|
||||||
this.state.promise1
|
this.state.promise1
|
||||||
.then(
|
.then(
|
||||||
risultato => {
|
videoIdWatched => {
|
||||||
console.info(risultato);
|
|
||||||
// post request to local db
|
// post request to local db
|
||||||
|
axios
|
||||||
|
.post('http://localhost:8000/videotrack', {
|
||||||
|
id: videoIdWatched.toString()
|
||||||
|
})
|
||||||
|
.then(
|
||||||
|
response => console.info(response.data),
|
||||||
|
error => console.info(error)
|
||||||
|
);
|
||||||
// local storage logic for recent reccomender
|
// local storage logic for recent reccomender
|
||||||
clearInterval(timerId1);
|
clearInterval(timerId1);
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user