VtES卡组管理器
项目描述
需求
所需的Python模块有
SQLObject [ https://pypi.ac.cn/project/sqlobject/, 版本 0.9.0 或更高]
singledispatch [ https://pypi.ac.cn/project/singledispatch/ ]
PLY (用于解析查询语言) [ https://pypi.ac.cn/project/ply/ ]
sqlite (或计划使用的数据库的模块)
PyGtk (用于GUI) [ https://pypi.ac.cn/project/pygtk/ ]
librsvg2用于sutekh图标
configobj用于管理配置文件 [ https://pypi.ac.cn/project/configobj/ ]
keyring以便秘密库插件可以将凭证存储在系统密钥链中 [ https://pypi.ac.cn/project/keyring/ ]
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 软件包
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 中显示。
测试 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 选项结合使用,以选择要运行的测试,并在特定测试后保存状态。
从其他 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的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 49f12864a1f47d452935732e0e3fc4e665efea6378eb35a0823e344c5cc05997 |
|
MD5 | 42f531fe21a6ba7d85a08eccbc461b22 |
|
BLAKE2b-256 | f1698e07843e25a0886871c460803c70d129e52955e4196772e6c1674de2fbb9 |
Sutekh-2.0.0-py3.9.egg的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 55b7d27d85fa842a48259cda58c53ddbbdd22e1f34c38d5e56602958e692b37d |
|
MD5 | 4345ca1381afe8287f9fb49895fb9873 |
|
BLAKE2b-256 | 93619fc38460208a56fb23c7caf6ac6008ea3839ae75cb6aa07ff1058d0a3bf8 |
Sutekh-2.0.0-py3-none-any.whl的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 33af011416be1537bee91e6b01e7233b14a151ac14a25ce81de785ee450e6071 |
|
MD5 | d3fbedf8c13420ca29e25b6520edf305 |
|
BLAKE2b-256 | e513625ec25c9d74921b8e0a27f2c0b412e979bdba69e48b6e8719b95cc38cce |