Skip to content

Instantly share code, notes, and snippets.

@frankgeerlings
frankgeerlings / scanner-pdf-prep.py
Created September 9, 2021 07:20
Bundle, rectify and OCR (sometimes poorly) scanned multi-page PDFs in current directory
import os, subprocess
from glob import glob
from pprint import pprint
_, directories, files = next(os.walk('.'))
def raad_taal_en_titel(directory):
split = directory.split(' ', 1)
if len(split) is 2 and split[0] in ['eng', 'deu', 'nld']:
@frankgeerlings
frankgeerlings / vinkje-wta.py
Created April 19, 2018 07:29
Een script om de verwerking van de tennisvrouwencompetitie te vereenvoudigen
import pywikibot, mwparserfromhell, re
from pprint import pprint
sourcepage = 'Gebruiker:Vinkje83/WTA150'
class Dame:
def __init__(self, rij):
nummer, speelster, punten, verandering = rij._contents.nodes
self.nieuwe_rangpositie = int(nummer.contents.strip_code().replace('. ', ''))
self.naam = speelster.contents.filter_wikilinks()[0].title
Species Link
Abies alba /2201
Abies concolor /2202
Abies grandis /2203
Abies koreana /8091
Abies nordmanniana /2204
Abies pinsapo /2205
Abies procera /2206
Abies veitchii /5000
Abutilon theophrasti /1650
@frankgeerlings
frankgeerlings / ing-creditcard-export.js
Last active December 30, 2017 14:16 — forked from rudiedirkx/ing-creditcard-export.js
Mijn ING creditcard statement export as text, including detail rows
javascript: (function(f, a) {
f = new Blob(
[
[].map.call(document.querySelectorAll('#dscardsdetailsandtransactions tr.riaf-datatable-contents, #dscardsdetailsandtransactions td.riaf-datatable-details-contents'),
tr => tr.querySelector('table') ? [].map.call(tr.querySelectorAll('tr'),
detail =>
' ' + detail.querySelector('td:first-of-type').textContent.trim() + ": " +
detail.querySelector('td:last-of-type').textContent.trim()
).join('\r\n')
: ["Datum: " + tr.querySelector('td.riaf-datatable-column-date').textContent.trim(),
@frankgeerlings
frankgeerlings / Opschonen infobox gemeente Finland.py
Created May 30, 2016 13:01
A bot run on dutch Wikipedia (nl.wikipedia.org)
def verwijderUitSjabloon(sjabloon, parameter):
if sjabloon.has_param(parameter):
sjabloon.remove(parameter)
def dealWithPage(page):
wikicode = mwparserfromhell.parse(page.text)
templates = wikicode.filter_templates()
infobox = [x for x in templates if x.name.matches('Infobox gemeente Finland')]
@frankgeerlings
frankgeerlings / potd.py
Created May 15, 2016 20:45
A way to easily translate Wikipedia POTD to a message suitable for Dutch wikipedia (which you will still have to do yourself)
#!/usr/bin/env python
from pywikibot import config2 as config
import sys, pywikibot, re
from datetime import date
from dateutil.parser import parse
if len(sys.argv) < 2:
today = date.today()
print ('Usage: %s %s' % (sys.argv[0], str(today)))
@frankgeerlings
frankgeerlings / kernartikelen.py
Created May 14, 2016 11:40
List the most popular articles on a Wikimedia instance over a given number of past days
from mwviews.api import PageviewsClient
import functools # Voor Python 3 compatibility
import itertools
days = 100
topmost = 10000
showtop = 100
p = PageviewsClient(10)
Jaartal Meting op 15-4-2016 Meting op 4-5-2016
2004 3 3
2005 6 6
2006 4 4
2007 29 28
2008 53 53
2009 30 30
2010 57 56
2011 35 35
2012 51 51
@frankgeerlings
frankgeerlings / ssh-config
Created January 18, 2016 08:17
This fixes CVE-2016-0777 and CVE-2016-0778 on your Mac
# http://undeadly.org/cgi?action=article&sid=20160114142733
# Put this in ~/.ssh/config
Host *
UseRoaming no
@frankgeerlings
frankgeerlings / keybase.md
Created January 16, 2015 18:50
My keybase.io proof of identity

Keybase proof

I hereby claim:

  • I am frankgeerlings on github.
  • I am frankgeerlings (https://keybase.io/frankgeerlings) on keybase.
  • I have a public key whose fingerprint is 91E7 11EE 229F 94B4 2444 1FB2 A7A6 F879 006D F9EB

To claim this, I am signing this object: