跳转到主要内容

同步Alma信件与信函

项目描述

PyPI PyPI - Python Version PyPI - License

slipsomat是一个使用Selenium浏览器自动化从Alma中拉取和推送信件的小工具。它可以保持所有信件的最新本地副本,以便您可以将其纳入版本控制。通过存储所有信件的校验和,它可以在您即将覆盖被他人修改的信件时发出警告。

这个工具存在是因为Alma没有提供同步信件的方法,只有用于编辑它们的网页表单。有超过100种不同的信件,使用网页表单(没有语法高亮)进行编辑非常繁琐。我们也在Idea Exchange上提出了这个问题 - 欢迎在我们的想法那里投票。

设置

Slipsomat应该可以在大多数平台上与Python 3.5及更高版本一起工作。请使用我们的问题跟踪器报告任何问题。

使用pip安装

pip install -U slipsomat

安装完成后,您可以从包含slipsomat.cfg配置文件的任何目录中运行slipsomat。要开始,请创建一个包含以下内容的slipsomat.cfg文件的空目录

[login]
auth_type=
domain=
instance=
institution=
username=
password=

[selenium]
browser=firefox
default_timeout=20

[window]
width=1300
height=700

其中您需要填写空白值。

  • 如果您使用Feide SAML进行身份验证,请设置auth_type=Feide。对于Shibboleth或其他SAML提供程序,请设置auth_type=SAML(如果不起作用,请提交问题!)。要使用标准Alma登录,请设置auth_type=basic
  • domain 是您的 Feide 域名,例如 uio.no。如果您不使用 Feide 作为您的 SAML 提供商,则可以将其留空。
  • instance 是 Alma 实例名称,这是您的 ALMA URL 的第一部分。如果您的 Alma URL 是 bibsys-k.alma.exlibrisgroup.com,则 bibsys-k 是实例名称。
  • institution 是 Alma 机构名称,例如 47BIBSYS_UBO
  • username 是您的用户名。
  • 如果想要每次都要求输入密码,则可以留空 password。这是推荐的解决方案,因为密码以纯文本形式存储。
  • browser 可以设置为 firefoxchromephantomjs。必须安装相应的驱动程序(Firefox 的 GeckoDriver、Chrome 的 ChromeDriver)。我已经在这三个浏览器上都取得了成功,但有时浏览器会在某个时间点开始崩溃或冻结。这时首先尝试升级 Selenium 和浏览器驱动程序。如果仍然有问题,请暂时切换到另一个浏览器。如果 仍然不起作用,可能是 slipsomat 出了问题。请提交问题。

调试

如果已安装 inquirer(Windows 上不工作),则在脚本崩溃时,slipsomat 将提供一些选项以启动调试会话。

入门

slipsomat 命令将为您提供交互式外壳,您可以在其中输入各种命令。键入 help 以获取概览。

要在空目录中开始,请键入 pull 以从您的 Alma 实例中拉取所有 XSLT 文件并将它们存储在名为 xsl 的文件夹中(如果尚不存在则创建)。可选地,键入 defaults 以拉取所有默认信函。请注意,还会创建一个 status.json 文件。该文件包含所有信函的校验和,允许脚本轻松跟踪哪些文件已被修改(本地或 Alma)。

一旦您有一个包含所有文件的目录,您可以根据需要将其置于版本控制之下。以下是我们用于文件的存储库:https://github.com/scriptotek/alma-letters-ubo

工作流程

在具有 slipsomat.cfg 文件的目录(工作区目录)中

  1. 首先执行 git pull 以拉取其他用户的更改。

  2. 使用 slipsomat 命令启动脚本

  3. 可选:slipsomat 命令 pull 将检查是否有文件在 Alma 中直接更新(未使用 slipsomat),获取这些文件并更新 status.json。比较是通过比较 Alma 中的更新日期与 status.json 中的更新日期来进行的。Alma 不提供更新的时间粒度,只有日期,因此对于今天已修改的文件,脚本将打开 Alma 中的信函以获取文本并计算校验和以与 status.json 中的校验和进行比较。注意:如果您跳过此步骤,则在尝试推送已被远程修改的信函(校验和不匹配)时,slipsomat 仍会警告您,但您将不得不手动合并。

  4. 修改一个或多个信函后,运行 slipsomat 命令 push 将更新推送到 Alma。比较是通过比较本地文件的校验和与 status.json 中的校验和来进行的。在做出任何更改之前,脚本将打印文件列表并确认您想要上传这些文件。

  5. 测试修改后,请执行 git commit(请记住包括更新的 status.json)和 git push

外壳具有命令历史记录和制表符完成。例如 test Ful<tab><tab>

更新默认信函

  • 使用 slipsomat 命令 defaults 拉取所有默认信函。请注意,该命令运行需要一些时间,因为所有信函都必须进行检查,因为 Alma 提供有关默认信函最后更新时间的任何信息。

测试信函的输出

Alma 允许你在“通知模板”页面测试输出,但每次手动进行都令人乏味,因此 slipsomat 为你提供 test 命令来自动化这个过程。

slipsomat.cfg 文件所在的同一文件夹中创建一个名为 "test-data" 的文件夹。添加一个或多个你想要测试的 XML 文件。

启动 slipsomat 并运行以下命令:

test filename.xml

其中 filename.xml 是 "test-data" 文件夹中的一个文件。这将上传 XML 文件到“通知模板”页面,并将生成的 HTML 输出和截图存储在 "test-data" 文件夹中。

要同时测试多个文件,可以使用 Unix 风格的路径名模式扩展(“globbing”)。例如,要测试 "test-data" 文件夹中的所有 XML 文件,使用 * 通配符字符。

test *.xml

默认情况下,命令将使用英语作为字母语言。要测试其他语言,只需在文件名后附加 @ 和语言代码。例如

test filename.xml@nn

您甚至可以一次测试多种语言,通过指定用逗号分隔的多个语言代码。例如

test filename.xml@en,no,nn

这也可以与 globbing 结合使用。要测试 "test-data" 文件夹中的所有 XML 文件在三种语言中

test *.xml@en,no,nn

另请参阅

开发

可编辑安装

如果您想要一个可编辑的安装,您可以自行修改

git clone https://github.com/scriptotek/alma-slipsomat.git
cd alma-slipsomat
pip install -U -e .

将 slipsomat 作为 Python 库使用

假设您已经创建了一个 slipsomat.cfg 文件,以下是开始实验的方法

from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from slipsomat.worker import Worker
from slipsomat.slipsomat import TemplateConfigurationTable

worker = Worker('slipsomat.cfg')

# Start the browser and log in using the credentials from slipsomat.cfg
worker.connect()

# Open and parse the letters table
table = TemplateConfigurationTable(worker)

# Open the default version of the SmsFulCancelRequestLetter letter
table.open_default_letter('xsl/letters/sms/SmsFulCancelRequestLetter.xsl')

# Use Selenium to click some element
wait = worker.waiter()
element = wait.until(EC.element_to_be_clickable((By.XPATH, '//button[@aria-label="Open Alma configuration"]')))
element.click()

注意:在开发过程中,将 slipsomat.cfg 中的 default_timeout 设置为小值(例如 3 秒)可能是个好主意,以避免每次编写错误选择器时都不得不等待很长时间。

项目详细信息


下载文件

下载适合您平台的应用程序。如果您不确定要选择哪个,请了解有关 安装包 的更多信息。

源分布

slipsomat-0.3.1.tar.gz (16.3 kB 查看哈希值)

上传时间

构建分布

slipsomat-0.3.1-py2.py3-none-any.whl (17.4 kB 查看哈希值)

上传时间 Python 2 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面