跳转到主要内容

VtES卡组管理器

项目描述

需求

所需的Python模块有

Sutekh 可以下载官方卡牌列表和裁决。如果您连接有限,则需要从以下地址下载官方卡牌列表:

到本地文件并使用它。

入门指南

以下说明假设您已运行 setup.py install 或 setup.py develop,这将创建脚本的正确名称。

大多数操作都可以通过图形界面完成。您第一次运行 Sutekh 时会提示加载 WW 卡牌列表。以下说明涵盖了命令行工具 sutekh-cli,而图形界面的帮助信息可以在帮助菜单中找到,或者在 sutekh/docs/html_docs/ 中。

要开始使用 sutekh-cli,请运行

sutekh-cli --help
sutekh-cli -c --fetch-files # download the cardlist and rulings

sutekh-cli -c -r vtes_card_file.txt # local copy
sutekh-cli --ruling-file vtes_ruling_file.html (optional)

通过图形界面可以操作和检查卡牌列表和卡牌集。

可以查询单个卡牌:

sutekh-cli --print-card='Aching Beauty'

同样,也可以导出和读取卡牌集。

sutekh-cli --save-cs "Toreador Deck" --cs-filename=deck.xml

将名为“Toreador Deck”的卡牌集保存到“deck.xml”文件中,而

sutekh-cli --read-cs="vampires.xml"

加载保存为vampires.xml的卡牌集

可以使用以下命令将卡牌集打印到屏幕:

sutekh-cli --print-cs='Toreador Deck'

可以使用以下命令查看卡牌集列表:

sutekh-cli --list-cs

当重新导入官方卡牌列表和裁决时,存在一个 -reload 选项。这将转储并重新加载卡牌列表和所有卡牌集。

通常用作:

sutekh-cli -c --reload --fetch-files

可以使用命令行工具运行过滤器:

sutekh-cli --filter='<Filter>'

将使用给定过滤器的 WW 卡牌列表进行过滤

使用 -filter-detailed 将打印所有匹配卡牌的完整详细信息,而不仅仅是名称。

还可以通过使用 -filter-cs 选项在卡牌集上运行过滤器。

因此

sutekh-cli --filter="CardText='stealth' and CardType='Action Modifier'" \
--filter-cs='Tzimisce deck' --filter-detailed

将列出并打印包含“stealth”的卡牌文本的所有行动修正器的详细信息,对于名为“Tzimisce deck”的卡牌集

Windows 开发快速入门

最简单的方法是使用提供的安装程序。该安装程序将所需的文件捆绑在一起,包括 gtk、python 和运行 sutekh 所需的模块。安装程序目前使用 python 3.8。

对于开发,我们建议使用来自 https://www.msys2.org/ 的 msys2,因为这是在 windows 上安装 gtk3 的推荐方式。

安装以下软件包以在 mingw64 环境中获得 gtk3:
  • pacman -Ss mingw-w64-x86_64-gtk3 mingw-w64-x86_64-python-pip mingw-w64-x86_64-python-gobject

使用 mingw64 位环境,使用 pip 安装其他依赖项
  • SQLObject

  • confiobj

  • ply

  • keyring

要运行测试,您还需要安装
  • pytest

  • mock

运行 easy_install <Sutekh Egg File>。

运行 <python install dir>/Scripts/sutekh

MacOS 开发快速入门

目前 Sutekh 中的 MacOS 支持没有得到充分测试,但应该可以工作。

您需要安装以下 homebrew 软件包
  • python@3.8

  • gtk+3

  • gobject-introspection

  • librsvg

  • adwaita-icon-theme (或任何其他合适的图标主题)

剩余的所需软件包应使用 pip3 安装
  • keyring

  • ply

  • sqlobject

  • configobj

  • PyGObject

  • pycairo

Sutekh 可以从源代码在虚拟环境中安装。

捆绑安装程序

我们有一个 Windows 安装程序,它将 Sutekh 和所有必需的依赖项作为独立应用程序安装。可以从 sourceforge 下载。您需要添加安全异常才能运行安装程序。

有一个实验性的 MacOS 捆绑包可用。由于这个 MacOS 捆绑包的构建方式,它只支持 MacOS 版本 >= 10.15。要使用它,请解压缩 tarball,然后从文件管理器启动提取的应用程序。您需要添加安全异常才能使其工作。

从 Python 解释器使用 Sutekh

Sutekh 还允许您在 Python 解释器内部与数据库交互。

python
>>> from sutekh import *
>>> start()

示例

打印所有Malkavian牌

>>> for oC in Clan.byName('Malkavian').cards:
...           print oC.name

>>> oTony = AbstractCard.byName('Tony (Group 3)')
>>> print oTony
>>> for oP in oTony.discipline:
...     print oP.level, oP.discipline
>>> print oTony.cardtype
>>> print oTony.capacity
>>> print oTony.clan
>>> print oTony.group
>>> print oTony.text
>>> oMariel = list(AbstractCard.select(AbstractCard.q.name.startswith('Mariel')))[0]

过滤

>>> aC = AbstractCard.select(CardTextFilter('Laibon').getExpression())
>>> for oC in aC:
...     print oC.name, oC.cardtype

>>> oF1 = DisciplineFilter('Dementation')
>>> oF2 = CardTextFilter('bleed')
>>> oF3 = CardTypeFilter('Action')
>>> oF4 = CardTypeFilter('Action Modifier')
>>> oF5 = FilterOrBox([oF3,oF4])
>>> oF = FilterAndBox([oF1,oF2,oF5])
>>> for oC in AbstractCard.select(oF.getExpression()):
...     print "---", oC.name, "---"
...     print oC.text

数据库备注

使用其他数据库后端

Sutekh主要使用sqlite开发,但由于它使用SQLObject来管理数据库,因此可以通过指定合适的URI来尝试其他数据库后端。对于sutekh和sutekh-cli,-d参数指定要使用的数据库。

这也可以通过在配置文件中使用“数据库URL”参数来设置GUI。

Sutekh通常使用MySQL和PostgreSQL进行测试。

要使用PostgreSQL数据库与Sutekh,指定:

sutekh -d postgres://username@host/database

由于涉及编码问题,SQLObject 0.9中MySQL的URL语法相对复杂。我们使用utf8作为编码并指定为

mysql://username@host/database?sqlobject_encoding=utf8&charset=utf8

根据我们的经验,utf8是最稳健和可移植的选择。

当使用sqlobject 0.10或更高版本时,sqlobjct_encoding参数不再需要,URI可以简化为

mysql://username@host/database?charset=utf8

MySQL 4或更早版本肯定不会工作。这不太可能改变。

其他数据库未经测试。

要在数据库之间导出数据,您可以使用zip文件支持。例如(假设新数据库已经导入了卡列表和裁决):

sutekh-cli -d <old_database_uri> --dump-zip=zipfile.zip
sutekh-cli -d <new_database_uti> --restore-zip=zipfile.zip

禁用SQLObject缓存

当使用默认的sqlite数据库时,Sutekh禁用了SQLObject的内部缓存。由于许多SQLObject缓存的项对Sutekh来说并不重要,并且在大规模卡片集加载时,维护缓存的开销是显著的,因此禁用其他数据库的缓存也可能有益。建议在SQLObject 0.12及更高版本中禁用缓存,其中对缓存清除算法的更改对性能的影响更为明显。

要为其他数据库禁用缓存,请将“?cache=False”附加到数据库URL:

sutekh -d postgres://username@host/database?cache=False

sutekh -d mysql://username@host/database?cache=False&charset=utf8

聚类插件

Sutekh可以使用Cluster 3.0 [1]数据聚类软件包挖掘卡组,以获取相关卡片组。您需要下载Cluster 3.0的一个版本(如果您想快速在Unix平台上启动和运行,则命令行版本依赖性最少)。一旦创建了相关卡片的多个集群,聚类插件会为您提供从任何看起来有希望的集群创建牌组的选择。

您还需要获得Pycluster(来自同一页面),它包含Cluster 3.0的Python绑定。或者,您可以使用Bio.Cluster版本的Pycluster。

您可能还想获取一个查看聚类输出的程序,尽管Sutekh目前不支持输出集群。一个这样的查看器是TreeView(遗憾的是基于Java)[2]。

如果您没有这些聚类软件包,Sutekh将简单地不会加载聚类插件,但仍然可以正常运行。

[1] http://bonsai.ims.u-tokyo.ac.jp/~mdehoon/software/cluster/software.htm [2] http://jtreeview.sourceforge.net/

如果您想修改聚类插件,您可以在以下位置找到一些用法示例:

[3] http://www.dalkescientific.com/writings/NBN/clustering.html [4] http://b-src.cbrc.jp/markup/Pycluster-1.29/python/test/test_Cluster.py

理念

概念上,Sutekh围绕两个数据类型组织,即AbstractCard和PhysicalCard。AbstractCard表示一个概念卡(例如,“.44 Magnum”),而PhysicalCard存储有关实际矩形纸牌的信息(例如,我的第三张来自VTES扩展的.44 Magnum副本)。

