Created
October 12, 2023 09:34
-
-
Save vojtaholik/3a7e5639544f2c62cbff989141f1da70 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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