Skip to content

Instantly share code, notes, and snippets.

View alexwlchan's full-sized avatar

Alex Chan alexwlchan

View GitHub Profile
@alexwlchan
alexwlchan / myurlparse.py
Created August 30, 2016 20:33
Helper functions for dealing with query strings in URLs
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
"""
Utility functions for dealing with URL query strings in Python,
i.e., URLs of the form
http://example.net?field1=value1&field2=value2
This module includes a pair of helper functions: one for getting the values
associated with a particular field; another for setting the query string
#!/usr/bin/env python3
# -*- encoding: utf-8 -*-
"""
download_files.py
~~~~~~~~~~~~~~~~~
This is a file downloader for Python with a few special features:
* If the user doesn't supply a filename, try to infer a filename and
file extension from the URL.
@alexwlchan
alexwlchan / settern_rss.py
Created February 14, 2016 08:44
Python script for creating a per-author RSS feed from iMore
#!/usr/bin/env python
"""
This script can be used to get a per-author RSS feed on iMore.com. It will try to
cache the entries, so the last 40 entries from an author will show up, even if
they're no longer in the main feed.
To invoke, just call this script at the command line:
python settern_rss.py
@alexwlchan
alexwlchan / spoilerrific.js
Last active January 8, 2016 21:58
Opt-in to spoilers on SFF.SE questions with particular tags
// ==UserScript==
// @name SFF.SE Show spoilers on questions with particular tags
// @namespace http://tampermonkey.net/
// @version 1.0
// @description Show all spoilers on SFF.SE questions with specified tags
// @author alexwlchan
// @match *://scifi.stackexchange.com/questions/*
// @match *://meta.scifi.stackexchange.com/questions/*
// @grant none
// ==/UserScript==
@alexwlchan
alexwlchan / README.md
Created December 10, 2015 08:33
drangReader – Python scripts for a simple RSS reader

drangreader

This is a set of scripts for aggregating RSS feeds. It's based on a script originally written by Dr. Drang: http://leancrew.com/all-this/2015/11/simpler-syndication/

Installation

Download all the files from this Gist. Put them all in a directory, create a virtualenv and install requirements:

@alexwlchan
alexwlchan / finduntaggedposts.py
Last active July 5, 2022 01:18
A Python script for finding untagged posts on Tumblr. See http://alexwlchan.net/2013/08/untagged-tumblr-posts/
#!/usr/bin/env python
import urllib2
import json
HOSTNAME = "example.tumblr.com"
API_KEY = "abcdefg"
URL = "http://api.tumblr.com/v2/blog/{host}/posts?api_key={key}".format(host=HOSTNAME, key=API_KEY)
@alexwlchan
alexwlchan / safeutil.py
Last active July 18, 2023 07:39
Non-destructive file copying/moving in Python
#!/usr/bin/env python
"""
This is a script designed to be "safe" drop-in replacements for the
shutil move() and copyfile() functions.
These functions are safe because they should never overwrite an
existing file. In particular, if you try to move/copy to dst and
there's already a file at dst, these functions will attempt to copy to
a slightly different (but free) filename, to avoid accidental data loss.
@alexwlchan
alexwlchan / parse_healthkit.py
Created May 26, 2015 19:37
A script for making the XML exports from the iOS Health app more human-friendly
#!/usr/bin/env python
"""
A quick script for tidying up data from the HealthKit export file.
To get an export file:
1) Open the Health app on iOS
2) Under "Health Data", select "All"
3) Use the share button to get a copy of your data in XML format
This script allows you to get data for one particular value, and turn it into
@alexwlchan
alexwlchan / elapsed.py
Created December 22, 2014 20:36
Prints human-readable, friendly strings to measure elapsed time
#!/usr/bin/python
"""elapsed.py - a script for providing a human-readable string of how much time
has elapsed since a given date, implemented only using the standard library.
Modelled on the style of dates used on Stack Overflow posts.
"""
from datetime import datetime, timedelta
def print_date(date, incl_year=True, short_months=True):
"""Prints a datetime object as a full date, stripping off any leading
@alexwlchan
alexwlchan / acronyms.py
Last active August 29, 2015 14:11
A command-line tool for managing acronyms
#!/usr/bin/python
"""A script for managing a dictionary of acronyms. For context, see the
associated blog post: http://alexwlchan.net/2014/12/acronyms/
Invoke with the -h or --help flag for a usage message:
$ ./acronyms.py -h
Invoke with the -a or --add flag to add an acronym: