Skip to content

Commit

Permalink
Merge pull request #33 from internetarchive/add-helper
Browse files Browse the repository at this point in the history
Add helpers based on item mediatype
  • Loading branch information
glenrobson authored Oct 19, 2023
2 parents 46eff1e + ac64a1e commit feef73d
Show file tree
Hide file tree
Showing 7 changed files with 267 additions and 0 deletions.
27 changes: 27 additions & 0 deletions iiify/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
import hashlib
import os
import time
import requests
from flask import Flask, send_file, jsonify, abort, request, render_template, redirect
from flask_cors import CORS
from flask_caching import Cache
Expand All @@ -10,6 +11,8 @@
purify_domain, cantaloupe_resolver, create_collection3
from .configs import options, cors, approot, cache_root, media_root, \
cache_expr, version, image_server, cache_timeouts
from urllib.parse import quote


app = Flask(__name__)
# disabling sorting of the output json
Expand All @@ -19,6 +22,7 @@
cors = CORS(app) if cors else None
cache = Cache(app)

ARCHIVE = 'http://archive.org'

# cache.init_app(app)

Expand Down Expand Up @@ -77,6 +81,29 @@ def demo():
def documentation():
return render_template('docs/index.html', version=version)

@app.route('/iiif/helper/<identifier>/')
def helper(identifier):
domain = purify_domain(request.args.get('domain', request.url_root))
metadata = requests.get('%s/metadata/%s' % (ARCHIVE, identifier)).json()
mediatype = metadata['metadata']['mediatype']

if mediatype == "image":
try:
cantaloupe_id = cantaloupe_resolver(identifier)
esc_cantaloupe_id = quote(cantaloupe_id)
return render_template('helpers/image.html', identifier=identifier, cantaloupe_id=cantaloupe_id, esc_cantaloupe_id=esc_cantaloupe_id)
except ValueError:
abort(404)

elif mediatype == "audio" or mediatype == "etree":
return render_template('helpers/audio.html', identifier=identifier)
elif mediatype == "movies":
return render_template('helpers/movies.html', identifier=identifier)
elif mediatype == "texts":
return render_template('helpers/texts.html', identifier=identifier)
else:
return render_template('helpers/unknown.html', identifier=identifier)


@app.route('/iiif/<identifier>')
def view(identifier):
Expand Down
25 changes: 25 additions & 0 deletions iiify/templates/helper.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<!doctype html>
<html class="no-js" lang="">
<head>

<title>IIIF Image and Presentation API Helper</title>


<style type="text/css">

</style>
</head>
<body>

<p>The IA identifier is: {{ identifier }}</p>

<p>The IA item page URL is: <a href="https://archive.org/details/{{ identifier }}">https://archive.org/details/{{ identifier }}</a></p>

<p>The manifest URL is: <a href="{{ uri }}/manifest.json">{{ uri }}/manifest.json</a></p>

<p>The Image API URL for the full image is: <a href="https://iiif.archive.org/image/iiif/3/{{ cantaloupe_id }}/full/max/0/default.jpg">https://iiif.archive.org/image/iiif/3/{{ cantaloupe_id }}/full/max/0/default.jpg</a></p>

<p>The Image API info.json for the image is: <a href="https://iiif.archive.org/image/iiif/3/{{ cantaloupe_id }}/info.json">https://iiif.archive.org/image/iiif/3/{{ cantaloupe_id }}/info.json</a></p>

</body>
</html>
42 changes: 42 additions & 0 deletions iiify/templates/helpers/audio.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
<!doctype html>
<html class="no-js" lang="">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<title>IIIF Image and Presentation API Audio Helper</title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">

<link rel="apple-touch-icon" href="apple-touch-icon.png">
<!-- Place favicon.ico in the root directory -->
<link rel="stylesheet" type="text/css" href="{{ request.url_root}}static/styles/docs.css" media="all"/>
<script type="text/javascript" href="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0-alpha1/jquery.min.js"></script>
<script type="text/javascript" href="{{ request.url_root}}static/scripts/docs.js"></script>
</head>
<body>
<!--[if lt IE 8]>
<p class="browserupgrade">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</p>
<![endif]-->
<header>
<img class="center" src="{{ request.url_root }}static/images/ia.png"/>
</header>
<div id="container">

<h1>IIIF Presentation API Audio Helper</h1>

<p>The IA item page URL is: <a href="https://archive.org/details/{{ identifier }}">https://archive.org/details/{{ identifier }}</a></p>

<p>The IA identifier is: {{ identifier }}</p>

<p>The IIIF manifest URL is: <a href="https://iiif.archive.org/iiif/3/{{ identifier }}/manifest.json">https://iiif.archive.org/iiif/3/{{ identifier }}/manifest.json</a></p>

