Skip to content

Instantly share code, notes, and snippets.

@John07
John07 / iOS messages export.sh
Last active March 16, 2024 22:38
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.
# 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
# http://www.securitylearn.net/tag/deep-analysis-of-itunes-backup/
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 https://code.google.com/p/iphone-dataprotection/
@John07
John07 / HLS_dvr.sh
Last active June 10, 2023 10:40
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 https://github.com/alloy/terminal-notifier
# 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).
seconds=3600
# Date format for the recording file name
DATE=`date "+%d-%m-%y_%H-%M"`
# start ffmpeg recording
@John07
John07 / HLS_to_mp4
Last active October 11, 2020 01:20
Save/record HTTP Live Stream (short HLS, the kind of live stream that can be played by iOS devices) to disk as mp4 file
ffmpeg -re -i http://url.com/playlist.m3u8 -c copy -bsf:a aac_adtstoasc output.mp4
@John07
John07 / Short-URL converter.sh
Last active May 21, 2019 15:08
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
#!/bin/bash
URL=$(pbpaste)
curl "$URL" --insecure --write-out %{redirect_url}
@John07
John07 / open_chrome_tab_with_safari.applescript
Last active October 25, 2017 08:45
Open currently active Chrome tab with Safari. Can be used with Textexpander or as a service
--
-- open currently active Chrome tab with Safari
-- forked from https://gist.github.com/3151932 and https://gist.github.com/3153606
--
property theURL : ""
tell application "Google Chrome"
set theURL to URL of active tab of window 0
end tell
if appIsRunning("Safari") then
@John07
John07 / chapter_marks.sh
Created November 16, 2015 18:53
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
John07 / Instacast 2 favorites export.sh
Last active December 15, 2015 09:49
Export a list of your favorite podcast episodes from Instacast 2
# get the db.sqlite file from Instacast (e.g. with iExplorer 2 http://www.macroplant.com/downloads.php)
# copy it on your desktop and run
sqlite3 db.sqlite
.output instacast-favorites.txt
SELECT FEEDS.title, EPISODES.title, EPISODES.link, datetime(EPISODES.pubdate, 'unixepoch', 'localtime'), CONSUMABLES.guid
FROM CONSUMABLES
LEFT OUTER JOIN EPISODES on CONSUMABLES.guid = EPISODES.guid
LEFT OUTER JOIN FEEDS on EPISODES.feed_id = FEEDS.id
WHERE CONSUMABLES.starred = 1;
@John07
John07 / Wunderlist 2 sqlite Export.sh
Last active December 11, 2015 08:28
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 http://sqlitebrowser.sourceforge.net/. 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…
# 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
John07 / gist:3782405
Created September 25, 2012 14:51
wkpdf debug log
webView <WebView: 0x102050190> didCommitLoadForFrame <WebFrame: 0x1181b4bd0>
identifierForInitialRequest request: <NSMutableURLRequest https://plusone.google.com/_/apps-static/_/ss/plusone/ver=-yf4rtzu2qv6i/am=!QiLm8C5UadSNAbdIjAs/bf=BA/r=O/rs=AItRSTPBu5k2X1PY5oo7Zv2WE0tHa20H2g> dataSource: <WebDataSource: 0x11817bf90> (resource id: 165)
didFinishLoadingFromDataSource identifier: 151 dataSource: <WebDataSource: 0x11817bf90>
didFinishLoadingFromDataSource identifier: 159 dataSource: <WebDataSource: 0x118183e10>
webView <WebView: 0x102050190> didCommitLoadForFrame <WebFrame: 0x1181923f0>
webView <WebView: 0x102050190> didFinishLoadForFrame <WebFrame: 0x1181923f0>, parentFrame: <WebFrame: 0x1030ad4b0>
didFinishLoadingFromDataSource identifier: 150 dataSource: <WebDataSource: 0x1181af6f0>
didFinishLoadingFromDataSource identifier: 149 dataSource: <WebDataSource: 0x10304a400>
webview <WebView: 0x102050190> didStartProvisionalLoadForFrame <WebFrame: 0x118168d50>
@John07
John07 / to_mediawiki.xsl
Created April 28, 2011 11:25
Convert Pentabarf schedule.xml to mediawiki table
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="text" indent="no" encoding="utf-8" />
<xsl:template match='text()|@*' />
<xsl:template match="event">
|-
| ? || ? || FOSSGIS2011-<xsl:value-of select="@id" />-<xsl:value-of select="normalize-space(language)" /><xsl:if test="not(normalize-space(language))">de</xsl:if>-<xsl:value-of select="slug" /> || <xsl:value-of select="title" /> || <xsl:for-each select="persons/person"><xsl:value-of select="." /><xsl:text> </xsl:text></xsl:for-each> || <xsl:value-of select="../../@date" /><xsl:text> </xsl:text><xsl:value-of select="start" /> || <xsl:value-of select="room" />
</xsl:template>