Skip to content

Instantly share code, notes, and snippets.

View willjobs's full-sized avatar

Will Jobs willjobs

View GitHub Profile
@willjobs
willjobs / medium-public-comments-01.py
Created July 25, 2021 16:03
medium-public-comments-01
from comments_downloader import CommentsDownloader:
downloader = CommentsDownloader(api_key="DEMO_KEY")
@willjobs
willjobs / photo_exif_rotate.py
Created January 31, 2021 02:26
Autorotate images based on EXIF data (iOS)
##############################
# Script to autorotate all images in a directory based on EXIF data.
# Background: iOS devices have a bad habit of saving images with a rotation stored in the
# EXIF data, which is ignored by other applications, resulting in these images
# looking rotated 90 degrees or 270 degrees in many apps. This fixes that.
## CAREFUL - this removes the EXIF information like date taken
##############################
from PIL import Image, ExifTags
import glob
import os.path
@willjobs
willjobs / python_subdir_import.py
Last active January 31, 2021 02:23
Python Relative Imports
# allows importing of ModuleB from ModuleA within the same subdirectory, when the code is run from a parent directory
# see https://stackoverflow.com/a/49375740/1102199
import os
import sys
sys.path.append(os.path.dirname(os.path.realpath(__file__)))
@willjobs
willjobs / Excel Comparison.txt
Last active January 31, 2021 02:22
Custom Excel Functions to compare two strings
Public Function countDifferences(str1 As String, str2 As String) As Integer
Dim i As Integer
If Len(str1) <> Len(str2) Then
countDifferences = -1
Exit Function
End If
countDifferences = 0
For i = 1 To Len(str1)
If Mid(str1, i, 1) <> Mid(str2, i, 1) Then
@willjobs
willjobs / gpx_merge.py
Last active January 27, 2021 22:05
Merge (and possibly rename) GPX files
########
# This code is useful for combining many GPX files, each with a single <trk>, into
# a single GPX file containing one <trk> that has one <trkseg> per input GPX file.
#
# This is necessary for animating GPX files using GPX Animator: https://gpx-animator.app/
########
import shutil
import glob
from datetime import datetime

Software Preferences (and why)

This is meant to be an ongoing list of software alternatives I've evaluated, the pros and cons of each, and which I ultimately favored. It's mostly meant to remind me why I did or didn't switch so that I don't waste time re-evaluating in the future when I get annoyed by a bug or UI issue in the one that I chose. In case this helps others, I've posted it here too.

GoodNotes vs Notability

Winner: GoodNotes, for now

GoodNotes
@willjobs
willjobs / Extract_PDF.py
Last active March 27, 2020 20:21
Extract PDF - Python script to extract pages of PDF into separate files
import os
from PyPDF2 import PdfFileReader, PdfFileWriter
orig = input("enter path to file:\n")
pages_at_a_time = int(input('how many pages per file?\n'))
path, filename = os.path.split(orig)
path += '\\split'
filename = filename[:-4]
@willjobs
willjobs / magoosh_gre_time.js
Created November 29, 2017 08:10
JS code to summarize the amount of video content on the Magoosh GRE site (https://gre.magoosh.com/lessons)
overall_sum = 0;
$('.thin.list-unstyled.lesson-list-condensed').each(function(idx, el) {
sum = 0;
$(el).find('.lesson-item').each(
function(idx2, inner_el) {
time = $(inner_el).find('.lesson-item-subtitle').text();
time = time.split(':');
if(time.length > 1) {
@willjobs
willjobs / getMonth.gs
Created October 11, 2017 05:24
Google Sheets custom function to get month name (either full or 3-character abbreviation), given an integer
function getMonthText(val, short) {
if(val !== parseInt(val,10)) {
return "";
}
if(val < 1 || val > 12) {
return "";
}
var x = "";
switch(val) {
case 1:
@willjobs
willjobs / Fastmail-tampermonkey.txt
Last active October 2, 2017 04:14
Tampermonkey/greasemonkey script to fix FastMail's email body width (which is set to 938px) to fit on the page
// ==UserScript==
// @name Fastmail - email body width
// @description Fix width of emails being wider than screen
// @author Will Jobs
// @id fastmail-emailwidth
// @include https://www.fastmail.com/mail/*
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js
// @require https://gist.github.com/raw/2625891/waitForKeyElements.js
// @grant GM_addStyle
// ==/UserScript==