<h2>IIIF viewer options for this mediatype:</h2>
<ul>
<li><a href="https://uv-v4.netlify.app/#?manifest=https://iiif.archive.org/iiif/3/{{ identifier }}/manifest.json">Universal Viewer</a></li>
<li><a href="https://iiif-react-media-player.netlify.app//?iiif-content=https://iiif.archive.org/iiif/3/{{ identifier }}/manifest.json">Ramp</a></li>
<li><a href="https://iiif.aviaryplatform.com/player?manifest=https://iiif.archive.org/iiif/3/{{ identifier }}/manifest.json">Aviary</a></li>

</ul>

</body>
</html>
54 changes: 54 additions & 0 deletions iiify/templates/helpers/image.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
<!doctype html>
<html class="no-js" lang="">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<title>IIIF Image Helper</title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">

<link rel="apple-touch-icon" href="apple-touch-icon.png">
<!-- Place favicon.ico in the root directory -->
<link rel="stylesheet" type="text/css" href="{{ request.url_root}}static/styles/docs.css" media="all"/>
<script type="text/javascript" href="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0-alpha1/jquery.min.js"></script>
<script type="text/javascript" href="{{ request.url_root}}static/scripts/docs.js"></script>
</head>
<body>
<!--[if lt IE 8]>
<p class="browserupgrade">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</p>
<![endif]-->
<header>
<img class="center" src="{{ request.url_root }}static/images/ia.png"/>
</header>
<div id="container">

<h1>IIIF Image Helper</h1>

<p>The IA item page URL is: <a href="https://archive.org/details/{{ identifier }}">https://archive.org/details/{{ identifier }}</a></p>

<p>The IA identifier is: {{ identifier }}</p>

<p>The IIIF manifest URL is: <a href="https://iiif.archive.org/iiif/3/{{ identifier }}/manifest.json">https://iiif.archive.org/iiif/3/{{ identifier }}/manifest.json</a></p>

<p>The Image API URL for the full image is: <a href="https://iiif.archive.org/image/iiif/3/{{ cantaloupe_id }}/full/max/0/default.jpg">https://iiif.archive.org/image/iiif/3/{{ cantaloupe_id }}/full/max/0/default.jpg</a></p>

<p>The Image API info.json for the image is: <a href="https://iiif.archive.org/image/iiif/3/{{ cantaloupe_id }}/info.json">https://iiif.archive.org/image/iiif/3/{{ cantaloupe_id }}/info.json</a></p>

<h2>IIIF viewer options</h2>
<ul>
<li><a href="https://projectmirador.org/embed/?iiif-content=https://iiif.archive.org/iiif/3/{{ identifier }}/manifest.json">Mirador</a></li>
<li><a href="https://uv-v4.netlify.app/#?manifest=https://iiif.archive.org/iiif/3/{{ identifier }}/manifest.json">Universal Viewer</a></li>
<li><a href="https://samvera-labs.github.io/clover-iiif?iiif-content=https://iiif.archive.org/iiif/3/{{ identifier }}/manifest.json">Clover</a></li>

</ul>

<h2>IIIF image tool options</h2>
<ul>
<li><a href="https://iiifimage.link/#https://iiif.archive.org/image/iiif/3/{{ esc_cantaloupe_id }}/full/max/0/default.jpg">IIIF Image Inspector</a></li>
<li><a href="https://ncsu-libraries.github.io/iiif-crop-tool/?newUrl=https://iiif.archive.org/image/iiif/2/{{ esc_cantaloupe_id }}/full/full/0/default.jpg">NC State Image Cropper</a></li>
<li><a href="https://jbhoward-dublin.github.io/IIIF-imageManipulation/index.html?imageID=https://iiif.archive.org/image/iiif/3/{{ cantaloupe_id }}">IIIF Image Manipulation Tool</a></li>
<li><a href="https://glenrobson.github.io/CanvasFinder/">CanvasFinder (Note: paste in the manifest URL noted above)</a></li>
</ul>

</body>
</html>
42 changes: 42 additions & 0 deletions iiify/templates/helpers/movies.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
<!doctype html>
<html class="no-js" lang="">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<title>IIIF Image and Presentation API Movies Helper</title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">

<link rel="apple-touch-icon" href="apple-touch-icon.png">
<!-- Place favicon.ico in the root directory -->
<link rel="stylesheet" type="text/css" href="{{ request.url_root}}static/styles/docs.css" media="all"/>
<script type="text/javascript" href="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0-alpha1/jquery.min.js"></script>
<script type="text/javascript" href="{{ request.url_root}}static/scripts/docs.js"></script>
</head>
<body>
<!--[if lt IE 8]>
<p class="browserupgrade">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</p>
<![endif]-->
<header>
<img class="center" src="{{ request.url_root }}static/images/ia.png"/>
</header>
<div id="container">

