Skip to content

Instantly share code, notes, and snippets.

View epoz's full-sized avatar

Etienne Posthumus epoz

View GitHub Profile
@epoz
epoz / thumbs.py
Created April 4, 2019 15:04
Read a directory of images and convert them into a single sqlite3 db of thumbs
# sqlite> .schema
# CREATE TABLE thumbs(filename, data);
from PIL import Image
import os
from io import BytesIO
import sys
import sqlite3
from progress.bar import Bar
### Keybase proof
I hereby claim:
* I am epoz on github.
* I am epoz (https://keybase.io/epoz) on keybase.
* I have a public key ASAX-cAXJOiDTnX1CA73U80bpWL-sbX1XNsQGvWVi3BLZAo
To claim this, I am signing this object:
@epoz
epoz / uniq_ic.py
Created October 24, 2018 09:51
Make Iconclass notations unique for a given textbase file
import iconclass
import textbase
import sys
from progress.bar import Bar
d = textbase.parse(sys.argv[1])
bar = Bar('Processing', max=len(d))
def is_in_there(notation, notations):
@epoz
epoz / dbtxt_to_csv.py
Created October 19, 2018 11:42
Dumps a collection of dbtxt files to a single CSV file, including text of IC field expanded
from __future__ import print_function
# Export details from a collection of dmp files found at a certain path to a csv file
import os
import iconclass
import sys
from progress.bar import Bar
import textbase
print('Reading files...')
@epoz
epoz / example.py
Created October 12, 2018 14:32
Parse some XML files and get data example
import os
import xml.etree.ElementTree as ET
from progress.bar import Bar
buf = []
errors = []
def g(filepath, doc, path):
elem = doc.find(path)
if elem is None:
@epoz
epoz / planodo.py
Last active June 23, 2021 11:54
Create a huge tiled (potentially gigapixel) image from a bunch of loose images.
import os
import sys
import re
import math
import random
import PIL.Image
import warnings
import json
from progress.bar import Bar
import textbase
@epoz
epoz / expand.py
Created September 14, 2015 10:08
How to expand texts for a given set of ICONCLASS codes
codes = ['31D11222', '34B11', '45(+26)', '45C1', '45D12', '48C7341']
codes = [urllib.quote(x) for x in codes]
paths = set()
for obj in json.loads(urllib2.urlopen('http://iconclass.org/json/?notation='+'&notation='.join(codes)).read()):
paths.update(obj.get('p'))
paths.add(obj.get('n'))
txts = []
kws = set()
for p in json.loads(urllib2.urlopen('http://iconclass.org/json/?notation='+'&notation='.join(paths)).read()):
txts.append(p.get('txt').get('de', u''))
@epoz
epoz / gist:f4a1024d89616df6fac5
Last active August 29, 2015 14:03
Elasticsearch Python client adaptor to be used with Django Paginator
class ElasticSearchPaginatorListException(Exception):
pass
class ElasticSearchPaginatorList(object):
def __init__(self, client, *args, **kwargs):
self.client = client
self.args = args
self.kwargs = kwargs
self._count = None
@epoz
epoz / old_planodo.py
Last active March 22, 2016 11:20
Planodo turn a bunch of files into a big zoomable image
#!./bin/python
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import A4
from reportlab.lib.units import cm
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
from PIL import Image
import PIL
import os
import json
# Working out number of quires from a STCN collation
examples = [
{coll:'[*]2 2*-4*4 A-3Q4 2*2 `︠LO`3Q2 3R-5S4 5T2 5V-5Y4, 2A-G4 2H2 2I4 (3Q4 blank; lacks 3*4, blank?)',
url:'http://picarta.pica.nl/xslt/DB=3.11/XMLPRS=Y/PPN?PPN=318093766',
req:121,
# A-Z 23, A-Z 23, A-Q 16, Q 1, R-Z 7, A-Z 23, A-S 18, T 1, V-Y 3, A-G 7, H 1, I 1,
},
{coll:'A-V8 W8 X-Z8', # if W found, then noted 'loose' like A-V8 W8 X-Z8
req:24}
]