Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env node
- let inputDir,
- outputDir,
- help = false;
- const path = require("path");
- const fs = require("fs");
- const exec = require("child_process").execSync;
- //\.?(\/.*\/)(\S+$)
- docs();
- check_arguments();
- function readFiles() {
- fs.readdir(inputDir, (err, files) => {
- if (!err) {
- files.map(file => {
- let filePath = path.join(inputDir, file);
- let stat = fs.statSync(filePath);
- if (
- stat &&
- stat.isFile() &&
- [".flac", ".m4a"].indexOf(path.extname(filePath)) >= 0
- ) {
- let extension = path.extname(filePath);
- let name = path.basename(filePath);
- let orname = name;
- let regex = new RegExp("\\" + extension, "g");
- name = name.replace(regex, ".mp3");
- orname = orname.replace(regex, ".mp3");
- name = bash_parse(name);
- filePath = bash_parse(filePath);
- outputDir = bash_parse(outputDir);
- if (
- !fs.existsSync(path.join(outputDir, orname)) &&
- !fs.existsSync(path.join(outputDir, `${orname}.finished`))
- ) {
- console.log("Aun no se ha convertido este archivo");
- exec(
- `ffmpeg -i ${filePath} ${outputDir}/${name} -ab 320k && touch ${outputDir}/.${name}.finished`
- ).toString();
- } else {
- console.log(
- `El archivo ${orname} ya ha sido convertido re visa la carpeta ${outputDir} `
- );
- if (
- fs.existsSync(outputDir + `/${orname}`) &&
- !fs.existsSync(outputDir + `/.${orname}.finished`)
- ) {
- fs.unlinkSync(outputDir + `/${orname}`);
- exec(
- `ffmpeg -i ${filePath} ${outputDir}/${name} && touch ${outputDir}/.${name}.finished`
- ).toString();
- }
- }
- }
- });
- }
- });
- }
- function docs() {
- if (process.argv[2] == "--help") {
- console.log(
- "Script para convertir cualquier formato de audio a mp3"
- );
- console.log("Ejemplo: <script> <input dir> <output dir>");
- console.log("<script> es equivalente a el punto de incio del script");
- console.log(
- "<input dir> es equivalente a el punto de inicio donde se buscaran archivos de audio"
- );
- console.log(
- "<output dir> es equivalente a el punto de salida donde se colocaran los archivos resultantes"
- );
- help = true;
- }
- }
- function check_arguments() {
- if (
- typeof process.argv[2] !== "undefined" &&
- typeof process.argv[3] !== "undefined"
- ) {
- if (
- process.argv[2].match(/^\.?(\/.*\/?)$/g) &&
- process.argv[3].match(/^\.?(\/.*\/?)$/g)
- ) {
- inputDir = process.argv[2];
- outputDir = process.argv[3];
- if (
- fs.statSync(inputDir).isDirectory() &&
- fs.statSync(outputDir).isDirectory()
- ) {
- readFiles();
- console.log("Ambos son directorios");
- }
- console.log("inputDir :", inputDir);
- console.log("outputDir :", outputDir);
- } else {
- console.log("Debes colocar un directorio de input y output");
- }
- } else {
- if (!help) {
- console.log("Debes colocar un directorio de input y output");
- }
- }
- }
- function bash_parse(txt) {
- /*
- Normaliza un string para que se pueda ejecutar en terminal
- Eliminando espacios y caracteres especiales
- */
- txt = txt
- .replace(/\s/g, "\\ ")
- .replace(/\(/g, "\\(")
- .replace(/\)/g, "\\)")
- .replace(/'/g, "\\'")
- .replace(/&/g, "\\&")
- .replace(/\$/g, "\\$");
- return txt;
- }
Add Comment
Please, Sign In to add comment