Skip to main content

slubfind

slubfind is a command-line tool and Python library for querying the library catalog of SLUB Dresden (Saxon State Library – Dresden State and University Library). It retrieves catalog records in multiple formats including SLUBApp data, JSON-LD linked data, Solr responses, and holding/availability information.

Under the hood, slubfind builds on txpyfind, a generic client for TYPO3-find catalog frontends.

Installation

… via PyPI

pip install slubfind

… or from GitHub source

pip install git+https://github.com/slub/slubfind.git

Command-Line Usage

After installation, the slubfind command is available (also via python -m slubfind). The base URL defaults to https://katalog.slub-dresden.de. Use slubfind --help and slubfind <subcommand> --help for complete parameter and exit-code documentation.

Query

Execute a search query:

slubfind query "manfred bonitz"

With a facet filter and pagination:

slubfind query "manfred bonitz" --facet "format_de14=Book, E-Book" --page 1 --count 10

Exclude facet data from query output:

slubfind query "manfred bonitz" --no-facets

Document

Fetch a single document by ID:

slubfind document 0-1132486122

With explicit not-found handling:

slubfind document 0-DOES-NOT-EXIST --strict-not-found

Scroll

Fetch all results for a query:

slubfind scroll "manfred bonitz" --batch 10

Stream results as JSONL (one JSON object per line), useful for piping:

slubfind scroll "manfred bonitz" --stream | jq .id

Settings

Show TYPO3-find settings:

slubfind settings

Solr Parameters

Show Solr parameters for a query:

slubfind solr-params "manfred bonitz"

Solr Request

Show Solr request URL for a query:

slubfind solr-request "manfred bonitz"

From URL

Use --from-url to query using a SLUB catalog URL instead of individual parameters. This works with query, scroll, solr-params, and solr-request:

slubfind query --from-url "https://katalog.slub-dresden.de/?tx_find_find%5Bq%5D%5Bdefault%5D=manfred+bonitz"
slubfind solr-params --from-url "https://katalog.slub-dresden.de/?tx_find_find%5Bq%5D%5Bdefault%5D=manfred+bonitz"

Show Request URL

Use --show-url to print the request URL instead of fetching the response. This works with query, document, and scroll:

slubfind --show-url document 0-1132486122
slubfind --show-url query "manfred bonitz" --facet "format_de14=Book, E-Book"
slubfind --show-url scroll "manfred bonitz" --batch 10

Export Format

Use --export-format to select the output format. The default is app.

Available formats and their supported subcommands:

  • app (default) - SLUBApp data (query, document)

  • json-ld - JSON-LD linked data (query, document)

  • json-solr-results - Solr results (query only)

  • raw-solr-response - raw Solr response (query only)

  • json-holding-status - access links, supplementary information, and references (document only)

  • json-holding-status-index - availability status, shelf location, and links (document only)

The scroll subcommand always uses raw-solr-response internally. The formats json-all, json-solr-params, and json-solr-request are used internally by the settings, solr-params, and solr-request subcommands.

Fetch a document in JSON-LD format:

slubfind document 0-1132486122 --export-format json-ld

Query with raw Solr response:

slubfind query "manfred bonitz" --export-format raw-solr-response

Raw Server Output

Use --no-parser to skip response parsing and print the raw server output. This is useful for inspecting the exact response or piping to other tools:

slubfind query "manfred bonitz" --no-parser
slubfind document 0-1132486122 --no-parser --export-format json-holding-status

Environment Variable

Set SLUBFIND_URL to override the default base URL:

export SLUBFIND_URL=https://katalog.slub-dresden.de
slubfind query "manfred bonitz"

Testing

Run default tests (offline/unit):

pytest

Run integration tests against the live catalog:

pytest --override-ini addopts="" -m integration

Python Usage Example

from slubfind.client import SlubFind
# create SlubFind instance
slub_find = SlubFind()
# retrieve JSON data (query view, app format)
slub_q = slub_find.app_search("manfred bonitz")
# retrieve JSON data (detail view, app format)
slub_doc = slub_find.app_document("0-1132486122")
# retrieve JSON-LD data (detail view)
slub_jsonld = slub_find.jsonld_document("0-1132486122")
# retrieve JSON-LD data (query view)
slub_jsonld_q = slub_find.jsonld_search("manfred bonitz")
# retrieve access links, references (detail view)
slub_hs = slub_find.holding_status_document("0-1132486122")
# retrieve availability status and location (detail view)
slub_hsi = slub_find.holding_status_index_document("0-1132486122")
# retrieve raw Solr response
slub_raw = slub_find.raw_solr_search("manfred bonitz")
# retrieve Solr result documents only
slub_solr = slub_find.solr_results_search("manfred bonitz")
# retrieve Solr parameters for a query
slub_params = slub_find.solr_params("manfred bonitz")
# retrieve Solr request URL for a query
slub_req = slub_find.solr_request("manfred bonitz")
# retrieve TYPO3-find settings
slub_settings = slub_find.settings()

Metadata

Release files for slubfind 1.18.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for slubfind 1.18.0
File Size Uploaded
slubfind-1.18.0.tar.gz 39.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for slubfind 1.18.0
File Interpreter ABI Platform
slubfind-1.18.0-py3-none-any.whl Python 3 none any Details

Total release size: 65.7 kB

Release files / slubfind-1.18.0.tar.gz

Download URL slubfind-1.18.0.tar.gz
Size 39.1 kB
Tags Source
SHA-256 checksum
How to use checksums
33ee9351f335f75293428dc2290887e954880d6308e1e5f05116e80968a03bb7
BLAKE2b-256 checksum
How to use checksums
3df6677d9f2f60c6879a706740e227064b5681444d87f2b1bb78a5a4f7203322
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.13

Release files / slubfind-1.18.0-py3-none-any.whl

Download URL slubfind-1.18.0-py3-none-any.whl
Size 26.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4ae33ed26ca150069c148c342d4f91f03bf11041b84263113c3a8cde923a6c56
BLAKE2b-256 checksum
How to use checksums
67ca32dda1977b904b75836a2142d50ae075a45f837341ef934cc94b2a4d4d7e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.13

Release history Release notifications | RSS feed

This release

1.18.0 This release

2 release files

1.17.0

2 release files

1.16.0

2 release files

1.15.0

2 release files

1.14.0

2 release files

1.13.0

2 release files

1.12.0

2 release files

1.11.0

2 release files

1.10.0

2 release files

1.9.0

2 release files

1.8.0

2 release files

1.7.0

2 release files

1.6.0

2 release files

1.5.1

2 release files

1.5.0

2 release files

1.4.0

2 release files

1.3.0

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page