Skip to content

Instantly share code, notes, and snippets.

@rcarmo
rcarmo / ssdp.py
Last active September 24, 2018 12:49
Quick and dirty SSDP/UPNP/Mediaroom discovery
from http.client import HTTPResponse
from io import BytesIO
from config import log
from struct import pack
from socket import AF_INET, SOCK_DGRAM, INADDR_ANY, IPPROTO_IP, IPPROTO_UDP, IP_ADD_MEMBERSHIP, IP_MULTICAST_TTL, SOL_SOCKET, SO_REUSEADDR, SO_REUSEPORT, getaddrinfo, socket, setdefaulttimeout, inet_pton, timeout as SocketTimeout
from utils import etree_to_dict
from xml.etree import ElementTree
from time import time
from dateutil.parser import parse as parse_date
@rcarmo
rcarmo / azds-osx-setup.sh
Last active August 8, 2018 16:23
Set up Azure Dev Spaces on Mac without sudo
#!/bin/bash
info() { echo "[INFO] $*" ; }
fatal() { echo "[FATAL] $*" ; exit 1 ; }
AZDS_SRC="https://azuredevspacestools.blob.core.windows.net/azdssetup"
AZDS_ZIP=AzdsCliMacOSX.zip
AZDS_LIB="$HOME/Library/Azure/lib/azds-cli"
AZDS_BIN="$HOME/Library/Azure/bin/azds"
KUBECTL_PATH="$AZDS_LIB/kubectl/osx/kubectl"
@rcarmo
rcarmo / pronto2broadlink.py
Last active April 12, 2018 02:10 — forked from appden/pronto2broadlink.py
Convert Pronto IR hex codes to LIRC pulses then Broadlink packets compatible with python-broadlink
@rcarmo
rcarmo / rPi3-ap-setup.sh
Last active September 25, 2017 14:10 — forked from Lewiscowles1986/rPi3-ap-setup.sh
Raspberry Pi 3 access-point-setup
#!/bin/bash
#
# Tweaked for Ubuntu
#
if [ "$EUID" -ne 0 ]
then echo "Must be root"
exit
fi
@rcarmo
rcarmo / webarchive.js
Created August 18, 2017 11:53
ES6 script for creating web site snapshots in .webarchive format (WIP)
const bplist = require('bplist-creator'),
request = require('request'),
xpath = require('xpath'),
dom = require('xmldom').DOMParser,
url = require('url'),
fs = require('fs');
const USER_AGENT = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.1 Safari/603.1.30',
ACCEPT_HEADERS = {
@rcarmo
rcarmo / puppeteer.js
Last active January 10, 2022 03:49
Trying to get a single-page PDF screenshot out of puppeteer
const puppeteer = require('puppeteer');
function sleep(ms){
return new Promise(resolve=>{
setTimeout(resolve,ms)
})
}
(async() => {
@rcarmo
rcarmo / 0-monitor.py
Last active November 21, 2018 12:10
EnviroPHAT events to Azure IoT Hub, with Stream Analytics output to Azure Data Lake and PowerBI
#!/usr/bin/env python
# Minimalist environmental data logger to Azure IoT Hub
# Rui Carmo, November 2018
from envirophat import light, motion, weather, leds
from base64 import b64encode, b64decode
from hashlib import sha256
from time import time, sleep
from urllib import quote_plus, urlencode
@rcarmo
rcarmo / aiohttp-server.py
Created February 25, 2017 22:04 — forked from gdamjan/aiohttp-server.py
Example: asyncio and aiohttp, handling longpoll, eventsource and websocket requests with a queue and background workers
from aiohttp import web
from threading import Thread
import asyncio
import time, uuid
loop = asyncio.get_event_loop()
def long_blocking_thing(sleep):
time.sleep(sleep)
return 42
@rcarmo
rcarmo / gradient.py
Last active July 30, 2018 17:40
Elegant Python RGB/RGBA multi-step linear gradients with generators
#!/usr/bin/env python3
from itertools import tee
# colors are floating-point 3-element tuples (doing RGBA is a matter of setting the component count)
def poly_gradient(colors, steps, components=3):
def linear_gradient(start, finish, substeps):
yield start
for i in range(1, substeps):
@rcarmo
rcarmo / *bigcartel.slack.com*
Created October 20, 2016 19:06 — forked from alexparker/*bigcartel.slack.com*
UserScript for toggling slack sidebar
var sideBar = $('#col_channels_bg').is(':visible');
$(window).on('keypress', function(e) {
// uses cmd+b
if (e.metaKey && e.charCode == 98) {
var display = sideBar ? 'none' : 'initial';
var left = sideBar ? 0 : '';
$('#col_channels_bg, #col_channels').css('display', display);
$('#messages_container').css('margin-left', left);
$('#footer').css('left', left);