Skip to content

Instantly share code, notes, and snippets.

@internetimagery
internetimagery / collector.py
Last active October 14, 2025 08:58
Collect tokens for the backs of exported creature cards
# Make cards out of exported lists
# https://5e.tools/makecards.html
# Export then pass to tool to add background images
import json
import argparse
import unicodedata
import urllib.parse
import urllib.request
@internetimagery
internetimagery / pew.py
Last active July 21, 2025 09:49
loading animation
import time
import sys
anim = (
"\r| |",
"\r| |",
"\r| |",
"\r| |",
"\r| |",
"\r} |",
@internetimagery
internetimagery / factory.py
Last active July 12, 2025 21:34
Separate factory from class
import dataclasses
class DataFactory(type):
def from_number(cls, num: int) -> "Data":
return cls(str(num))
@dataclasses.dataclass
class Data(metaclass=DataFactory):
value: str
@internetimagery
internetimagery / .vimrc
Last active September 4, 2025 06:29
Current vimrc base
" Install vim-plug with following command
" curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
" Then ':PlugInstall' to install them
" Set leader to space. This is set up before plugins are loaded.
let mapleader = " " " map leader to Space
" Declare plugins
call plug#begin()
@internetimagery
internetimagery / emoji.py
Last active October 27, 2024 08:35
Apply functions happily
from functools import partial
import builtins
class Emoji:
""" Execute functions with style """
__empty = object()
def __init__(self, left=__empty, right=__empty):
self.__left = left
self.__right = right
@internetimagery
internetimagery / range_expression.py
Last active April 24, 2023 11:20
Simple range expression parsing.
import re
def parse_compact_range(expression):
numbers = set()
for match_ in re.finditer(r"(?:(\d+)\s*\-\s*(\d+)|(\d+))\s*(?:,|$)", expression):
start, stop, exact = match_.group(1,2,3)
if exact is not None:
numbers.add(int(exact))
else:
begin, end = sorted(map(int, (start, stop)))
@internetimagery
internetimagery / git_annex_notes.md
Last active June 4, 2025 21:59
Git Annex Notes
@internetimagery
internetimagery / img_sync.py
Last active April 21, 2023 21:43
Extract thumbnail images from gpx files for gps usage.
import re
import os
import html
import shutil
import logging
import tempfile
from functools import partial
from threading import Lock
from urllib.request import urlopen, Request
@internetimagery
internetimagery / gevent_multiprocess.py
Last active September 22, 2022 11:05
Simple multiprocess with gevent
from multiprocessing import Pool as MPool, current_process
from gevent.threadpool import ThreadPool
from gevent.pool import Pool as GPool
from contextlib import closing
class ProcessPool(ThreadPool):
def __init__(self, procs, **kwargs):
super(ProcessPool, self).__init__(procs)
self._m_pool = MPool(procs, **kwargs)
from PyQt5 import QtWidgets, QtCore
import gevent
import random
import weakref
def getData(key):
data = "{}_{}_{}".format(key[0], key[1], random.choice("abcdefg"))
gevent.sleep(random.random() * 5 + 2)
return data