atom2preservica


Nameatom2preservica JSON
Version 0.1.0 PyPI version JSON
download
home_pagehttps://github.com/carj/atom2preservica
SummaryPython library for the Preservica API
upload_time2025-03-03 11:39:23
maintainerNone
docs_urlNone
authorJames Carr
requires_pythonNone
licenseApache License 2.0
keywords preservica api preservation accesstomemory atom
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # atom2preservica
Python Module To Synchronize Metadata from the Access To Memory (AtoM) to Preservica.

AtoM it is a web-based, open source application for standards-based archival 
description and access in a multilingual, multi-repository environment.
https://accesstomemory.org/en/

Preservica is a widely used web based digital preservation platform which stores and protects digital objects.
https://preservica.com/

## How does atom2preservica work?

The atom2preservica module is designed to search Preservica for digital objects which exist in AtoM.
When it finds them it:

1) Sets the title and description of the asset based on the AtoM metadata. It also creates
a Dublin Core XML metadata document from AtoM metadata describing the asset and adds that to Preservica asset.

2) Creates the archival hierarchy in Preservica which matches the same levels of description in AtoM, e.g. the Fonds and series etc.
It moves the Preservica asset into the correct level of the newly created hierarchy.

3) Marks the Preservica assets as synchronised, so that they are ignored the next time the module is run again.


## Select Assets for Synchronisation

atom2preservica searches a Preservica collection or the entire Preservica repository for assets which have been marked as ready
for synchronisation. The mechanism used to determine that an asset is ready for linking is that it should have an 
external identifier in Preservica containing the AtoM slug.
The key for the identifier should be "AToM-Slug". The value should be the slug of the AtoM object.

For example:

