Skip to content

Instantly share code, notes, and snippets.

@vojtaholik
Created October 12, 2023 09:34
Show Gist options
  • Save vojtaholik/3a7e5639544f2c62cbff989141f1da70 to your computer and use it in GitHub Desktop.
Save vojtaholik/3a7e5639544f2c62cbff989141f1da70 to your computer and use it in GitHub Desktop.
// Name: Watch Screenshots Dir
// Watch: ~/Desktop/screenshots
// Description: Don't forget to run following command in your terminal to set default screenshot directory in macOSX: defaults write com.apple.screencapture location ~/Desktop/screenshots
import "@johnlindquist/kit";
import cloudinary from "cloudinary";
import trash from "trash";
const DIR = "screenshots";
const NOTIFY_SOUND_FILE_PATH = false; // home("Desktop/come-here-notification.mp3");
const CUSTOM_DOMAIN = false; // 'https://vojta.io/shots/'
// These are optional and automatically set by the watcher
let filePath = await arg();
let event = await arg();
// Cloudinary options
const options = {
public_id: `${DIR}/${Date.now()}`,
unique_filename: true,
use_filename: true,
overwrite: true,
filename_override: true,
};
cloudinary.v2.config({
cloud_name: await env("CLOUDINARY_CLOUD_NAME"),
api_key: await env("CLOUDINARY_API_KEY"),
api_secret: await env("CLOUDINARY_API_SECRET"),
});
// if file is added to DIR directory
if (event === "add") {
await appendFile(home(`Desktop/${DIR}/download.log`), filePath + "\n");
const isVideoFile = filePath.endsWith(".mov");
await cloudinary.v2.uploader.upload(
filePath,
{ ...options, resource_type: isVideoFile ? "video" : "image" },
async (error, result) => {
if (error) {
console.error("Error uploading file:", error);
} else {
if (result) {
await copy(
CUSTOM_DOMAIN
? `${CUSTOM_DOMAIN}${result.public_id.replace(`${DIR}/`, "")}`
: isVideoFile
? result.url.replace(".mov", ".mp4")
: result.url
);
notify("✓ Uploaded to Cloudinary");
NOTIFY_SOUND_FILE_PATH &&
(await playAudioFile(NOTIFY_SOUND_FILE_PATH));
await trash([filePath]);
}
}
}
);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment