From c0982d70985adfb320f96faf7398effbcb6a34b2 Mon Sep 17 00:00:00 2001 From: marcobaobao Date: Mon, 13 Jun 2022 15:30:05 +0200 Subject: [PATCH] code refactoring --- .DS_Store | Bin 8196 -> 0 bytes .dockerignore | 1 + .gitignore | 1 + frontend/src/Home.tsx | 29 +++++++++----- frontend/src/components/StackableResult.tsx | 2 +- pnpm-lock.yaml | 24 ------------ server/src/core/downloadArchive.ts | 40 +++++++++++++------- server/src/main.ts | 19 +++++++--- server/src/utils/procUtils.ts | 9 +++-- vite.config.ts | 27 ++++++------- 10 files changed, 81 insertions(+), 71 deletions(-) delete mode 100644 .DS_Store diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index ec73940cf5cdbca17e2220868e83c9c7252d457c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8196 zcmeI1O>YuG7{{NX*e(_-F`95O*~BYF+G=Ct1(6;+cqv8?YH+u#W$m&<*rmiYB%Jj- z_!YeRN&GIJ^#9Ck$+CboG4UnNBs0&vJpY;9-weAvKt!TB>h2I#h{!@_Ti!&mB=I=s zg_KKruEPrG>2V;B-9Wl%mlwQEhaq4H7y^cXAz%pn4FvGc=47pS@9R-h8UlvEe@TF! z4>mH}Mq;Phsz(P36#~HK(XA5d>Z?Dj%^k3f#7?zE50cPQSS=Mvh#`{5L1;O~8;So^ zTP-J{R>nNZ$|8wSL=t!iTe*{HXlqJCzz|p@z_ELty5v(taVCC$h_Tu?m6UMi=Z>R6 z66b$*2Z0~O_4*f)TgzWr->^2UP3u*=C&%sBiAPb>8NT4wQz--YqVBlQd~e(--*_a$ z*zrSes04o3gUie3e%O`crW}RcNNL-8z$#dUPPuY^ey?7y+IR2oPpbC$!7kVL_9v5q zb@TR}2S=ULpdZTj`c_5qxS*15&&m&|&F<%{Jq!aGo}iEYuTqO79n&d!G^96R6Ofl- z^9g=wHU%)0G^P-~k{q<6i~=;pR*L2l#h>Q7d$3cr_jZ4k>ykUm5H2p#q8j?#3^P!k zV|ER@;Zcme>Cra5Lv0(XfCf-U)SFj}TbVtwpdMm(Lg+k{-Hbn7hFhfT9HKQzIc8M$Vs6%~K8}S*+o{1cvxb%ue+=-)3o`coARqGLdGC!uy(iU_f zavwbS{PEeXfsccpVE$T(Pi|UUpd&iOj4gTsTZ1CYg*m1b>tMj2j599hXBW&c?ORg5 zF^K!P!V|Q9#Bg32!}}-bD~dCvdH-VvOfm#6C$OenDjfeGuKxZ1@`;RxAz%pnvjjxG z)owL$`4?Z7vvwN(-nDjbJZ;W+H<4@1;#xU!~^*r~SYK{7uCC=8}B I1b!=l@0Cna`v3p{ diff --git a/.dockerignore b/.dockerignore index d3d0013..dc69752 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,4 +1,5 @@ node_modules +downloads dist package-lock.json pnpm-lock.yaml diff --git a/.gitignore b/.gitignore index 696a2f7..8a804c8 100644 --- a/.gitignore +++ b/.gitignore @@ -11,4 +11,5 @@ src/server/core/yt-dlp *.ytdl *.part *.db +downloads .DS_Store \ No newline at end of file diff --git a/frontend/src/Home.tsx b/frontend/src/Home.tsx index 40b7f28..a2775d6 100644 --- a/frontend/src/Home.tsx +++ b/frontend/src/Home.tsx @@ -1,9 +1,20 @@ -import { Backdrop, Button, ButtonGroup, CircularProgress, Container, Grid, Paper, Skeleton, Snackbar, TextField, Typography, } from "@mui/material"; import React, { Fragment, useEffect, useState } from "react"; +import { + Backdrop, + Button, + ButtonGroup, + CircularProgress, + Container, + Grid, + Paper, + Snackbar, + TextField, + Typography, +} from "@mui/material"; import { useDispatch, useSelector } from "react-redux"; -import { io, Socket } from "socket.io-client"; +import { Socket } from "socket.io-client"; import { StackableResult } from "./components/StackableResult"; -import { connected, disconnected, downloading, finished } from "./features/status/statusSlice"; +import { connected, downloading, finished } from "./features/status/statusSlice"; import { IDLInfo, IDLInfoBase, IDownloadInfo, IMessage } from "./interfaces"; import { RootState } from "./stores/store"; import { toFormatArgs, updateInStateMap, } from "./utils"; @@ -106,7 +117,7 @@ export default function Home({ socket }: Props) { const input = document.getElementById('urlInput') as HTMLInputElement; input.value = ''; setShowBackdrop(true); - setDownloadFormats(null); + setDownloadFormats(undefined); }, 250); } @@ -148,7 +159,7 @@ export default function Home({ socket }: Props) { socket.emit('abort', { pid: id }) return } - setDownloadFormats(null) + setDownloadFormats(undefined) socket.emit('abort-all') } @@ -319,10 +330,10 @@ export default function Home({ socket }: Props) { abort(message[0])} /> diff --git a/frontend/src/components/StackableResult.tsx b/frontend/src/components/StackableResult.tsx index 58471e1..8fcab1e 100644 --- a/frontend/src/components/StackableResult.tsx +++ b/frontend/src/components/StackableResult.tsx @@ -13,7 +13,7 @@ type Props = { } export function StackableResult({ formattedLog, title, thumbnail, resolution, progress, stopCallback }: Props) { - const guessResolution = (xByY: string): JSX.Element => { + const guessResolution = (xByY: string): any => { if (!xByY) return null; if (xByY.includes('4320')) return (); if (xByY.includes('2160')) return (); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4b3be85..6c5e50a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -133,9 +133,6 @@ packages: engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - peerDependenciesMeta: - '@babel/core': - optional: true dependencies: '@babel/compat-data': 7.17.10 '@babel/core': 7.18.2 @@ -248,9 +245,6 @@ packages: engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - peerDependenciesMeta: - '@babel/core': - optional: true dependencies: '@babel/helper-plugin-utils': 7.16.7 dev: false @@ -260,9 +254,6 @@ packages: engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - peerDependenciesMeta: - '@babel/core': - optional: true dependencies: '@babel/core': 7.18.2 '@babel/helper-plugin-utils': 7.17.12 @@ -273,9 +264,6 @@ packages: engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - peerDependenciesMeta: - '@babel/core': - optional: true dependencies: '@babel/core': 7.18.2 '@babel/plugin-transform-react-jsx': 7.17.12_@babel+core@7.18.2 @@ -286,9 +274,6 @@ packages: engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - peerDependenciesMeta: - '@babel/core': - optional: true dependencies: '@babel/core': 7.18.2 '@babel/helper-plugin-utils': 7.17.12 @@ -299,9 +284,6 @@ packages: engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - peerDependenciesMeta: - '@babel/core': - optional: true dependencies: '@babel/core': 7.18.2 '@babel/helper-plugin-utils': 7.16.7 @@ -312,9 +294,6 @@ packages: engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - peerDependenciesMeta: - '@babel/core': - optional: true dependencies: '@babel/core': 7.18.2 '@babel/helper-annotate-as-pure': 7.16.7 @@ -377,9 +356,6 @@ packages: resolution: {integrity: sha512-Pr/7HGH6H6yKgnVFNEj2MVlreu3ADqftqjqwUvDy/OJzKFgxKeTQ+eeUf20FOTuHVkDON2iNa25rAXVYtWJCjw==} peerDependencies: '@babel/core': ^7.0.0 - peerDependenciesMeta: - '@babel/core': - optional: true dependencies: '@babel/helper-module-imports': 7.16.7 '@babel/plugin-syntax-jsx': 7.16.7 diff --git a/server/src/core/downloadArchive.ts b/server/src/core/downloadArchive.ts index b0551bb..af5ce1c 100644 --- a/server/src/core/downloadArchive.ts +++ b/server/src/core/downloadArchive.ts @@ -1,18 +1,30 @@ -import { resolve } from "path"; +import { resolve as pathResolve } from "path"; import { readdir } from "fs"; +import { ISettings } from "../interfaces/ISettings"; +import Logger from "../utils/BetterLogger"; +let settings: ISettings; +const log = Logger.instance; -const archived = [ - { - id: 1, - title: '', - path: resolve(''), - img: '', - }, -] - -export function listDownloaded(ctx: any, next: any) { - //readdir() - ctx.body = archived - next() +try { + settings = require('../../settings.json'); +} catch (e) { + log.warn('dl', 'settings.json not found'); +} + +export function listDownloaded(ctx: any) { + return new Promise((resolve, reject) => { + readdir(pathResolve(settings.download_path || 'download'), (err, files) => { + if (err) { + reject({ err: true }) + return + } + ctx.body = files.map(file => { + resolve({ + filename: file, + path: pathResolve(file), + }) + }) + }) + }) } diff --git a/server/src/main.ts b/server/src/main.ts index 588d0e7..840284f 100644 --- a/server/src/main.ts +++ b/server/src/main.ts @@ -4,14 +4,14 @@ import { Server } from 'socket.io'; import { ytdlpUpdater } from './utils/updater'; import { download, abortDownload, retrieveDownload, abortAllDownloads, getFormatsAndInfo } from './core/downloader'; import { getFreeDiskSpace } from './utils/procUtils'; -import Logger from './utils/BetterLogger'; import { listDownloaded } from './core/downloadArchive'; import { createServer } from 'http'; +import { streamer } from './core/streamer'; import * as Koa from 'koa'; import * as Router from 'koa-router'; import * as serve from 'koa-static'; import * as cors from '@koa/cors'; -import { streamer } from './core/streamer'; +import Logger from './utils/BetterLogger'; const app = new Koa(); const server = createServer(app.callback()); @@ -25,7 +25,6 @@ const io = new Server(server, { }); // Koa routing - router.get('/settings', (ctx, next) => { ctx.redirect('/') next() @@ -34,8 +33,16 @@ router.get('/downloaded', (ctx, next) => { ctx.redirect('/') next() }) -router.get('/getAllDownloaded', (ctx, next) => { - listDownloaded(ctx, next) +router.get('/archive', (ctx, next) => { + listDownloaded(ctx) + .then((res: any) => { + ctx.body = res + next() + }) + .catch((err: any) => { + ctx.body = err; + next() + }) }) router.get('/stream/:filepath', (ctx, next) => { streamer(ctx, next) @@ -76,8 +83,8 @@ io.on('disconnect', (socket) => { }) app.use(serve(join(__dirname, 'frontend'))) -app.use(router.routes()) app.use(cors()) +app.use(router.routes()) server.listen(process.env.PORT || 3022) diff --git a/server/src/utils/procUtils.ts b/server/src/utils/procUtils.ts index a085ad0..817cdf5 100644 --- a/server/src/utils/procUtils.ts +++ b/server/src/utils/procUtils.ts @@ -1,7 +1,9 @@ import { exec, spawn } from 'child_process'; import fs = require('fs'); +import Logger from './BetterLogger'; // import net = require('net'); -import { logger } from './logger'; + +const log = Logger.instance; /** * Browse /proc in order to find the specific pid @@ -12,7 +14,7 @@ export function existsInProc(pid: number): any { try { return fs.statSync(`/proc/${pid}`) } catch (e) { - logger('proc', `pid ${pid} not found in procfs`) + log.warn('proc', `pid ${pid} not found in procfs`) } } @@ -36,12 +38,11 @@ function retriveStdoutFromProcFd(pid) { export async function killProcess(pid: number) { const res = spawn('kill', [String(pid)]) res.on('exit', () => { - logger('proc', `Successfully killed yt-dlp process, pid: ${pid}`) + log.info('proc', `Successfully killed yt-dlp process, pid: ${pid}`) }) } export function getFreeDiskSpace(socket: any) { - let buffer: string = ''; let message: string = 'free-space'; exec("df -h / | tail -1 | awk '{print $4}'", (_, stdout) => { socket.emit(message, stdout) diff --git a/vite.config.ts b/vite.config.ts index 8aefe3b..9a0149f 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,17 +1,18 @@ -import ViteYaml from '@modyfi/vite-plugin-yaml'; import react from "@vitejs/plugin-react"; +import ViteYaml from '@modyfi/vite-plugin-yaml'; +import { defineConfig } from 'vite'; import { resolve } from 'path'; -const config = { - plugins: [ - ViteYaml(), - react(), - ], - root: './frontend', - build: { - emptyOutDir: true, - outDir: resolve(__dirname, 'dist', 'frontend'), +export default defineConfig(() => { + return { + plugins: [ + react(), + ViteYaml(), + ], + root: resolve(__dirname, 'frontend'), + build: { + emptyOutDir: true, + outDir: resolve(__dirname, 'dist', 'frontend'), + } } -} - -export default config \ No newline at end of file +})