Skip to main content

museumpy

museumpy is a client for python to get data from Zetcom MuseumPlus instances.

Table of Contents

Installation

museumpy is available on PyPI, so to install it simply use:

$ pip install museumpy

Usage

See the examples directory for more scripts.

import museumpy

records = museumpy.search(
    base_url='https://mpzurichrietberg.zetcom.com/MpWeb-mpZurichRietberg',
    field='ObjObjectNumberTxt',
    value='2019.184',
)


for record in records:
    print(record)

The return value of search is iterable, so you can easily loop over it. Or you can use indices to access elements, e.g. records[1] to get the second element, or records[-1] to get the last one.

Even slicing is supported, so you can do things like only iterate over the first 5 elements using

for records in records[:5]:
   print(record)
import museumpy

records = museumpy.fulltext_search(
    base_url='https://test.zetcom.com/MpWeb-mpTest',
    query='Patolu',
)


for record in records:
    print(record)

Advanced usage

For more advanced usage of this library, it is recommened to first create a client instance and then use this to request data:

import museumpy
import requests

s = requests.Session()
s.auth = ('user', 'pass')
s.headers.update({'Accept-Language': 'de'})

client = museumpy.MuseumPlusClient(
    base_url='https://test.zetcom.com/MpWeb-mpTest',
    session=s
)

module_item

import museumpy

id = '98977'
module = 'Multimedia'
item = client.module_item(id, module)

download_attachement

import museumpy

id = '98977'
module = 'Multimedia'
# download attachment to a directory called `files`
attachment_path = client.download_attachment(id, module, 'files')
print(attachment_path)

Custom mapping of fields

There are most likely custom fields on the MuseumPlus Instance you want to query. The returned XML is converted to a python dict using the xmltodict library. The raw dict is returned on the raw key of the result:

import museumpy

records = museumpy.search(
    base_url='https://test.zetcom.com/MpWeb-mpTest',
    query='Patolu',
)
for record in records:
    print(record['raw'])

For convenience a default mapping is provided to access some fields more easily:

for record in records:
    print(record['hasAttachments'])
    print(record['ObjObjectNumberTxt'])

If you want to customize this mapping, you can pass a map_function to the client, which is then used on all subsequent calls to search and fulltext_search:

import museumpy

def my_custom_map(record, xml_rec):
    NS = "http://www.zetcom.com/ria/ws/module"
    ID_XPATH = f".//{{{NS}}}dataField[@name='ObjObjectNumberTxt']/{{{NS}}}value"
    TITLE_XPATH = f".//{{{NS}}}repeatableGroup[@name='ObjObjectTitleGrp']//{{{NS}}}dataField[@name='TitleTxt']//{{{NS}}}value"

    xml_parser = museumpy.xmlparse.XMLParser()
    my_new_record = {
        'my_id': xml_parser.find(xml_rec, ID_XPATH).text,
        'my_title': xml_parser.find(xml_rec, TITLE_XPATH).text 
    }
    return my_new_record


client = museumpy.MuseumPlusClient(
    base_url='https://test.zetcom.com/MpWeb-mpTest',
    map_function=my_custom_map,
)

records = client.search(
    base_url='https://test.zetcom.com/MpWeb-mpTest',
    query='Patolu',
)
for record in records:
    print(record['my_id'])
    print(record['my_title'])

Release

To create a new release, follow these steps (please respect Semantic Versioning):

  1. Adapt the version number in museumpy/__init__.py
  2. Update the CHANGELOG with the version
  3. Create a pull request to merge develop into main (make sure the tests pass!)
  4. Create a new release/tag on GitHub (on the main branch)
  5. The publication on PyPI happens via GitHub Actions on every tagged commit

Metadata

Release files for museumpy 0.4.1

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

Source distribution (sdist)

Source distribution for museumpy 0.4.1
File Size Uploaded
museumpy-0.4.1.tar.gz 10.4 kB Details

Built distribution (wheel)

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

Total release size: 19.6 kB

Release files / museumpy-0.4.1.tar.gz

Download URL museumpy-0.4.1.tar.gz
Size 10.4 kB
Tags Source
SHA-256 checksum
How to use checksums
fd83cc2c1cec1604ff894d204ba7d57eceed303890a66d9f5224f53f20b380b4
BLAKE2b-256 checksum
How to use checksums
b7a578f2b173f4feb4eaa0ea143f9c624e0fdce2262d8c73fb1547618b1dba9b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.8.16

Release files / museumpy-0.4.1-py3-none-any.whl

Download URL museumpy-0.4.1-py3-none-any.whl
Size 9.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fd3765ce46dc168916efcb1207105c1026592092fa995457cb8c1883c5ed116f
BLAKE2b-256 checksum
How to use checksums
6351158f9c77042de22b026647fc330f30916ea0dd488dda9832c4b83d0b18d8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.8.16

Release history Release notifications | RSS feed

This release

0.4.1 This release

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

0.0.3

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