Skip to content

Instantly share code, notes, and snippets.

@ntrrgc
ntrrgc / ssh.py
Created May 11, 2014 16:07
Run commands with ssh even if arguments contain spaces
import subprocess
import shlex
if hasattr(shlex, "quote"):
# Python 3
shquote = shlex.quote
else:
# Backport of shlex.quote for Python 2
import re
_find_unsafe = re.compile(r'[^\w@%+=:,./-]').search
@ntrrgc
ntrrgc / event.py
Created June 9, 2014 23:18
Event library (unreliable outside of CPython)
# Minimal library to create events
import inspect
from weakref import ref
from weakmethod import WeakMethod
class Event(object):
def __init__(self, handlers=[]):
self.handlers = set(handlers)
@ntrrgc
ntrrgc / fetch-gfonts
Last active August 29, 2015 14:06
Download Google fonts
#!/usr/bin/python3
# TODO: Does not support woff2 fonts (as served for Chrome)
import os, sys, re
import requests
def fetch_fonts(input_css, font_path="fonts"):
output_css = []
for line in input_css.split("\n"):
if "https://" in line:
name = re.match(r".*local\('(.*?)'\).*", line).groups()[0]
@ntrrgc
ntrrgc / mpris2
Created December 19, 2014 03:31
Simple MPRIS2 controller for use with hotkeys
#!/usr/bin/python
import sys
import dbus
session_bus = dbus.SessionBus()
players = [x for x in session_bus.list_names()
if x.startswith('org.mpris.MediaPlayer2')]
if len(players) < 0:
print("No players found! :(", file=sys.stderr)
sys.exit(1)
@ntrrgc
ntrrgc / request_cert.sh
Created December 29, 2014 18:56
Script to request and install renewed StartSSL certificates
#!/bin/bash
set -eu
if [ "$#" -ne 1 ]; then
echo "Usage: $0 domain.example.com"
echo
echo "Generates a private key and a default CSR which you can send to" \
"your CA. It prompts later for the certificate and stores it in a" \
"reasonable place."
echo "Tested only with StartSSL."
exit 1
@ntrrgc
ntrrgc / tls-ugly-hack.js
Created January 8, 2015 02:59
Patch node's TLS module to skip certificate name check
// This is a modified version of node's built-in tls.js patched not to check
// the server hostname against its certificate.
//
// node 0.10 does not support this in a clean way.
// This will be allowed in node 0.12 setting a checkServerIdentity function
// in the HTTPS agent config.
function checkServerIdentity(host, cert) {
return true;
}
@ntrrgc
ntrrgc / open-pdf.html
Created May 11, 2015 21:48
Bookmarklet to open embedded PDF in iPad
<html>
<head>
<title>Open PDF</title>
</head>
<body>
javascript:location.href=document.querySelector('object[type="application/pdf"]').getAttribute('data')
</body>
</html>
@ntrrgc
ntrrgc / keywords.py
Created May 17, 2015 19:00
Rank keyword density
import sys
import nltk
import nltk.tokenize.regexp
import nltk.stem.snowball
import nltk.corpus
import requests
import lxml.html
lang = 'spanish'
def get_text():
@ntrrgc
ntrrgc / codec.py
Created May 27, 2015 22:59
Digole OLED monochrome video codec (accepts animated GIF or static images)
#encoding: utf-8
import sys
import time
import PIL.Image
def marshal_image(image):
data = image.convert('1')
w, h = data.size
out = bytearray()
@ntrrgc
ntrrgc / palette-image
Created June 4, 2015 17:30
Convert colon separated hex color strings into palette images and vice versa
#!/usr/bin/python
import sys
from PIL import Image, ImageDraw, ImageColor
from argparse import ArgumentParser
cell_w = cell_h = 40
def color_to_hex(color):
return '#' + ''.join('%02x' % x for x in color)