同步ALMA滑动。
slipsomat的Python项目详细描述
slipsomat
是一个小工具,用于使用
硒浏览器自动化。它允许您保持最新的本地
所有信件的副本,这样你就可以控制它们的版本。和
通过存储所有字母的校验和,它可以警告您
重写已被其他人修改的信件而不拖动
在他们的变化中。这个工具的存在是因为alma没有提供同步字母的方法, 只有一个web表单来编辑它们。超过100个不同的字母,编辑它们 使用web表单(没有语法突出显示)非常乏味。我们也有 在意见交流中提到这一点-请随意添加您的投票 我们的想法在那里
设置
slipsomat应该在大多数平台上与python 3.5和更高版本一起工作。 请使用我们的 问题跟踪程序 报告任何问题。
使用pip安装:
pip install -U slipsomat
安装后,您可以从包含
slipsmat.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
。设置auth_type=saml
对于shibboleth或其他saml提供程序(如果问题与 您的提供商!)。 设置auth_type=basic
以使用标准ALMA登录。 域
是您的feide域,例如uio.no
。如果你不使用费德作为你的 saml provider,您可以将其保留为空。instance
是alma实例名,它是alma url的第一部分。 如果您的alma url是bibsys-k.alma.exlibrisgroup.com
,则bibsys-k
是 实例名称。机构
ALMA机构名称,例如47bibsys_ubo
用户名
是您的用户名。密码
如果每次都需要,则可以留空。这个 是推荐的解决方案,因为密码以纯文本存储。浏览器
可以设置为firefox
,chrome
或phantomjs
。相应的 必须安装驱动程序(geckodriver for firefox,chrome driver for chrome)。 我在这三个浏览器上都取得了成功,但有时一个浏览器可以 在某个时刻开始崩溃或冻结。接下来要做的第一件事就是升级 selenium和浏览器驱动程序。如果仍然有问题,请切换到 另一个浏览器。如果没有帮助,可能会有问题 带滑梯。请提交问题。
调试
如果您安装了inquirer
如果脚本崩溃,您可以选择启动调试会话E.P/P>
开始
slipsomat
命令将为您提供一个交互式shell,您可以在其中键入各种
命令。键入帮助
查看概述。
要在空目录中开始,请键入pull
从alma中拉入所有xslt文件
实例并将其存储在名为xsl
的文件夹中(如果尚未创建,则将创建)。
或者,键入defaults
也可以输入所有默认字母。注意astatus.json
文件
也被创造出来。它保存所有字母的校验和,允许脚本轻松保存
跟踪哪些文件已被修改(本地或在alma中)。
一旦你有了包含所有文件的目录,你就可以自由地将它们置于版本控制之下 如果你愿意的话。以下是我们用于文件的回购协议:https://github.com/scriptotek/alma letters ubo
工作流程
在工作区目录中(具有slipsmat.cfg
文件的目录):
首先执行
git pull
从其他用户中提取更改。slipsomat
启动脚本可选:slipsmat命令
pull
将检查是否更新了任何文件 直接在alma中(不使用slipsomat
),获取并更新status.json
。 比较是通过比较alma中的更新日期和status.json
中的更新日期来完成的。 alma不提供更新的时间粒度,只提供日期,因此对于 今天修改后,脚本将在alma中打开信件,获取文本并计算 与status.json
中的校验和进行比较。 注意:如果您跳过此步骤,如果您尝试按 已远程修改的字母(校验和不匹配),但您将 必须手动合并。对一个或多个字母进行修改后,运行slipsmat命令
push
将更新推送到alma。比较是通过比较本地文件的校验和来完成的 校验和在status.json
中。在进行任何更改之前,脚本将打印一个列表 ,并确认要上载这些文件。在测试了修改之后,执行
git commit
(记住要包括更新的status.json
)和git push
shell有一个命令历史记录和制表符完成。例如test ful<;tab>;
更新默认字母
- 使用
slipsomat
命令defaults
输入所有默认字母。 请注意,该命令需要相当长的时间才能运行,因为所有字母都必须 检查,因为alma没有提供有关默认值 信件最后一次更新。
测试字母的输出
alma允许您在通知模板页上测试输出,但执行此操作
每次手动操作都很枯燥,因此slipsomat为您提供test
命令
使之自动化。
在slipsomat.cfg
文件所在的文件夹中创建一个名为"test data"的文件夹。
添加一个或多个要在其中测试的XML文件。
启动slipsomat并运行命令
test filename.xml
其中filename.xml
是"测试数据"文件夹中的一个文件。这将上载
XML文件到通知模板页并存储结果HTML输出
以及"测试数据"文件夹中的屏幕截图。
要同时测试多个文件,可以使用unix样式的路径名模式
扩张("全球化")。例如,要测试"测试数据"文件夹中的所有XML文件,请使用
*
通配符:
test *.xml
默认情况下,该命令将使用英语作为字母语言。测试
另一种语言,只需将@
和语言代码附加到文件名。
例子:
test filename.xml@nn
甚至可以通过指定多个语言一次性测试多个语言 以逗号分隔的代码,如so:
test filename.xml@en,no,nn
这也可以与globbing结合使用。测试 三种语言的"测试数据"文件夹:
test *.xml@en,no,nn
另请参见
- 打开的问题
- xslt文件的alma letters ubo repoalma letters ubo repo
开发
可编辑安装
如果您想要一个可编辑的安装程序,您可以攻击自己:
git clone https://github.com/scriptotek/alma-slipsomat.git
cd alma-slipsomat
pip install -U -e .
将slipsomat用作python库
假设您已经创建了一个slipsmat.cfg
文件,下面是如何开始
实验:
fromselenium.webdriver.common.byimportByfromselenium.webdriver.supportimportexpected_conditionsasECfromslipsomat.workerimportWorkerfromslipsomat.slipsomatimportTemplateConfigurationTableworker=Worker('slipsomat.cfg')# Start the browser and log in using the credentials from slipsomat.cfgworker.connect()# Open and parse the letters tabletable=TemplateConfigurationTable(worker)# Open the default version of the SmsFulCancelRequestLetter lettertable.open_default_letter('xsl/letters/sms/SmsFulCancelRequestLetter.xsl')# Use Selenium to click some elementwait=worker.waiter()element=wait.until(EC.element_to_be_clickable((By.XPATH,'//button[@aria-label="Open Alma configuration"]')))element.click()
注意:在开发过程中,最好在
slipsmat.cfg
为一个小值(如3秒),以避免等待
每次编写错误的选择器时都会很长时间。