add 移动多文件

This commit is contained in:
theluyuan 2023-08-07 22:05:55 +08:00
parent 4bc2504a44
commit b675e3033d
5 changed files with 59 additions and 34 deletions

View File

@ -1,5 +1,5 @@
const Router = require("koa-router") const Router = require("koa-router")
const {search, gen_douban} = require("../util/ptgen") const {serach, gen_douban} = require("../util/ptgen")
const axios = require("axios") const axios = require("axios")
const cheerio = require("cheerio"); const cheerio = require("cheerio");
const {addSub, getSub, delSub} = require("../util/sql/video"); // HTML页面解析 const {addSub, getSub, delSub} = require("../util/sql/video"); // HTML页面解析
@ -13,7 +13,7 @@ const router = new Router({
*/ */
router.get("/searchVideo", async (ctx) => { router.get("/searchVideo", async (ctx) => {
let name = ctx.query.name let name = ctx.query.name
ctx.body = await search(name) ctx.body = await serach(name)
}) })

View File

@ -2,7 +2,7 @@ const fs = require("fs")
const { getMediaState } = require("../sql/download.js"); const { getMediaState } = require("../sql/download.js");
const path = require("path"); const path = require("path");
const { cwd } = require("process"); const { cwd } = require("process");
const { createTorrent, getVideoSpecifyTimeImage, uploadImg, getMediaInfoSend, deleteFolder } = require("../utils.js"); const { createTorrent, getVideoSpecifyTimeImage, uploadImg, getMediaInfoSend, deleteFolder, moveDir } = require("../utils.js");
const { getVideoInfo } = require("../sql/video.js"); const { getVideoInfo } = require("../sql/video.js");
const { mkdirRecursions } = require("../markdir.js"); const { mkdirRecursions } = require("../markdir.js");
const { default: axios } = require("axios"); const { default: axios } = require("axios");
@ -106,11 +106,10 @@ async function sendSeed(info) {
} }
// 移动到做种文件夹 // 移动到做种文件夹
mkdirRecursions(newDir + "/" + info.seedName + "/") mkdirRecursions(newDir + "/" + info.seedName + "/")
fs.renameSync(info.newPath + "/" + info.rname, newDir + "/" + info.seedName + "/" + info.rname); // fs.renameSync(info.newPath + "/" + info.rname, newDir + "/" + info.seedName + "/" + info.rname);
moveDir(info.newPath + "/" ,newDir + "/" + info.seedName + "/")
// 删除下载的文件夹 // 删除下载的文件夹
deleteFolder(info.newPath) deleteFolder(info.newPath)
} else { } else {
console.log("未下载完成") console.log("未下载完成")
} }

View File

