Skip to content

Instantly share code, notes, and snippets.

Avatar

Jon Stroop jpstroop

  • Princeton University Library
  • Princeton, NJ
View GitHub Profile
@jpstroop
jpstroop / unwatch_all.py
Last active Mar 11, 2021
Unwatch all Github repositories.
View unwatch_all.py
#!/usr/bin/env python
#
# Unwatch from all Github repositories. Note that it will only work with up to
# 100 repos at a time (pagination is not implemented), so you may need to run
# more than once.
#
# Depends:
# requests : http://docs.python-requests.org/en/master/
#
# Output (to stdout):
@jpstroop
jpstroop / get_exif.py
Created Oct 23, 2016
Get EXIF, IPTC Metadata, etc. with Python & PIllow
View get_exif.py
from PIL import Image
from PIL.ExifTags import GPSTAGS
from PIL.ExifTags import TAGS
# Keys are listed here:
# https://github.com/python-pillow/Pillow/blob/master/PIL/ExifTags.py
def _map_key(k):
try:
return TAGS[k]
@jpstroop
jpstroop / dzi_to_iiif.py
Last active Oct 15, 2020
DZI syntax to IIIF
View dzi_to_iiif.py
# Take params from the DZI syntax and turn them into an IIIF request
#
# Copyright (C) 2009 CodePlex Foundation
# Copyright (C) 2010-2013 OpenSeadragon contributors
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# - Redistributions of source code must retain the above copyright notice,
@jpstroop
jpstroop / get_iso_langs.rb
Created Dec 6, 2013
Download the ISO 639-2 codes as RDF and convert to CSV
View get_iso_langs.rb
require 'rdf/rdfxml'
require 'csv'
# Gets the ISO639-2 languages from id.loc.gov and saves it as CSV.
SRC_URI="http://id.loc.gov/vocabulary/iso639-2.rdf"
MADS_LANGUAGE = RDF::URI.new("http://www.loc.gov/mads/rdf/v1#Language")
MADS_CODE = RDF::URI.new("http://www.loc.gov/mads/rdf/v1#code")
SAVE_AS = File.expand_path("../../../db/fixtures/iso639-2.csv", __FILE__)
@jpstroop
jpstroop / orient_image.sh
Last active May 22, 2018
Guess the orientation of an image using OCR and Spellcheck
View orient_image.sh
#!/bin/bash
# Script takes a single argument, which is a path in an image file.
# NOTE: this file will be replaced with the version that this script deems to be 'correct'
file=$1
TMP="/tmp/pulfa/img_harvester/rotation-calc"
# Clean up if there are files from the last run
# (leaving them around is handy for debugging)
if [ -d $TMP ]; then
View kill_double_spaces.sh
#!/bin/bash
for md_file in $(find . -name "*.md"); do
gsed -r -i -e 's/([A-z])\.\s{2,3}([A-Z])/\1. \2/g' $md_file
done
@jpstroop
jpstroop / 1_simple_manifest.rb
Last active Mar 20, 2018
Example: How to create a bare-bones IIIF Presentation Manifest w/ O'Sullivan
View 1_simple_manifest.rb
require 'iiif/presentation'
MY_IIIF_IMAGE_SERVER = 'http://libimages1.princeton.edu/loris/'
SOME_IIIF_IMAGES = [
{ id: 'pudl0001%2F4609321%2Fs42%2F00000006.jp2', label: "Page 1" },
{ id: 'pudl0001%2F4609321%2Fs42%2F00000007.jp2', label: "Page 2" },
{ id: 'pudl0001%2F4609321%2Fs42%2F00000008.jp2', label: "Page 3" },
{ id: 'pudl0001%2F4609321%2Fs42%2F00000009.jp2', label: "Page 4" },
{ id: 'pudl0001%2F4609321%2Fs42%2F00000010.jp2', label: "Page 5" }
]
@jpstroop
jpstroop / map.json
Last active Oct 12, 2017
IIIF canvasMap proposal
View map.json
{
"@context": "http://iiif.io/api/presentation/2/context.json",
"id": "https://plum.princeton.edu/concern/scanned_resources/pt722jw092/manifest",
"type": "sc:Manifest",
"label": [
"Reports of the Princeton University expeditions to Patagonia, 1896-1899 : J. B. Hatcher in charge"
],
"viewingHint": "paged",
"viewingDirection": "left-to-right",
"rendering": {
@jpstroop
jpstroop / tree_spec.md
Last active Feb 14, 2017
Archives/EAD Tree Navigation API spec
View tree_spec.md
View beach_image_workflow_proposal.md

Deprecated. Moved here: https://docs.google.com/document/d/1GY9_CfvFb5WCFOoSQ54DwzoMKPXmh5UrBgBuN5QXjUg/edit#

Proposed Flow

  1. Talk to RBSC cat.
  2. Enhace EAD w/ item level data from TEI. Including pudl0123 IDs temporarily
  3. Use TEI to EAD mapping to reorg. images to match new EAD (item level) components
  4. Remove temporary pudl0123 IDs from new EAD components
  5. Generate new PULFA METS and load EAD
  6. Migration New PULFA METS to Plum - Make sure EAD component ID is in dc:replaces
  7. Map Plum manifest URIs back to TEI