其他备注

Sutekh和gtk主题

通过 gtk 的主题机制,可以非常广泛地自定义 Sutekh 的外观和感觉。在这种情况下,Sutekh 使用“Sutekh”作为应用程序名称。所有对话框都使用 Sutekh.dialog。

特别值得注意的是,未选择的面板标题命名为 'frame_title',而当面板被选中时,标题命名为 'selected_title'。这允许轻松地自定义选中的面板的外观。例如,通过在您的 gtkrc 文件中放入以下内容:

style "title_selected" {
   fg[NORMAL] = "red"
}

小部件“Sutekh.*.selected_title”样式“title_selected”

选中的面板将使用红色文本标记。

其他特别命名的控件是卡片列表控件。

不同的框架分别命名为

“抽象卡片列表”、“物理卡片列表”、“物理卡片集卡片列表”、“抽象卡片集卡片列表”、“卡片文本”、“抽象卡片集列表”、“物理卡片集列表”

卡片列表(AbstractCard、PhysicalCard 和卡片集)使用的 TreeView 控件命名为“normal_view”,但在可编辑模式下,它们被命名为“editable_view”。

用户文档

用户文档可在 sutekh/docs 目录下找到。文档以 sutekh/docs/textile 目录中使用的 textile [1] 标记文本文件维护,并使用 pytextile [2] 和包含的 textile2html.py 脚本来将其转换为 HTML,以便在 gui 中显示。

[1] http://textile.thresholdstate.com/

[2] https://pypi.ac.cn/project/textile/

测试 Sutekh

Sutekh 有一个测试套件 - 请参阅 tests 目录。

测试套件需要 pytest [1] 来运行。

默认情况下,测试将使用 sqlite 内存数据库,因为这是最简单的,但,由于通常需要针对其他数据库进行测试,可以使用 SUTEKH_TEST_DB 环境变量来提供要使用的 URI。例如,要测试 postgres 数据库:

export SUTEKH_TEST_DB="postres://username@host/test_database"
pytest <test to run>

请注意,测试套件会创建和删除表多次,因此可能会非常慢。另外,请不要针对您的个人卡片数据库运行测试,因为您将丢失数据。为此请使用专用测试数据库。

将 SUTEKH_SAVE_DB 设置为 yes 将在最后一次测试运行结束时保留数据库状态。这可以与 with-ids 选项结合使用,以选择要运行的测试,并在特定测试后保存状态。

[1] https://pytest.cn/en/stable/

从其他 VTES 卡片管理程序导入/导出

Sutekh 可以读取由“Anarch Revolt Deck Builder” (http://code.google.com/ardb) 和“Fragment of the Elder Library Deck Builder” (http://csillagbolcselet.hu/feldb/) 生成的库存和牌组文件。文件将被导入到 Sutekh 中作为牌组。由于程序之间的差异,一些概念不会转移。

Sutekh 还可以将牌组导出到这些格式,但可能不会适用于 ARDB 或 FELDB 的所有版本。

Sutekh 还支持将库存和牌组导入/导出到 Secret Library (http://www.secretlibrary.info/)。

Sutekh 还支持将牌组导出到以下 VtES 在线实现:* Lackey CCG * JOL * Tabletop Simulator(需要访问 VtES 牌组构建 TTS 模块)

卡片名称

Sutekh 为每张卡片维护一个唯一的名称。对于图书馆卡片,这只是卡片名称,但对于吸血鬼,由于有普通和高级吸血鬼,并且一些吸血鬼在不同的组中有多个版本,Sutekh 将组编号和“高级”状态追加到名称中。

例如,'Theo Bell' 的不同版本存储为 * Theo Bell (Group 2) * Theo Bell (Group 2) (Advanced) * Theo Bell (Group 6)

如果导入吸血鬼,Sutekh 将默认使用首次发行的版本,如果无法确定正确的版本,则 'Theo Bell' 将被导入为 'Theo Bell (Group 2)'

获取当前开发代码

苏特克(Sutekh)托管在sourceforge上,使用git。有关如何克隆存储库的详细信息,请参阅https://sourceforge.net/p/sutekh/sutekh/

项目详情


下载文件

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

源代码分发

Sutekh-2.0.0.tar.gz (609.3 kB 查看散列值)

上传时间 源代码

构建分发

Sutekh-2.0.0-py3.9.egg (1.3 MB 查看散列值)

上传时间 源代码

Sutekh-2.0.0-py3-none-any.whl (634.9 kB 查看散列值)

上传时间 Python 3

由以下支持