Skip to content

Instantly share code, notes, and snippets.

View avrahamappel's full-sized avatar

Avraham Appel avrahamappel

View GitHub Profile
@avrahamappel
avrahamappel / dl-tat-video.sh
Created April 11, 2025 17:16
Download TorahAnytime video
read url && response=$(curl -s "$(echo $url | sed -E 's@(www\.)[email protected]@')") && video_url=$(echo "$response" | jq -r '.video_url') && title=$(echo "$response" | jq -r '.title') && extension="${video_url##*.}" && filename="${title}.${extension}" && curl "$video_url" -o "$filename"
@avrahamappel
avrahamappel / test.sh
Last active December 2, 2024 21:12
Snippet to test nixpkgs for failing bundix with git gems
#!/bin/bash
PAYROLL=~/humility/applications/payroll
if [[ -f gemset.nix ]]; then
rm gemset.nix
fi
nix run .#bundix --log-format bar-with-logs -- \
--lockfile=$PAYROLL/Gemfile.test.lock \
--gemfile=$PAYROLL/Gemfile
@avrahamappel
avrahamappel / album.conf
Last active April 9, 2025 02:11
yt-dlp configuration for downloading music with metadata and cover art
# Download in m4a format
--format="ba"
--extract-audio
--audio-format m4a
# Continue downloading if the download failed previously
--continue
--no-overwrites
# Set track number, album name, and artist name metadata tags
@avrahamappel
avrahamappel / get_total_word_count.js
Last active September 6, 2024 18:41
Get total read word count for language
lang = location.pathname.split('/')[1];
await fetch(`https://readlang.com/api/books?language=${lang}&firstLanguage=en&tag=completed`, {
"credentials": "include",
"headers": {
"Accept": "application/json, text/javascript, */*; q=0.01",
"X-Requested-With": "XMLHttpRequest",
},
"referrer": `https://readlang.com/${lang}/library`,
"method": "GET",
"mode": "cors"
@avrahamappel
avrahamappel / get_smallest_story.js
Last active October 9, 2024 16:59
Get the smallest story from ReadLang.com for your current language
(async () => {
lang = location.pathname.split('/')[1];
selects = document.querySelectorAll('.customSelect');
level = `${selects[1].value}-${selects[2].value}`;
document.querySelector('span.customSelect').click();
setTimeout(async () => {
categories = Array.from(document.querySelectorAll('.multiSelectDropdown input')).filter((node) => node.checked).map(node => node.nextSibling.nextSibling.nodeValue).join("|");
bookUrl = await fetch('https://readlang.com/api/books?' + new URLSearchParams({
language: lang,
firstLanguage: 'en',
# Make sure these lines are added to your /etc/zshrc
# Enable Nix daemon
if [ -e '/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh' ]; then
source '/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh'
fi
@avrahamappel
avrahamappel / nonograms_starter.js
Last active March 6, 2024 20:53
Nonogram starter
// Calculate the overlap for a single row
const row = (len, nums) => {
let overlap = len - (nums.reduce((a, n) => a + n) + nums.length - 1);
return nums.some((n) => n > overlap) ? overlap : Infinity;
};
// Calculate the overlap for many rows
const rows = (len, rows) =>
rows.map((nums) => ({
@avrahamappel
avrahamappel / fatmount.txt
Created March 28, 2023 03:48
Manually mounting FAT32 drive on MacOS Ventura
This is where I mounted my FAT32 USB drive on MacOS Ventura when it didn't want to automatically.
Had to run this command:
```
sudo mount -t msdos <device> ~/fat_mount
```
<device> is obtainable by running
@avrahamappel
avrahamappel / uri-lati-dl.sh
Last active March 16, 2023 23:25
Download shiur
#!/usr/bin/env nix-shell
#! nix-shell -i bash -p yt-dlp
#
# Download shiur from [Rabbi Uri Lati's YouTube channel](https://www.youtube.com/@UriLati) and convert it into something
# [my phone's podcast player](https://www.kaiostech.com/store/apps/?bundle_id=com.kaiostech.podkast) can use
usage () {
echo "USAGE:"
echo "uri-lati-dl.sh <url>"
}
@avrahamappel
avrahamappel / php-macros.vim
Created July 26, 2022 19:49
Some vim macros for PHP
# Boilerplate for PHP class
let @p='i%dawO<?"
onamespaceJ:s~Äku
/wdf\....~AÄkb {}F\s;
class '
# Turn a test name comment into a snake-cased class method (PHPUnit)
let @t=':s#[^/ ]\zs #_#g
^ciwpublic functionA()o{