Skip to content

Instantly share code, notes, and snippets.

@apiarian
apiarian / eta
Created June 13, 2011 01:53
Prints the end time of the current QuickTime Player movie.
#! /bin/sh
if [[ `ps -A | grep QuickTime | grep -v grep -c` -eq 1 ]]; then
if [[ `osascript -e 'tell app "QuickTime Player" to count documents'` -gt 0 ]]; then
t=`osascript -e 'tell app "QuickTime Player" to current time of first document as integer'`
d=`osascript -e 'tell app "QuickTime Player" to duration of first document as integer'`
cur=`date +%s`
end=`echo $cur + $d - $t | bc`
date -r $end +%H:%M:%S
else
# update_timezones.py
# Aleksandr Pasechnik
#
# Goes through the Day One jounal and sets the Time Zone of each entry that
# doesn't already have one to the value of the *timezone* variable. Makes a
# backup copy of each entry it modified by adding a '.tzbak' to the filename.
# Ignores any entry that already has a '.tzbak' version.
#
# NOTE: base_dir may need to be adjusted to the correct Journal_dayone location
# NOTE: It is probably a good idea to have a full journal backup just in case
# generate_gif.py
# Aleksandr Pasechnik
#
# Creates an animated gif out of the photos found in a Day One journal
# based the first line of the entry ('Daily self portrai' in my case).
# Animated gifs are generated using imagemagick
import os
import plistlib
import subprocess
@apiarian
apiarian / views.py
Created July 23, 2013 13:58
A Django based Piwik -> StatusBoard bridge
# views.py
# Aleksandr Pasechnik
#
# A Django views.py function which bridges Piwik and StatusBoard
#
# Django: https://www.djangoproject.com
# Piwik: http://piwik.org
# StatusBoard: http://panic.com/statusboard/
# PiwikAPI: https://github.com/piwik/piwik-python-api
#
#! /usr/bin/env python
# Aleksandr Pasechnik
# Looks through the Day One journal and finds the latest entry that starts with
# the "Entry Start Text" provided on the command line. The script then asks for
# input, reading lines until it comes to one that contains just a single full
# stop "." . The script asks for confirmation and appends a new line followed
# by the entered text to the end of the entry.
#
# NOTE: the user is responsible for creating new entries as necessary,
#! /usr/bin/env python
# Aleksandr Pasechnik
# 2014-04-16
# Reads through the Safari Reading List for urls containing youtube.com
# Presents a reverse numbered list of the item titles
# Opens the selected item in Google Chrome
# Because Safari is currently introducing stutters into all youtube videos
import os
# move_entries.py
# Aleksandr Pasechnik
#
# Goes through the Day One journal and moves entries that start with text which
# matches the regular expresion search string to a new journal location. It
# also moves any associated photos. Day One doesn't currently support multiple
# journals, so this is currently only useful for archiving a specific subset of
# entries.
#
# NOTE: base_dir may need to be adjusted to the correct Journal_dayone location
@apiarian
apiarian / mailbot.py
Last active August 29, 2015 14:11
python3 email robot to be run periodically
#! /usr/bin/env python3
# mailbot.py is an email robot
#
# It connects to an IMAP mail server, looks at all of the messages,
# picks out the ones that have just a U or u in the Subject: header,
# scans them for all of the image attachments, saves them to a
# web-server accessible uploads folder, and replies to the message
# through the SMTP server with the URL(s) of the uploaded photos.
# The images are renamed to a UUID. Any message that got a reply is
# then deleted from the IMAP server.
#! /usr/bin/env python2
# update_TransmissionBT_resumes.py
#
# Goes through the Transmission resume/ directory and changes the destinations
# of the transfers from the old_location to the new_location. This assumes that
# the transfer directories have been mirrored perfectly from the old_location
# to the new_location. TransmissionBT must not be running while this script is
# executed. More information about the resume files can be found at
# https://trac.transmissionbt.com/wiki/ResumeFile . Uses the bencode library
# available on pypi.
#! /usr/bin/env python3
# http://www.wolframalpha.com/input/?i=1000+digits+of+pi
pi_str = '3.1415926535897932384626'\
'433832795028841971693993751058209'\
'749445923078164062862089986280348'\
'253421170679821480865132823066470'\
'938446095505822317253594081284811'\
'174502841027019385211055596446229'\
'489549303819644288109756659334461'\