<h1>IIIF Presentation API Movies Helper</h1>

<p>The IA item page URL is: <a href="https://archive.org/details/{{ identifier }}">https://archive.org/details/{{ identifier }}</a></p>

<p>The IA identifier is: {{ identifier }}</p>

<p>The IIIF manifest URL is: <a href="https://iiif.archive.org/iiif/3/{{ identifier }}/manifest.json">https://iiif.archive.org/iiif/3/{{ identifier }}/manifest.json</a></p>

<h2>IIIF viewer options for this mediatype:</h2>
<ul>
<li><a href="https://uv-v4.netlify.app/#?manifest=https://iiif.archive.org/iiif/3/{{ identifier }}/manifest.json">Universal Viewer</a></li>
<li><a href="https://iiif-react-media-player.netlify.app//?iiif-content=https://iiif.archive.org/iiif/3/{{ identifier }}/manifest.json">Ramp</a></li>
<li><a href="https://iiif.aviaryplatform.com/player?manifest=https://iiif.archive.org/iiif/3/{{ identifier }}/manifest.json">Aviary</a></li>

</ul>

</body>
</html>
41 changes: 41 additions & 0 deletions iiify/templates/helpers/texts.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
<!doctype html>
<html class="no-js" lang="">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<title>IIIF Image and Presentation API Texts Helper</title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">

<link rel="apple-touch-icon" href="apple-touch-icon.png">
<!-- Place favicon.ico in the root directory -->
<link rel="stylesheet" type="text/css" href="{{ request.url_root}}static/styles/docs.css" media="all"/>
<script type="text/javascript" href="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0-alpha1/jquery.min.js"></script>
<script type="text/javascript" href="{{ request.url_root}}static/scripts/docs.js"></script>
</head>
<body>
<!--[if lt IE 8]>
<p class="browserupgrade">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</p>
<![endif]-->
<header>
<img class="center" src="{{ request.url_root }}static/images/ia.png"/>
</header>
<div id="container">

<h1>IIIF Presentation API Texts Helper</h1>

<p>The IA item page URL is: <a href="https://archive.org/details/{{ identifier }}">https://archive.org/details/{{ identifier }}</a></p>

<p>The IA identifier is: {{ identifier }}</p>

<p>The IIIF manifest URL is: <a href="https://iiif.archive.org/iiif/3/{{ identifier }}/manifest.json">https://iiif.archive.org/iiif/3/{{ identifier }}/manifest.json</a></p>

<h2>IIIF Viewer options for this mediatype:</h2>
<ul>
<li><a href="https://projectmirador.org/embed/?iiif-content=https://iiif.archive.org/iiif/3/{{ identifier }}/manifest.json">Mirador</a></li>
<li><a href="https://uv-v4.netlify.app/#?manifest=https://iiif.archive.org/iiif/3/{{ identifier }}/manifest.json">Universal Viewer</a></li>
<li><a href="https://samvera-labs.github.io/clover-iiif?iiif-content=https://iiif.archive.org/iiif/3/{{ identifier }}/manifest.json">Clover</a></li>
</ul>

</body>
</html>
36 changes: 36 additions & 0 deletions iiify/templates/helpers/unknown.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
<!doctype html>
<html class="no-js" lang="">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<title>IIIF Image and Presentation API Helper</title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">

<link rel="apple-touch-icon" href="apple-touch-icon.png">
<!-- Place favicon.ico in the root directory -->
<link rel="stylesheet" type="text/css" href="{{ request.url_root}}static/styles/docs.css" media="all"/>
<script type="text/javascript" href="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0-alpha1/jquery.min.js"></script>
<script type="text/javascript" href="{{ request.url_root}}static/scripts/docs.js"></script>
</head>
<body>
<!--[if lt IE 8]>
<p class="browserupgrade">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</p>
<![endif]-->
<header>
<img class="center" src="{{ request.url_root }}static/images/ia.png"/>
</header>
<div id="container">

<h1>IIIF Presentation API Helper</h1>

<p>The IA item page URL is: <a href="https://archive.org/details/{{ identifier }}">https://archive.org/details/{{ identifier }}</a></p>

<p>The IA identifier is: {{ identifier }}</p>

<p>The IIIF manifest URL is: <a href="https://iiif.archive.org/iiif/3/{{ identifier }}/manifest.json">https://iiif.archive.org/iiif/3/{{ identifier }}/manifest.json</a></p>

<p>The material type of the item you're requested is not a recognized material type for IIIF viewers.</p>

</body>
</html>

0 comments on commit feef73d

Please sign in to comment.