Skip to content

Instantly share code, notes, and snippets.

John07 /
Created Nov 16, 2015
Read a podcast mp3 file and print a list of its chapter marks. Useful if your podcast client of choice doesn't yet support chapter marks
# read a podcast mp3 file and print a list of its chapter marks
ffprobe -v quiet -show_chapters -pretty -print_format csv *.mp3
# more readable, timestamps with seconds
ffprobe -v quiet -show_chapters -pretty -print_format csv *.mp3 | awk -F "," '{print $5 " " $7 " " $8}' | sed 's/\.[0-9]*\ /\ /g'
# more readable, timestamps without seconds
ffprobe -v quiet -show_chapters -pretty -print_format csv *.mp3 | awk -F "," '{print $5 " " $7 " " $8}' | sed 's/\:[0-9][0-9]\.[0-9]*\ /\ /g'
John07 / lightroom-exporting.sql
Last active Aug 29, 2015
An incomplete collection of ugly sqlite commands to export metadata from a Lightroom catalog. You can export Lightroom keywords, color labels, collections and more depending on your sqlite skills. Only tested with a Lightroom 2 catalog! (Note that this is not a complete script but rather a collection of commands that may need to be modified to run)
View lightroom-exporting.sql
sqlite3 backup-catalog.lrcat
.output export.txt
-- get all keywords with their id
SELECT id_local, name FROM AgLibraryKeyword;
-- get list of all files with keyword id 88890
SELECT stackParent_fileName, stackParent____colorLabels, rating FROM Adobe_images AS a JOIN AgLibraryKeywordImage AS b WHERE b.tag=88890 AND a.id_local=b.image;
-- get list of all files for keyword Bob
John07 /
Last active Aug 29, 2015
Count the number of open tasks in Wunderlist 2
# counts the number of open tasks in Wunderlist across all lists
# (pretty sure there's a more elegant way of doing this but works for now)
sqlite3 "/Users/USERNAME/Library/Containers/com.wunderkinder.wunderlistdesktop/Data/Library/Application Support/Wunderlist/WKModel.sqlite" "select ZTITLE from ZRESOURCE where ZOWNER1 is not 1 and ZPARENTTASK is null and ZCOMPLETEDAT is null" | wc -l
John07 /
Last active Jan 16, 2022
A small script to make recording http live streams (HLS, those streams that work on iOS devices) nicer on a Mac. Script records the stream for a defined period of time and sends the user notifications if anything goes wrong and once it's done.
# required: ffmpeg (e.g. from homebrew), terminal-notifier from
# you can schedule this with launchd to run e.g. weekly
# Specify in seconds how long the script should record (default here is 1 hour).
# Date format for the recording file name
DATE=`date "+%d-%m-%y_%H-%M"`
# start ffmpeg recording
John07 / HLS_to_mp4
Last active Oct 11, 2020
Save/record HTTP Live Stream (short HLS, the kind of live stream that can be played by iOS devices) to disk as mp4 file
View HLS_to_mp4
ffmpeg -re -i -c copy -bsf:a aac_adtstoasc output.mp4
John07 / Instacast 2 favorites
Last active Dec 15, 2015
Export a list of your favorite podcast episodes from Instacast 2
View Instacast 2 favorites
# get the db.sqlite file from Instacast (e.g. with iExplorer 2
# copy it on your desktop and run
sqlite3 db.sqlite
.output instacast-favorites.txt
SELECT FEEDS.title, EPISODES.title,, datetime(EPISODES.pubdate, 'unixepoch', 'localtime'), CONSUMABLES.guid
John07 / iOS messages
Last active Jul 20, 2020
Get all your messages (SMS and iMessage) from your iOS device without jailbreak or proprietary tools. Assumes you have an encrypted backup of your iOS device on your Mac.
View iOS messages
# Note: this is not a fully functioning script! You will need to edit paths and other variables manually and it's adviced to run each command manually one after another
# install dependencies
sudo ARCHFLAGS='-arch i386 -arch x86_64' easy_install pycrypto
sudo easy_install M2crypto construct progressbar
# clone the decrypt tool source code
# hg stands for mercurial
hg clone
John07 / Wunderlist 2 sqlite
Last active Dec 11, 2015
Wunderlist 2 drops the email and print export features and also creates a new database. It's still a sqlite database that you can look at with something like You can export data by running commands like the example below (make a local copy of the database to your desktop before if you're not familiar with s…
View Wunderlist 2 sqlite
# location of the Wunderlist 2 database (App Store version)
~/Library/Containers/com.wunderkinder.wunderlistdesktop/Data/Library/Application Support/Wunderlist/WKModel.sqlite
# example
# get title of all tasks in list 400
sqlite3 WKModel.sqlite "SELECT rowid, ZTITLE FROM ZRESOURCE WHERE ZTASKLIST = 400 ORDER BY rowid;"
John07 / Short-URL
Last active May 21, 2019
Tiny shell script for use with Textexpander to take a (Twitter) short URL and resolve it to the full URL Add it to Textexpander as a shell script, copy the shortened URL, type your Textexpander command and then the full URL will be pasted in
View Short-URL
curl "$URL" --insecure --write-out %{redirect_url}
John07 / open_chrome_tab_with_safari.applescript
Last active Oct 25, 2017
Open currently active Chrome tab with Safari. Can be used with Textexpander or as a service
View open_chrome_tab_with_safari.applescript
-- open currently active Chrome tab with Safari
-- forked from and
property theURL : ""
tell application "Google Chrome"
set theURL to URL of active tab of window 0
end tell
if appIsRunning("Safari") then