Skip to content

Instantly share code, notes, and snippets.

@AbeEstrada
AbeEstrada / loudness.sh
Last active October 14, 2024 15:25 — forked from kylophone/loudness.rb
FFmpeg loudnorm filter - dual pass loudness normalization example - http://k.ylo.ph/2016/04/04/loudnorm.html
#!/bin/bash
ffmpeg_bin="ffmpeg" # v7.1
target_il=-16.0
target_lra=11.0
target_tp=-1.0
samplerate="44100"
if [ "$#" -ne 2 ]; then
echo "Usage: $0 input.wav output.wav"
@AbeEstrada
AbeEstrada / disableChromeUpdates.sh
Created May 18, 2023 17:35
Disable Google Autoupdater on macOS
launchctl unload -w ~/Library/LaunchAgents/com.google.keystone.xpcservice.plist
launchctl unload -w ~/Library/LaunchAgents/com.google.keystone.agent.plist
echo > ~/Library/LaunchAgents/com.google.keystone.xpcservice.plist
echo > ~/Library/LaunchAgents/com.google.keystone.agent.plist
chmod 644 ~/Library/LaunchAgents/com.google.keystone.xpcservice.plist
chmod 644 ~/Library/LaunchAgents/com.google.keystone.agent.plist
sudo chown root ~/Library/LaunchAgents/com.google.keystone.xpcservice.plist
@AbeEstrada
AbeEstrada / index.mjs
Last active January 5, 2023 00:05
Privnote + AWS Lambda
import { S3Client, PutObjectCommand, GetObjectCommand, DeleteObjectCommand } from "@aws-sdk/client-s3";
const s3Client = new S3Client({ region: "us-east-1" });
const Bucket = "BUCKET_NAME_GOES_HERE";
export const handler = async (event) => {
let statusCode = 200;
let body = ``;
if (event.requestContext.http.method === "POST") {
@AbeEstrada
AbeEstrada / gist:382d2fdd9ae41e75a81c9d2416745485
Last active April 17, 2022 02:01
macOS: Disable Chrome CORS
open -a "Google Chrome" --args --user-data-dir="/tmp/chrome_dev_test" --disable-web-security
console.log(JSON.stringify(data ?? null, null, 2))
[...Array(10).keys()]
const sleep = ms => new Promise(res => setTimeout(res, ms));
const sum = arr => arr.reduce((sum, n) => sum + n, 0)
const avg = arr => sum(arr) / arr.length
@AbeEstrada
AbeEstrada / axiosDownloadImage.js
Created April 12, 2022 21:33
Node axios download image
import { writeFile } from "fs/promises";
import axios from "axios";
const main = async () => {
try {
const response = await axios.get(`${FILE_URL}`, { responseType: "arraybuffer" });
try {
await writeFile(`./${FILE_NAME}.jpg`, response.data);
} catch(err) {
console.log(err);
const formatDate = (date) =>
`${date.getFullYear()}/${String(date.getMonth() + 1).padStart(2, "0")}/${String(date.getDate()).padStart(2, "0")} ${String(date.getHours()).padStart(2, "0")}:${String(date.getMinutes()).padStart(2, "0")}:${String(date.getSeconds()).padStart(2, "0")}`;
@AbeEstrada
AbeEstrada / last.sh
Created January 22, 2022 03:25
ffmpeg: get last frame from video
ffmpeg -sseof -3 -i input.mp4 -update 1 -q:v 1 last.jpg
@AbeEstrada
AbeEstrada / first.sh
Created January 22, 2022 03:11
ffmpeg: get first frame from video
ffmpeg -i input.mp4 -ss 00:00:00 -frames:v 1 first.jpg
@AbeEstrada
AbeEstrada / details.html
Created January 5, 2022 00:29
Hugo Shortcode: Details
{{ if .Inner }}<details {{ if eq (.Get "open") "true" }}open{{ end }}>
{{ with .Get "title" }}<summary>{{.}}</summary>{{ end }}
{{ .Inner | markdownify }}
</details>{{ end }}