From 77786bc459dde2ce54ba2dc3252773390d4c972c Mon Sep 17 00:00:00 2001 From: pac Date: Tue, 25 Apr 2023 23:54:25 +0800 Subject: [PATCH] update vimeo-upload --- backend/src/index.ts | 5 +- backend/src/router/courses.router.ts | 12 +-- backend/src/router/video.router.ts | 0 backend/src/router/vimeo.router.ts | 111 +++++++++++++++++++++++++++ backend/src/vimeo-upload.js | 3 +- backend/src/youtube-upload-old.js | 51 ++++++++++++ 6 files changed, 175 insertions(+), 7 deletions(-) delete mode 100644 backend/src/router/video.router.ts create mode 100644 backend/src/router/vimeo.router.ts create mode 100644 backend/src/youtube-upload-old.js diff --git a/backend/src/index.ts b/backend/src/index.ts index 515e0b4..c49fd10 100644 --- a/backend/src/index.ts +++ b/backend/src/index.ts @@ -5,7 +5,9 @@ import * as dotenv from 'dotenv'; import express from 'express'; import helmet from 'helmet'; import { itemsRouter } from './router/items.router'; -// import {router} from "./router/auth.router"; + +import { vimeoRouter } from "./router/vimeo.router"; + const auth = require('./router/auth.router'); const course = require('./router/courses.router'); // import courses from "./router/courses.router" @@ -47,6 +49,7 @@ app.use(express.json()); app.use('/', itemsRouter); // app.use('/', auth.router); app.use('/courses', course); +app.use('/vimeo', vimeoRouter); // app.get('/', function (req, res) { // res.json('nodejs video'); diff --git a/backend/src/router/courses.router.ts b/backend/src/router/courses.router.ts index 8cfe654..1a06c37 100644 --- a/backend/src/router/courses.router.ts +++ b/backend/src/router/courses.router.ts @@ -66,9 +66,11 @@ router.post('/upload', uploadVideoFile, (req: any, res: any) => { }); -router.get('/oauth2callback', (req, res) => { +router.get('/oauth2callback', (req: any, res: any) => { res.redirect('https://4ihr74.csb.app/success'); const { filename, title, description } = JSON.parse(req.query.state); +// let fullpath = __dirname + '/../../uploads/' + filename; + let fullpath = './uploads/' + filename; const code = req.query.code; oAuth.getToken(code, (err: any, tokens: any) => { if (err) { @@ -82,18 +84,18 @@ router.get('/oauth2callback', (req, res) => { resource: { snippet: { title, description }, status: { - privacyStatus: 'private', + privacyStatus: 'unlisted', }, }, part: 'snippet, status', media: { - body: fs.createReadStream(filename), + body: fs.createReadStream(fullpath), }, }, - (err, data) => { + (err: any, data: any) => { console.log('err: ', err); console.log('done'); - process.exit(); + // process.exit(); } ); }); diff --git a/backend/src/router/video.router.ts b/backend/src/router/video.router.ts deleted file mode 100644 index e69de29..0000000 diff --git a/backend/src/router/vimeo.router.ts b/backend/src/router/vimeo.router.ts new file mode 100644 index 0000000..0bbb049 --- /dev/null +++ b/backend/src/router/vimeo.router.ts @@ -0,0 +1,111 @@ +const auth = require('./auth.router-2'); +import express, { Request, Response } from 'express'; +export const vimeoRouter = express.Router(); + +const multer = require('multer'); +const uuid = require('uuid'); +// const credentials = require('../../credentials.json'); +// const open = require('open'); +const fs = require('fs'); + +const Vimeo = require('vimeo').Vimeo; + +const CLIENT_ID = '6ae2aef0e381d6eb06d0a2e2b2e9b47b50452ae4'; +const CLIENT_SECRET = + '+HyK0t+nNFj5oRUFsoKvKr6bxVacEgYjYFMU10l+xT7zoCgj8wLPacrHMDE0mHWc2EKvjBhj182Pooa1hHfVst0VJsWOErZXHZhAF6oj2xdC4cYtTaGx6bSxonUrKuLd'; +const ACCESS_TOKEN = '1ecd37d4819e70afff197bd8ade19121'; + +let client = new Vimeo(CLIENT_ID, CLIENT_SECRET, ACCESS_TOKEN); + +vimeoRouter.get('/', async (req, res) => { + console.log('vimeo router'); + try { + res.send('vimeo router'); + } catch (err) { + console.log('courses err: ', err); + } +}); + +const storage = multer.diskStorage({ + destination: './uploads', + filename: (req: any, file: any, cb: any) => { + const newFilename = `${uuid.v4()}-${file.originalname}`; + cb(null, newFilename); + }, +}); + +const uploadVideoFile = multer({ + storage: storage, +}).single('videoFile'); + +// const oAuth = youtube.authenticate({ +// type: 'oauth', +// client_id: credentials.web.client_id, +// client_secret: credentials.web.client_secret, +// redirect_url: credentials.web.redirect_uris[0], +// }); + +vimeoRouter.post('/upload', uploadVideoFile, (req: any, res: any) => { + if (req.file) { + console.log('req: ', req); + console.log('req.file: ', req.file); + const filename = req.file.filename; + let fullpath = './uploads/' + filename; + + const title = req.body.title; + const description = req.body.description; + client.upload( + fullpath, + { + description: description, + name: title, + }, + function (uri) { + console.log('Your video URI is: ' + uri); + res.redirect('https://4ihr74.csb.app/success'); + }, + function (bytes_uploaded, bytes_total) { + var percentage = ((bytes_uploaded / bytes_total) * 100).toFixed(2); + console.log(bytes_uploaded, bytes_total, percentage + '%'); + }, + function (error) { + console.log('Failed because: ' + error); + } + ); + } +}); + +vimeoRouter.get('/oauth2callback', (req: any, res: any) => { + res.redirect('https://4ihr74.csb.app/success'); + const { filename, title, description } = JSON.parse(req.query.state); + // let fullpath = __dirname + '/../../uploads/' + filename; + let fullpath = './uploads/' + filename; + const code = req.query.code; + // oAuth.getToken(code, (err: any, tokens: any) => { + // if (err) { + // console.log('err: ', err); + // return; + // } + + // oAuth.setCredentials(tokens); + // const req = youtube.videos.insert( + // { + // resource: { + // snippet: { title, description }, + // status: { + // privacyStatus: 'unlisted', + // }, + // }, + // part: 'snippet, status', + // media: { + // body: fs.createReadStream(fullpath), + // }, + // }, + // (err: any, data: any) => { + // console.log('err: ', err); + // console.log('done'); + // // process.exit(); + // } + // ); + // }); +}); diff --git a/backend/src/vimeo-upload.js b/backend/src/vimeo-upload.js index e77f0ab..40cfa78 100644 --- a/backend/src/vimeo-upload.js +++ b/backend/src/vimeo-upload.js @@ -4,7 +4,8 @@ const Vimeo = require('vimeo').Vimeo; const CLIENT_ID = '6ae2aef0e381d6eb06d0a2e2b2e9b47b50452ae4'; const CLIENT_SECRET = '+HyK0t+nNFj5oRUFsoKvKr6bxVacEgYjYFMU10l+xT7zoCgj8wLPacrHMDE0mHWc2EKvjBhj182Pooa1hHfVst0VJsWOErZXHZhAF6oj2xdC4cYtTaGx6bSxonUrKuLd'; -const ACCESS_TOKEN = 'cec72ada1571c4a094bf9a7414b6bdc8'; + +const ACCESS_TOKEN = '1ecd37d4819e70afff197bd8ade19121'; let client = new Vimeo(CLIENT_ID, CLIENT_SECRET, ACCESS_TOKEN); diff --git a/backend/src/youtube-upload-old.js b/backend/src/youtube-upload-old.js new file mode 100644 index 0000000..538d2f6 --- /dev/null +++ b/backend/src/youtube-upload-old.js @@ -0,0 +1,51 @@ +// const upload = require('./youtube-upload.js') +const { upload } = require('youtube-videos-uploader'); //vanilla javascript +const credentials = { + email: 'pachinkosun@gmail.com', + pass: 'Qwer4455.', + recoveryemail: 'sunpochin@gmail.com', +}; + +const onVideoUploadSuccess = (videoUrl) => { + // ..do something.. + console.log('onVideoUploadSuccess!!'); +}; + +const video1 = { + path: './vid.mp4', + title: 'title 1', + description: 'description 1', + onProgress: (progress) => { + console.log('percent: ', progress); + }, + onSuccess: onVideoUploadSuccess, +}; + +const video2 = { + path: './Hello.mp4', + title: 'title 2', + description: 'description 2', + thumbnail: 'thumbnail.png', + language: 'english', + tags: ['video', 'github'], + playlist: 'playlist name', + channelName: 'Channel Name', + onSuccess: onVideoUploadSuccess, + skipProcessingWait: true, + onProgress: (progress) => { + console.log('progress', progress); + }, + uploadAsDraft: false, + isAgeRestriction: false, + isNotForKid: false, + publishType: 'PUBLIC', + isChannelMonetized: false, +}; + +function main() { + console.log('main') + // upload.uploadVideo('title', 'description', ['tag1', 'tag2']) + upload(credentials, [video1, video2]).then(console.log); +} + +main();