@ -1,6 +1,6 @@
const axios = require("axios") const axios = require("axios")
const cheerio = require("cheerio"); // HTML页面解析 const cheerio = require("cheerio"); // HTML页面解析
async function search(name) { async function serach(name) {
const list = await axios.get(`https://movie.douban.com/j/subject_suggest?q=${name}`, { const list = await axios.get(`https://movie.douban.com/j/subject_suggest?q=${name}`, {
proxy: false, proxy: false,
}) })
@ -212,6 +212,6 @@ async function gen_douban(sid) {
} }
module.exports = { module.exports = {
serach: search, serach,
gen_douban gen_douban
} }

View File

@ -38,10 +38,10 @@ async function addVideoInfo(cover){
// 获取当前剧集是否下载完成 // 获取当前剧集是否下载完成
// todo 多集连发 // todo 多集连发
async function getMediaState(vid){ async function getMediaState(vid){
// let sql = `select * from download where vid=? and state!=1` let sql = `select * from download where vid=? and state!=1`
// let list = await getAll(sql,vid) let list = await getAll(sql,vid)
// return !list.length return !list.length
return true // return true
} }
module.exports = { module.exports = {

View File

@ -11,7 +11,7 @@ function spawn(exe, arg, config) {
if (!config) { if (!config) {
config = {} config = {}
} }
config.env = {...process.env} config.env = { ...process.env }
config.env.Path = [path.join(cwd(), '/bin'), path.join(cwd(), '/bin/MediaInfoCLI'), path.join(cwd(), '/bin/Transmission')].join(";") config.env.Path = [path.join(cwd(), '/bin'), path.join(cwd(), '/bin/MediaInfoCLI'), path.join(cwd(), '/bin/Transmission')].join(";")
return spawn2(exe, arg, config) return spawn2(exe, arg, config)
@ -110,7 +110,7 @@ function getMediaInfo(filePath) {
console.log(all) console.log(all)
resolve(JSON.parse(all)) resolve(JSON.parse(all))
}) })
}) })
} }
@ -130,7 +130,7 @@ function getMediaInfoSend(filePath) {
lux.stdout.on('close', () => { lux.stdout.on('close', () => {
resolve(all) resolve(all)
}) })
}) })
} }
@ -156,7 +156,7 @@ function createTorrent(filePath, save) {
function dow(info, callback) { function dow(info, callback) {
console.log( ['--cookies-from-browser', 'chrome', '-P', info.save, '-o', info.title + '.mp4', info.url].join(" ")) console.log(['--cookies-from-browser', 'chrome', '-P', info.save, '-o', info.title + '.mp4', info.url].join(" "))
const lux = spawn("yt-dlp", ['--cookies-from-browser', 'chrome', '-P', info.save, '-o', info.title + '.mp4', info.url], { const lux = spawn("yt-dlp", ['--cookies-from-browser', 'chrome', '-P', info.save, '-o', info.title + '.mp4', info.url], {
env: { env: {
path: path.join(cwd(), './bin/') path: path.join(cwd(), './bin/')
@ -214,12 +214,12 @@ function formatSeconds(value) {
* @param {string} filePath 文件路径 * @param {string} filePath 文件路径
* @returns {boolean} true存在false不存在 * @returns {boolean} true存在false不存在
*/ */
function fileIsExist(filePath){ function fileIsExist(filePath) {
if (fs.existsSync(filePath)) { if (fs.existsSync(filePath)) {
return true return true
} else { } else {
return false return false
} }
} }
/** /**
@ -230,21 +230,46 @@ function fileIsExist(filePath){
function deleteFolder(filePath) { function deleteFolder(filePath) {
const files = [] const files = []
if (fs.existsSync(filePath)) { if (fs.existsSync(filePath)) {
const files = fs.readdirSync(filePath) const files = fs.readdirSync(filePath)
files.forEach((file) => { files.forEach((file) => {
const nextFilePath = `${filePath}/${file}` const nextFilePath = `${filePath}/${file}`
const states = fs.statSync(nextFilePath) const states = fs.statSync(nextFilePath)
if (states.isDirectory()) { if (states.isDirectory()) {
//recurse //recurse
deleteFolder(nextFilePath) deleteFolder(nextFilePath)
} else { } else {
//delete file //delete file
fs.unlinkSync(nextFilePath) fs.unlinkSync(nextFilePath)
} }
}) })
fs.rmdirSync(filePath) fs.rmdirSync(filePath)
} }
} }
/**
* 移动文件夹下的所有文件(不包括文件夹)
* @param {string} sourceFolder 源文件夹
* @param {string} targetFolder 目标文件夹
*/
function moveDir(sourceFolder,targetFolder ){
try {
// 读取源文件夹中的所有文件
const files = fs.readdirSync(sourceFolder);
// 遍历源文件夹中的文件
files.forEach(file => {
// 构建源文件和目标文件的完整路径
const sourcePath = path.join(sourceFolder, file);
const targetPath = path.join(targetFolder, file);
// 移动文件
fs.renameSync(sourcePath, targetPath);
console.log(`成功移动文件 ${file}`);
});
} catch (err) {
console.error('无法读取源文件夹或移动文件:', err);
}
}
module.exports = { module.exports = {
@ -258,5 +283,6 @@ module.exports = {
spawn, spawn,
fileIsExist, fileIsExist,
getMediaInfoSend, getMediaInfoSend,
deleteFolder deleteFolder,
moveDir
} }