搜索并替换ALMA记录中的主题字段。

almar的Python项目详细描述


almar·travis

codecov支持的python版本

almar(以前的lokar)是一个用于批量编辑和删除受控 书目中的分类和主题标题字段(084/648/650/651/655) 使用alma api的alma中的记录。使用Python2.7和Python3.5+进行测试。

它将使用sru服务来搜索记录、获取和修改marcxml 记录并使用alma bibs api将修改后的记录写回alma。

该脚本仅适用于在$2中定义了词汇表代码的字段。 因为alma sru服务没有为特定的 词汇表,almar开始时使用alma.subjects+ alma.authority\u词汇表索引。这将返回具有主题的所有记录 给定术语的字段A和给定词汇的主题字段B 代码,但其中a不一定等于b,因此almar过滤结果 列出以查找A实际上与B相同的记录。

阿斯西卡斯特

安装和配置

  1. 运行pip install-e.安装almar及其依赖项。
  2. 创建配置文件。almar将首先在 当前目录,然后是lokar.yml(旧版),最后是.almar.yml 在您的主目录中。
  3. < > >

    下面是一个最小的配置文件:

    ---
    default_vocabulary: INSERT MARC VOCABULARY CODE HERE
    
    vocabularies:
      - marc_code: INSERT MARC VOCABULARY CODE HERE
    
    default_env: prod
    
    env:
      - name: prod
        api_key: INSERT API KEY HERE
        api_region: eu
        sru_url: INSERT SRU URL HERE
    
    1. 将此处的"插入MARC词汇代码"替换为 你的词汇表(2美元的值)。脚本将此值用作筛选器, 以确保只编辑指定词汇表中的主题字段。
    2. 用alma实例的api键替换此处的insert api key。如果 您已连接到网络区域,可能应该使用网络区域密钥。 否则编辑将作为本地编辑存储在机构区域中。
    3. 可选:将API U地区更改为"NA"(北美)或"AP"(亚太)。
    4. 在此处插入sru url替换为指向sru终结点的url。再次:使用 如果连接到网络区域,则为网络区域终结点。比比赛 机构,使用https://bibsys-k.alma.exlibrisgroup.com/view/sru/47bibsys\u network
    5. < > >

      注意:在上面的文件中,我们配置了一个称为"prod"的alma环境。 可以添加多个环境(例如沙箱和 并使用-e命令行选项在它们之间切换。 下面是一个示例:

      ---
      default_vocabulary: noubomn
      
      vocabularies:
        - marc_code: noubomn
          id_service: http://data.ub.uio.no/microservices/authorize.php?vocabulary=realfagstermer&term={term}&tag={tag}
      
      default_env: nz_prod
      
      env:
        - name: nz_sandbox
          api_key: API KEY HERE
          api_region: eu
          sru_url: https://sandbox-eu.alma.exlibrisgroup.com/view/sru/47BIBSYS_NETWORK
        - name: nz_prod
          api_key: API KEY HERE
          api_region: eu
          sru_url: https://bibsys-k.alma.exlibrisgroup.com/view/sru/47BIBSYS_NETWORK
      

      有关所有配置选项,请参阅 配置选项

      用法

      在使用该工具之前,请确保已设置词汇代码(词汇表.marc_代码) 对于要在配置文件中使用的词汇表。 该工具将只对具有匹配的$2值的字段进行更改 配置文件中的词汇表.marc_代码设置。

      获取帮助:

      • almar-h显示命令和常规命令行选项的列表
      • almar replace-h显示"replace"子命令的帮助

      替换主题标题

      将650个字段中的"term"替换为"new term":

      almar replace '650 Term' 'New term'
      

      或者,由于650被定义为默认字段,您也可以使用速记:

      almar replace 'Term' 'New term'
      

      要使用650字段以外的任何其他字段,字段号必须明确:

      almar replace '655 Term' 'New term'`
      

      支持的字段有0846485651和655。

      先用干运行进行测试

      要查看对每个目录记录所做的更改,请添加--diffs标志。组合的 使用--dry_run标志(或-d),您将看到将要进行的更改 不接触任何记录的记录:

      almar replace --diffs --dry_run 'Term' 'New term'
      

      这样,您就可以很容易地了解该工具的工作原理。

      将主题移动到另一个MARC标记

      将主题标题从650移动到651:

      almar replace '650 Term' '651 Term'
      

      或者您可以使用速记

      almar replace '650 Term' '651'
      

      如果这个词本身是一样的。您还可以在中移动和更改标题 一次操作:

      almar replace '650 Term' '651 New term'
      

      删除主题标题

      删除所有具有$a term$x term

      ---
      default_vocabulary: INSERT MARC VOCABULARY CODE HERE
      
      vocabularies:
        - marc_code: INSERT MARC VOCABULARY CODE HERE
      
      default_env: prod
      
      env:
        - name: prod
          api_key: INSERT API KEY HERE
          api_region: eu
          sru_url: INSERT SRU URL HERE
      
      0

      或者,因为650是默认字段,所以速记:

      ---
      default_vocabulary: INSERT MARC VOCABULARY CODE HERE
      
      vocabularies:
        - marc_code: INSERT MARC VOCABULARY CODE HERE
      
      default_env: prod
      
      env:
        - name: prod
          api_key: INSERT API KEY HERE
          api_region: eu
          sru_url: INSERT SRU URL HERE
      
      1

      列出文档

      如果只需要一个文档列表而不做任何更改,请使用almar list

      ---
      default_vocabulary: INSERT MARC VOCABULARY CODE HERE
      
      vocabularies:
        - marc_code: INSERT MARC VOCABULARY CODE HERE
      
      default_env: prod
      
      env:
        - name: prod
          api_key: INSERT API KEY HERE
          api_region: eu
          sru_url: INSERT SRU URL HERE
      
      2

      可选标题:

      ---
      default_vocabulary: INSERT MARC VOCABULARY CODE HERE
      
      vocabularies:
        - marc_code: INSERT MARC VOCABULARY CODE HERE
      
      default_env: prod
      
      env:
        - name: prod
          api_key: INSERT API KEY HERE
          api_region: eu
          sru_url: INSERT SRU URL HERE
      
      3

      更复杂的编辑

      对于更复杂的编辑,例如将两个主题标题替换为一个, 使用--rem--add选项删除和添加主题标题。 例如,将物理历史(655)替换为单个主题物理历史

      ---
      default_vocabulary: INSERT MARC VOCABULARY CODE HERE
      
      vocabularies:
        - marc_code: INSERT MARC VOCABULARY CODE HERE
      
      default_env: prod
      
      env:
        - name: prod
          api_key: INSERT API KEY HERE
          api_region: eu
          sru_url: INSERT SRU URL HERE
      
      4

      请注意,只有将要删除的两个主题(即--rem主题)的全部的记录才会被修改。 支持任意数量的--rem--add选项。

      交互式编辑

      如果需要将一个概念分成两个或多个概念,可以使用 交互模式。 示例:将"kretser"替换为"integrerete kretser" 在某些文档上,但在另一个文档上有"elektriske kretser",请运行:

      ---
      default_vocabulary: INSERT MARC VOCABULARY CODE HERE
      
      vocabularies:
        - marc_code: INSERT MARC VOCABULARY CODE HERE
      
      default_env: prod
      
      env:
        - name: prod
          api_key: INSERT API KEY HERE
          api_region: eu
          sru_url: INSERT SRU URL HERE
      
      5

      对于每份记录,almar将打印标题和主题,并询问您 要在记录中包括的两个标题中的哪一个。使用箭头键和空格键 要选中其中一个或另一个,同时选中或不选中标题,请按回车键 确认选择并保存记录。

      使用自定义文档集

      默认情况下,almar将检查从下面返回的所有文档 cql查询:alma.subjects="{term}"和alma.authority\u vocabulary="{vocabulary}", 但是您可以使用--cql参数指定一个不同的查询 希望使用文档的子集。例如,

      ---
      default_vocabulary: INSERT MARC VOCABULARY CODE HERE
      
      vocabularies:
        - marc_code: INSERT MARC VOCABULARY CODE HERE
      
      default_env: prod
      
      env:
        - name: prod
          api_key: INSERT API KEY HERE
          api_region: eu
          sru_url: INSERT SRU URL HERE
      
      6

      变量{term}{vocabulary}可以在查询字符串中使用。

      注释

      • 对于包含多个单词的术语,必须添加引号(单引号或双引号) 就像上面的例子一样。对于单字术语,这是可选的。
      • 在搜索中,第一个字母不区分大小写。如果你搜索"旧术语",两者 将替换"旧术语"和"旧术语"(但不替换"旧术语"。

      标识符

      如果配置了 ID查找服务URLid用户设备)在配置文件中。服务应该接受 带有参数词汇表术语标记的get请求,并返回 匹配概念作为json对象的标识符。见 此页 有关详细信息。

      有关使用skosmos的示例服务,请参见 代码 以及演示

      对主题字符串的支持有限

      当前支持四种字符串操作:

      • almar remove'a a a:bbb'删除发生的$aaa$x bbb
      • almar将"a a a:bbb"替换为"ccc:ddd"将"aaa$x bbb"替换为"ccc$x ddd"
      • almar将"a a a:bbb""ccc"替换为$aaa$x bbb(替换子字段$a并删除子字段$x
      • almar用$a bbb$x$ccc替换$a aaa(替换子字段$a并添加子字段$x

      注意:只有冒号前后有空格()时,才将术语识别为字符串。

      更复杂的替换

      为了进行更复杂的替换,我们可以使用高级marc语法,其中 每个参数都是一个完整的marc字段,使用double$s作为子字段分隔符。

      我们先列出主题为"高级合成资源管理器"的文档 在我们的默认词汇表中,使用简单的语法:

      ---
      default_vocabulary: INSERT MARC VOCABULARY CODE HERE
      
      vocabularies:
        - marc_code: INSERT MARC VOCABULARY CODE HERE
      
      default_env: prod
      
      env:
        - name: prod
          api_key: INSERT API KEY HERE
          api_region: eu
          sru_url: INSERT SRU URL HERE
      
      7

      要使用高级语法获得相同的列表,我们将编写:

      ---
      default_vocabulary: INSERT MARC VOCABULARY CODE HERE
      
      vocabularies:
        - marc_code: INSERT MARC VOCABULARY CODE HERE
      
      default_env: prod
      
      env:
        - name: prod
          api_key: INSERT API KEY HERE
          api_region: eu
          sru_url: INSERT SRU URL HERE
      
      8

      注意,引号封装了整个marc字段。我们已经明确 指定了词汇。这意味着我们可以进行词汇间的替换。 将术语移到"裸"词汇表:

      ---
      default_vocabulary: INSERT MARC VOCABULARY CODE HERE
      
      vocabularies:
        - marc_code: INSERT MARC VOCABULARY CODE HERE
      
      default_env: prod
      
      env:
        - name: prod
          api_key: INSERT API KEY HERE
          api_region: eu
          sru_url: INSERT SRU URL HERE
      
      9

      在同一过程中,我们还更改了marc标记和字段指示符。 我们还可以在过程中包含更多子字段:

      ---
      default_vocabulary: noubomn
      
      vocabularies:
        - marc_code: noubomn
          id_service: http://data.ub.uio.no/microservices/authorize.php?vocabulary=realfagstermer&term={term}&tag={tag}
      
      default_env: nz_prod
      
      env:
        - name: nz_sandbox
          api_key: API KEY HERE
          api_region: eu
          sru_url: https://sandbox-eu.alma.exlibrisgroup.com/view/sru/47BIBSYS_NETWORK
        - name: nz_prod
          api_key: API KEY HERE
          api_region: eu
          sru_url: https://bibsys-k.alma.exlibrisgroup.com/view/sru/47BIBSYS_NETWORK
      
      0

      注意,与简单的搜索和替换不同,子字段的顺序在匹配时并不重要。 不过,除了$0$9之外,额外的子字段确实很重要。匹配任何值(包括无值) 对于某些子字段,使用值{any_value}。例子:

      ---
      default_vocabulary: noubomn
      
      vocabularies:
        - marc_code: noubomn
          id_service: http://data.ub.uio.no/microservices/authorize.php?vocabulary=realfagstermer&term={term}&tag={tag}
      
      default_env: nz_prod
      
      env:
        - name: nz_sandbox
          api_key: API KEY HERE
          api_region: eu
          sru_url: https://sandbox-eu.alma.exlibrisgroup.com/view/sru/47BIBSYS_NETWORK
        - name: nz_prod
          api_key: API KEY HERE
          api_region: eu
          sru_url: https://bibsys-k.alma.exlibrisgroup.com/view/sru/47BIBSYS_NETWORK
      
      1

      将其用作python库

      ---
      default_vocabulary: noubomn
      
      vocabularies:
        - marc_code: noubomn
          id_service: http://data.ub.uio.no/microservices/authorize.php?vocabulary=realfagstermer&term={term}&tag={tag}
      
      default_env: nz_prod
      
      env:
        - name: nz_sandbox
          api_key: API KEY HERE
          api_region: eu
          sru_url: https://sandbox-eu.alma.exlibrisgroup.com/view/sru/47BIBSYS_NETWORK
        - name: nz_prod
          api_key: API KEY HERE
          api_region: eu
          sru_url: https://bibsys-k.alma.exlibrisgroup.com/view/sru/47BIBSYS_NETWORK
      
      2

      开发

      运行测试:

      ---
      default_vocabulary: noubomn
      
      vocabularies:
        - marc_code: noubomn
          id_service: http://data.ub.uio.no/microservices/authorize.php?vocabulary=realfagstermer&term={term}&tag={tag}
      
      default_env: nz_prod
      
      env:
        - name: nz_sandbox
          api_key: API KEY HERE
          api_region: eu
          sru_url: https://sandbox-eu.alma.exlibrisgroup.com/view/sru/47BIBSYS_NETWORK
        - name: nz_prod
          api_key: API KEY HERE
          api_region: eu
          sru_url: https://bibsys-k.alma.exlibrisgroup.com/view/sru/47BIBSYS_NETWORK
      
      3

      欢迎加入QQ群-->: 979659372 Python中文网_新手群

      推荐PyPI第三方库


热门话题
java为什么@DELETE REST不起作用?   带有JPA2的java表值参数。1和Hibernate,Sql Server   如何将Java类添加到Xamarin VS2017项目   绘制多边形时出现java空指针异常   java Apache WebClient 303状态未重定向   java如何用一组字符串数组从数据库中获取数据   java是否可以使用Google Drive API向文件中添加脚本?   java组织。阿帕奇。贾斯珀。JspC jar文件下载   java在整个JSON映射中将单个值作为JSON流   通过命令行将文件输入到java   java rs.next()总是返回false   java标记异常,通知调用方利用异常消息   java Spring YML数组属性为空