Skip to content

Instantly share code, notes, and snippets.

@celsowhite
celsowhite / alpha-mov-hevc.txt
Created June 20, 2024 10:41
Convert alpha mov to hevc using hevc_videotoolbox.
ffmpeg -i ~/desktop/Icon_alpha/Icon-3.mov -c:v hevc_videotoolbox -allow_sw 1 -alpha_quality 0.9 -tag:v hvc1 -q:v 35 -vf "scale=-1:720,premultiply=inplace=1" ~/desktop/boxes-compressed.mov
@celsowhite
celsowhite / first-frame-png.txt
Created June 19, 2024 20:58
Pull first frame of a video.
ffmpeg -i input.mov -vf "select=eq(n\,0)" -vframes 1 output.png
@celsowhite
celsowhite / alpha-mov-to-webm.txt
Last active June 19, 2024 20:25
Alpha .mov to Alpha .webm
ffmpeg -i input.mov -c:v libvpx-vp9 -pix_fmt yuva420p output.webm
@celsowhite
celsowhite / otto.liquid
Last active July 24, 2023 18:25
Otto snippet for generating a scheduled image placement.
{% comment %}
Data
---
otto_placement_name: Pass this to the snippet. The name is provided in the Otto app.
{% endcomment %}
{% liquid
assign otto_image_metafield = shop.metafields.otto-components[otto_placement_name].value
assign otto_image_file = shop.metafields.otto-files[otto_placement_name].value
assign otto_mobile_image_file_name = otto_placement_name | append: "-mobile"
@celsowhite
celsowhite / otto-code-reference.liquid
Last active September 23, 2023 18:11
Otto Code Reference
{%- comment -%}
Otto Metafield Data
---
Reference for integrating Otto into a theme.
{%- endcomment -%}
{% comment %}
Placement Name
---
The placement name is the name provided in the app. Given a placement name, you can reference all of it's data in metafields.
@celsowhite
celsowhite / get-elem-coords.js
Created March 21, 2023 16:55
Get the coordinates of an element relative to the top of the page.
export default function getElemCoords(elem) {
var box = elem.getBoundingClientRect();
var body = document.body;
var docEl = document.documentElement;
var scrollTop = window.pageYOffset || docEl.scrollTop || body.scrollTop;
var scrollLeft = window.pageXOffset || docEl.scrollLeft || body.scrollLeft;
var clientTop = docEl.clientTop || body.clientTop || 0;
export default function randomIntFromInterval(min, max) {
return Math.floor(Math.random() * (max - min + 1) + min)
}
const delay = (ms) => new Promise((r) => setTimeout(r, ms));
export default delay;
@celsowhite
celsowhite / json-to-csv.js
Last active September 23, 2022 13:54
Given a json file or json data output it's contents to a csv.
/*-----------------------
Imports
-----------------------*/
import fs from "fs";
import csv from "csvtojson";
import path from "path";
import { fileURLToPath } from "url";
import { stringify } from "csv";
/*-----------------------
@celsowhite
celsowhite / recursive-api-call.js
Last active September 23, 2022 13:48
Call an api recursively to gather all data across pages.
// Data
const data = [];
// Recursive function to call the api in paginated batches. Depending on the api may need a limiter.
async function getDataRecursive(page) {
// Query for assets at a certain page.
const response = await axios.get(
`${apiUrl}?page=${page}&limit=250`,
{
headers: {