const _ = require("lodash"); const fs = require("fs"); const normalize = require("normalize-path"); const { toHeaderCase } = require("js-convert-case"); const { files } = require("./files.json"); const data = fs.readFileSync("./ta_backup-20250402-auto/es_video-20250402-0.json", { encoding: "utf8" }); /** * @type {import("./types").Root[]} */ const sortedArrayOfObjects = data .split("\n") .filter(Boolean) .map(JSON.parse) .filter((i) => !i?.index); const filteredVideos = _.filter(sortedArrayOfObjects, (i) => { return _.includes(files, i.media_url); }); const formattedList = filteredVideos.map((i) => { const title = normalize(i.title); // .replaceAll(String.fromCharCode(32), String.fromCharCode(92, 32)) // .replaceAll(String.fromCharCode(40), String.fromCharCode(92, 40)) // .replaceAll(String.fromCharCode(41), String.fromCharCode(92, 41)) // .replace( // /([\u2700-\u27BF]|[\uE000-\uF8FF]|\uD83C[\uDC00-\uDFFF]|\uD83D[\uDC00-\uDFFF]|[\u2011-\u26FF]|\uD83E[\uDD10-\uDDFF])/g, // "" // ); const changedCase = toHeaderCase(title); // const trimmed = _.trim(changedCase); return `cp ${i.media_url} "output/${title}.${i.media_url.split(".").pop()}"`; }); const concatted = _.concat(["#!/bin/bash"], ["mkdir -p output"], formattedList); const joinedList = concatted.join("\n"); fs.writeFileSync("renamer.sh", joinedList, { encoding: "utf8" });