Skip to content

Instantly share code, notes, and snippets.

Brad Beattie bradbeattie

View GitHub Profile
@bradbeattie
bradbeattie / throttle.py
Last active Jun 24, 2016
Demonstration of cache-based action throttling
View throttle.py
import memcache
from hashlib import sha1
from datetime import datetime
cache = memcache.Client(["127.0.0.1:11211"])
class ActionThrottled(Exception):
pass
View ast_parser.py
import ast
import operator as op
# Supported tokens and their operators
operators = {
ast.Add: op.add,
ast.Sub: op.sub,
ast.Mult: op.mul,
ast.Div: op.truediv,
}
@bradbeattie
bradbeattie / meetupfilter.js
Last active May 1, 2016
Filters meetup.com pages based on a given regex of linked member profiles. Useful for finding language exchange partners.
View meetupfilter.js
/* Initial definitions */
var regex_positive = /(france|french|paris|bonjour|salut|montr.al)/i;
var regex_negative = /(china|korea|spain|japan|taiwan|venezuela|costa rica|chile|vietnam|russia|honduras|brazil|iran|m.xico|czech|sweden|saudi|turkey|germany|india|argentina|colombia|netherlands|philippines)/i;
var now = new Date().getTime();
var ten_seconds = 10 * 1000;
var one_day = 86400 * 1000;
var one_week = one_day * 7;
/* Clear junk from the page */
jQuery("#chapterHeader, p").remove();
@bradbeattie
bradbeattie / translate_with_wiktionary.py
Last active Dec 14, 2015
Translates a given set of French words into English along with English definitions. Shouldn't be to difficult to adapt to other languages. Makes use of a simple two-column sqlite database to cache the API responses. Ignores duplicate words, obsolete words, etc.
View translate_with_wiktionary.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
from bs4 import BeautifulSoup
import random
import collections
import argparse
import json
import re
import requests
import sqlite3
@bradbeattie
bradbeattie / ted2csv.py
Last active Dec 10, 2015
Extracts a TED talk in two languages and creates a CSV of matching translated strings for flashcard use. Some potentially mistranslated entries will be stripped. Download the desired parallel corpus here: https://wit3.fbk.eu/mt.php?release=2012-02
View ted2csv.py
#!/usr/bin/python
import unicodecsv
import sys
import argparse
import re
parser = argparse.ArgumentParser()
parser.add_argument("source", help="Source language file")
parser.add_argument("target", help="Target language file")
args = parser.parse_args()
@bradbeattie
bradbeattie / extract_subtitles.py
Created Dec 15, 2012
This is some code I've been using to extract subtitles into CSV pairs for the purposes of language flashcards. The target encoding is hardcoded to iso-8859-1 and it requires both subtitle files to use the same timings, but otherwise it works just fine. Modified to handle multi-line sentences better. It drops some admittedly, but the flashcard qu…
View extract_subtitles.py
#!/usr/bin/python
import unicodecsv
import argparse
import sys
import re
from pysrt import SubRipFile
# Determine which languages to import
parser = argparse.ArgumentParser()
parser.add_argument("source", help="source language file to parse")
@bradbeattie
bradbeattie / Steam Reviews Javascript
Last active Sep 30, 2015
A script to add the most helpful Steam review to the front page
View Steam Reviews Javascript
// Initial definitions
var now = new Date().getTime();
var ten_seconds = 10 * 1000;
var one_day = 86400 * 1000;
var one_week = one_day * 7;
// Remove any pre-existing summary elements
jQuery(".summary-element").remove();
@bradbeattie
bradbeattie / prison_parser
Last active Aug 29, 2015
Parse and modify prison architect save files
View prison_parser
# These functions will allow you to
# - Read in Prison Architect save files
# - Modify the read content
# - Save content back into Prison Architect save file formats
import re
from collections import OrderedDict
from pprint import PrettyPrinter
@bradbeattie
bradbeattie / gist:b409e1594084027581f5
Created Jun 27, 2014
Show the effect of different decaying averages
View gist:b409e1594084027581f5
import random
import math
multipliers = (0.5, 0.8, 0.95, 0.99, 0.995)
values = [1] * len(multipliers)
for x in xrange(400):
numberline = ["-"] * 101
for index, multiplier in enumerate(multipliers):
if index == 0:
You can’t perform that action at this time.