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.
pip install slubfindpip install git+https://github.com/slub/slubfind.gitAfter 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.
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 10Exclude facet data from query output:
slubfind query "manfred bonitz" --no-facetsFetch a single document by ID:
slubfind document 0-1132486122With explicit not-found handling:
slubfind document 0-DOES-NOT-EXIST --strict-not-foundFetch all results for a query:
slubfind scroll "manfred bonitz" --batch 10Stream results as JSONL (one JSON object per line), useful for piping:
slubfind scroll "manfred bonitz" --stream | jq .idShow TYPO3-find settings:
slubfind settingsShow Solr parameters for a query:
slubfind solr-params "manfred bonitz"Show Solr request URL for a query:
slubfind solr-request "manfred bonitz"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"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-1132486122slubfind --show-url query "manfred bonitz" --facet "format_de14=Book, E-Book"slubfind --show-url scroll "manfred bonitz" --batch 10Use --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 (queryonly)raw-solr-response- raw Solr response (queryonly)json-holding-status- access links, supplementary information, and references (documentonly)json-holding-status-index- availability status, shelf location, and links (documentonly)
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-ldQuery with raw Solr response:
slubfind query "manfred bonitz" --export-format raw-solr-responseUse --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-parserslubfind document 0-1132486122 --no-parser --export-format json-holding-statusSet SLUBFIND_URL to override the default base URL:
export SLUBFIND_URL=https://katalog.slub-dresden.deslubfind query "manfred bonitz"Run default tests (offline/unit):
pytestRun integration tests against the live catalog:
pytest --override-ini addopts="" -m integrationfrom 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()