![AToM-Slug](https://raw.githubusercontent.com/carj/atom2preservica/refs/heads/main/docs/images/slug.png)

The atom2preservica tool will not add slugs to Preservica objects, this should be done either during ingest or after
ingest manually or via the API.


## Limitations

The atom2preservica module does not support the creation of new assets in Preservica. It only updates existing assets.
For an automated way to add Assets into Preservica see https://pypreservica.readthedocs.io/.

atom2preservica does not update or change AtoM, after the synchronisation process is complete. Preservica assets are linked to Atom,
but AtoM does not hold a link back to Preservica. The synchronisation is not yet bidirectional.

If descriptive metadata is updated in AtoM after the synchronisation, the module will not update the asset metadata in Preservica.

The AtoM Rest Plugin arRestApiPlugin needs to be activated for atom2preservica to work.

## Support 

atom2preservica is 3rd party open source library and is not affiliated or supported by Preservica Ltd or Artefactual.
There is no support for use of the library by Preservica Ltd or Artefactual.
Bug reports can be raised directly on GitHub.  https://github.com/carj/atom2preservica/

## License

The package is available as open source under the terms of the Apache License 2.0

## Installation

atom2preservica is available from the Python Package Index (PyPI)

https://pypi.org/project/atom2preservica/

To install atom2preservica, simply run this simple command in your terminal of choice:

    $ pip install atom2preservica



## Usage

atom2preservica can be configured via command line arguments or by using a properties file.

To use a properties file, create a file called credentials.properties in the same directory as the script with the following properties:

    [credentials]
    username=user@example.com
    password=123456
    server=eu.preservica.com
    atom-api-key=123456788
    atom-server=https://demo.accesstomemory.org
    security-tag=open
    search-collection=913a6bfd-874e-4cb0-8940-e1b0d2a583a7
    new-collections=0c733043-4816-4d74-9492-906badc1bce0

   
You can then run the script without any arguments as:

    $ python -m atom2preservica

Alternatively, you can use command line arguments to configure the script. The following arguments are available:

    usage: atom2preservica [-h] -a ATOM_SERVER [-k ATOM_API_KEY] [-au ATOM_USER]
                       [-ap ATOM_PASSWORD] [-st SECURITY_TAG] [-c COLLECTION]
                       [-cr NEW_COLLECTIONS_ROOT]  [-u PRESERVICA_USERNAME]
                       [-p PRESERVICA_PASSWORD] [-s PRESERVICA_SERVER]

    mandatory arguments:

         -a [--atom-server]     The URL of the AtoM server

    optional arguments:

            -k [--atom-api-key]             The API key for the AtoM user
            -au [--atom-user]               The username for the AtoM user
            -ap [--atom-password]           The password for the AtoM user

            -st [--security-tag]            The security tag for any new collections added to Preservica
            -c [--search-collection]        The Preservica collection to search for assets, ignore to search the entire repository

            -cr [--new-collections]         Add location where new AtoM Fonds/series should be created in Preservica. 
                                            If not set, new collections will be created at the root of the repository

            -u [--preservica-username]      Your Preservica username if not using credentials.properties
                                
            -p [--preservica-password]      Your Preservica password if not using credentials.properties
                             
            -s [--preservica-server]        Your Preservica server domain name if not using credentials.properties
     


## Example

For example to synchronise assets from the AtoM demo server searching across the entire Preservica repository for 
linked assets:

    $ python -m atom2preservica --atom-server demo.accesstomemory.org --atom-api-key ae049f6e0924d477                       

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/carj/atom2preservica",
    "name": "atom2preservica",
    "maintainer": null,
    "docs_url": null,
    "requires_python": null,
    "maintainer_email": null,
    "keywords": "Preservica API Preservation, AccessToMemory, AtoM",
    "author": "James Carr",
    "author_email": "drjamescarr@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/d4/16/7d4a0f71ba7bdd8f67c4fd878aef820bf802e33d5bccc7dc39acf4fccf5f/atom2preservica-0.1.0.tar.gz",
    "platform": null,
    "description": "# atom2preservica\r\nPython Module To Synchronize Metadata from the Access To Memory (AtoM) to Preservica.\r\n\r\nAtoM it is a web-based, open source application for standards-based archival \r\ndescription and access in a multilingual, multi-repository environment.\r\nhttps://accesstomemory.org/en/\r\n\r\nPreservica is a widely used web based digital preservation platform which stores and protects digital objects.\r\nhttps://preservica.com/\r\n\r\n## How does atom2preservica work?\r\n\r\nThe atom2preservica module is designed to search Preservica for digital objects which exist in AtoM.\r\nWhen it finds them it:\r\n\r\n1) Sets the title and description of the asset based on the AtoM metadata. It also creates\r\na Dublin Core XML metadata document from AtoM metadata describing the asset and adds that to Preservica asset.\r\n\r\n2) Creates the archival hierarchy in Preservica which matches the same levels of description in AtoM, e.g. the Fonds and series etc.\r\nIt moves the Preservica asset into the correct level of the newly created hierarchy.\r\n\r\n3) Marks the Preservica assets as synchronised, so that they are ignored the next time the module is run again.\r\n\r\n\r\n## Select Assets for Synchronisation\r\n\r\natom2preservica searches a Preservica collection or the entire Preservica repository for assets which have been marked as ready\r\nfor synchronisation. The mechanism used to determine that an asset is ready for linking is that it should have an \r\nexternal identifier in Preservica containing the AtoM slug.\r\nThe key for the identifier should be \"AToM-Slug\". The value should be the slug of the AtoM object.\r\n\r\nFor example:\r\n\r\n![AToM-Slug](https://raw.githubusercontent.com/carj/atom2preservica/refs/heads/main/docs/images/slug.png)\r\n\r\nThe atom2preservica tool will not add slugs to Preservica objects, this should be done either during ingest or after\r\ningest manually or via the API.\r\n\r\n\r\n## Limitations\r\n\r\nThe atom2preservica module does not support the creation of new assets in Preservica. It only updates existing assets.\r\nFor an automated way to add Assets into Preservica see https://pypreservica.readthedocs.io/.\r\n\r\natom2preservica does not update or change AtoM, after the synchronisation process is complete. Preservica assets are linked to Atom,\r\nbut AtoM does not hold a link back to Preservica. The synchronisation is not yet bidirectional.\r\n\r\nIf descriptive metadata is updated in AtoM after the synchronisation, the module will not update the asset metadata in Preservica.\r\n\r\nThe AtoM Rest Plugin arRestApiPlugin needs to be activated for atom2preservica to work.\r\n\r\n## Support \r\n\r\natom2preservica is 3rd party open source library and is not affiliated or supported by Preservica Ltd or Artefactual.\r\nThere is no support for use of the library by Preservica Ltd or Artefactual.\r\nBug reports can be raised directly on GitHub.  https://github.com/carj/atom2preservica/\r\n\r\n## License\r\n\r\nThe package is available as open source under the terms of the Apache License 2.0\r\n\r\n## Installation\r\n\r\natom2preservica is available from the Python Package Index (PyPI)\r\n\r\nhttps://pypi.org/project/atom2preservica/\r\n\r\nTo install atom2preservica, simply run this simple command in your terminal of choice:\r\n\r\n    $ pip install atom2preservica\r\n\r\n\r\n\r\n## Usage\r\n\r\natom2preservica can be configured via command line arguments or by using a properties file.\r\n\r\nTo use a properties file, create a file called credentials.properties in the same directory as the script with the following properties:\r\n\r\n    [credentials]\r\n    username=user@example.com\r\n    password=123456\r\n    server=eu.preservica.com\r\n    atom-api-key=123456788\r\n    atom-server=https://demo.accesstomemory.org\r\n    security-tag=open\r\n    search-collection=913a6bfd-874e-4cb0-8940-e1b0d2a583a7\r\n    new-collections=0c733043-4816-4d74-9492-906badc1bce0\r\n\r\n   \r\nYou can then run the script without any arguments as:\r\n\r\n    $ python -m atom2preservica\r\n\r\nAlternatively, you can use command line arguments to configure the script. The following arguments are available:\r\n\r\n    usage: atom2preservica [-h] -a ATOM_SERVER [-k ATOM_API_KEY] [-au ATOM_USER]\r\n                       [-ap ATOM_PASSWORD] [-st SECURITY_TAG] [-c COLLECTION]\r\n                       [-cr NEW_COLLECTIONS_ROOT]  [-u PRESERVICA_USERNAME]\r\n                       [-p PRESERVICA_PASSWORD] [-s PRESERVICA_SERVER]\r\n\r\n    mandatory arguments:\r\n\r\n         -a [--atom-server]     The URL of the AtoM server\r\n\r\n    optional arguments:\r\n\r\n            -k [--atom-api-key]             The API key for the AtoM user\r\n            -au [--atom-user]               The username for the AtoM user\r\n            -ap [--atom-password]           The password for the AtoM user\r\n\r\n            -st [--security-tag]            The security tag for any new collections added to Preservica\r\n            -c [--search-collection]        The Preservica collection to search for assets, ignore to search the entire repository\r\n\r\n            -cr [--new-collections]         Add location where new AtoM Fonds/series should be created in Preservica. \r\n                                            If not set, new collections will be created at the root of the repository\r\n\r\n            -u [--preservica-username]      Your Preservica username if not using credentials.properties\r\n                                \r\n            -p [--preservica-password]      Your Preservica password if not using credentials.properties\r\n                             \r\n            -s [--preservica-server]        Your Preservica server domain name if not using credentials.properties\r\n     \r\n\r\n\r\n## Example\r\n\r\nFor example to synchronise assets from the AtoM demo server searching across the entire Preservica repository for \r\nlinked assets:\r\n\r\n    $ python -m atom2preservica --atom-server demo.accesstomemory.org --atom-api-key ae049f6e0924d477                       \r\n",
    "bugtrack_url": null,
    "license": "Apache License 2.0",
    "summary": "Python library for the Preservica API",
    "version": "0.1.0",
    "project_urls": {
        "Discussion Forum": "https://github.com/carj/atom2preservica",
        "Documentation": "https://github.com/carj/atom2preservica",
        "Homepage": "https://github.com/carj/atom2preservica",
        "Source": "https://github.com/carj/atom2preservica"
    },
    "split_keywords": [
        "preservica api preservation",
        " accesstomemory",
        " atom"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "de4fb4f4c8c0e1d76bc21a474d2ab4063bfe2531e506032a928473f54233ede2",
                "md5": "27a1fdfdef5040f532e2a456abb300be",
                "sha256": "e41536f352e783b74726f8030339f403d6c3bc63bbaa307f1e3fe490a50def25"
            },
            "downloads": -1,
            "filename": "atom2preservica-0.1.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "27a1fdfdef5040f532e2a456abb300be",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": null,
            "size": 14470,
            "upload_time": "2025-03-03T11:39:22",
            "upload_time_iso_8601": "2025-03-03T11:39:22.188932Z",
            "url": "https://files.pythonhosted.org/packages/de/4f/b4f4c8c0e1d76bc21a474d2ab4063bfe2531e506032a928473f54233ede2/atom2preservica-0.1.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d4167d4a0f71ba7bdd8f67c4fd878aef820bf802e33d5bccc7dc39acf4fccf5f",
                "md5": "30e6d3669684d144b850ab1245f16f3f",
                "sha256": "54bcad72204c8c99529785e5d40204e388919b2df48c4145afb542088aaa2c57"
            },
            "downloads": -1,
            "filename": "atom2preservica-0.1.0.tar.gz",
            "has_sig": false,
            "md5_digest": "30e6d3669684d144b850ab1245f16f3f",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 15861,
            "upload_time": "2025-03-03T11:39:23",
            "upload_time_iso_8601": "2025-03-03T11:39:23.750813Z",
            "url": "https://files.pythonhosted.org/packages/d4/16/7d4a0f71ba7bdd8f67c4fd878aef820bf802e33d5bccc7dc39acf4fccf5f/atom2preservica-0.1.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-03-03 11:39:23",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "carj",
    "github_project": "atom2preservica",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "atom2preservica"
}
        
Elapsed time: 0.87591s