同步ALMA滑动。

slipsomat的Python项目详细描述


pypipypi-python versionpypi-license<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
  • 用户名是您的用户名。
  • 密码如果每次都需要,则可以留空。这个 是推荐的解决方案,因为密码以纯文本存储。
  • 浏览器可以设置为firefoxchromephantomjs。相应的 必须安装驱动程序(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文件的目录):

  1. 首先执行git pull从其他用户中提取更改。

  2. slipsomat启动脚本

  3. 可选:slipsmat命令pull将检查是否更新了任何文件 直接在alma中(不使用slipsomat),获取并更新status.json。 比较是通过比较alma中的更新日期和status.json中的更新日期来完成的。 alma不提供更新的时间粒度,只提供日期,因此对于 今天修改后,脚本将在alma中打开信件,获取文本并计算 与status.json中的校验和进行比较。 注意:如果您跳过此步骤,如果您尝试按 已远程修改的字母(校验和不匹配),但您将 必须手动合并。

  4. 对一个或多个字母进行修改后,运行slipsmat命令push 将更新推送到alma。比较是通过比较本地文件的校验和来完成的 校验和在status.json中。在进行任何更改之前,脚本将打印一个列表 ,并确认要上载这些文件。

  5. 在测试了修改之后,执行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

另请参见

开发

可编辑安装

如果您想要一个可编辑的安装程序,您可以攻击自己:

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秒),以避免等待 每次编写错误的选择器时都会很长时间。

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

推荐PyPI第三方库


热门话题
java是否可以将一半的文本绘制成不同的颜色?   java如何在Eclipse中生成Javadoc HTML文件?   带有时间戳的java“select”preparedStatement返回始终为空的记录集   java将无符号类型写入Netty ChannelBuffer   java动态资源名称   java lookupDefaultPrintService()不返回系统默认打印机   java如何在播放模板中翻译#{get'title'/}?   java为什么JSR352的ItemWriter接口中有一个checkpointInfo?有任何示例实现吗?   在方法外部声明的Java引用变量存在于堆栈或堆上   java类、异常、用户输入   java JApplet通过Eclipse而不是web浏览器连接到本地主机Mysql   java soap metro转储