le utils包含kolibri、ricecooker和kolibri studio中使用的共享常量。
le-utils的Python项目详细描述
实用程序
le utils
包包含ricecooker、kolibri和
科利布里工作室。此软件包不打算直接安装或使用,但是
在所有学习平等产品中扮演重要角色。
常数
中的python文件用于
定义要从python代码中使用的常量(通常采用all_caps
格式)。
在
用于前端代码的文件夹。
这意味着,添加一个新常量可能需要编辑多个文件:python
常量定义文件、json文件和任何相关的测试。
语言
该文件le_utils/constants/languages.py和 中的查找表 定义ricecooker、kolibri和 以及Kolibri Studio,以识别不同语言的教育内容。
内部表示使用两个字母代码的混合(例如en
),
两个字母和国家代码(例如,巴西葡萄牙语为pt br
),
以及三个字母代码(例如,zul
表示zulu)。
为了确保在与 Kolibri生态系统(例如,向Kolibri工作室上传新内容时),您 必须使用helper方法查找语言对象
>>> from le_utils.constants.languages import getlang
>>> language_obj = getlang('en') # lookup language using language code
>>> language_obj
Language(native_name='English', primary_code='en', subcode=None, name='English', ka_name=None)
如果查找失败,函数getlang将返回none
。在这种情况下,你
可以尝试按名称查找或按下面定义的Alpha2代码(ISO_-1)查找方法。
一旦您成功地查找了语言对象,就可以获得
表示语言代码来自语言对象的code
属性:
>>> language_obj.code
'en'
ricecooker api期望这些内部表示语言代码 为所有属性(频道语言、节点语言和文件语言)提供。
更多查找帮助程序方法
helper方法允许您按名称查找语言:
>>> from le_utils.constants.languages import getlang_by_name
>>> language_obj = getlang_by_name('English') # lookup language by name
>>> language_obj
Language(native_name='English', primary_code='en', subcode=None, name='English', ka_name=None)
模块定义了另外两种语言查找方法:
- 使用
getlang_by_native_name
按本机语言名称查找名称, 例如,您可以寻找"fran_ais"来查找法语。 - 使用
getlang_by_alpha2
使用标准的两个字母代码执行查找 定义于 由pycountries
库支持。
有用的链接
以下网站适用于研究语言代码:
许可证
Kolibri和Kolibri Studio中的所有内容节点都必须具有许可证。文件
le-utils/constants/licenses.py包含
用于标识许可证类型的常量。这些常数应该是
与helper方法结合使用
创建许可证
对象。
若要初始化许可证对象,必须指定许可证类型和 版权所有人(str)。例如:
from ricecooker.classes.licenses import get_license
from le_utils.constants import licenses
license = get_license(licenses.CC_BY, copyright_holder="Khan Academy")
注意:除
公共领域n版权持有者的许可证
不能为无。
内容类型(contentnode子类)
Kolibri生态系统中的内容项有几种。类型
每个对象的属性可以是("topic"、"video"、"audio"、"exercise"中的一个
"文档",或"HTML5"。
有关最新列表,请参见常量/content-kinds.py。
当前支持的内容类型有:
- 主题节点(文件夹)
- 由视频文件和字幕支持的视频内容节点
- 音频文件支持的音频内容节点
- 文档文件(pdf或epub)支持的文档内容节点
- HTML5压缩文件支持的HTML5应用程序内容节点
- 幻灯片内容节点
- 练习内容节点
kind
属性标识
不同于ricecooker、studio和kolibri的数据模型:
- ricecooker.classes.nodes.contentnode: 用于存储将新内容上载到Kolibri Studio所需元数据的内存中内容节点
- 内容管理。内容管理。模型。内容节点: 与Kolibri Studio频道关联的树中的一个节点。
- kolibri.core.content.models.contentnode: 树中的节点,用于Kolibri上某个频道的特定版本。
有关可用的通用和不同模型属性的详细说明 在平台每个部分的内容节点上,请参见本文档
文件格式(扩展名)
这些是表示文件类型的低级常量,本质上是
与文件扩展名同义。文件格式mp4
非常方便
文件扩展名的代理mp4
。
参见文件格式.py
以及资源/formatlookup.json
格式预设(contentnode文件关系)
每个contentnode都与一个或多个
此关联通过文件的格式预设属性来表示。
格式预设是文件在内容节点中扮演的角色,
例如,缩略图、高分辨率视频或低分辨率视频。
注意,格式预设在
常量/format\u presets.py
作为json,resources/presetlookup.json" rel="nofollow">资源/presetlookup.json
可以将内容节点上的不同格式预设视为不同的"插槽"
由文件填充,某些插槽是必需的,而其他插槽是可选的。
例如,要使video node(kind=video
)成为有效的内容节点,它必须
至少有一个与之相关的视频文件填充高分辨率视频
插槽或低分辨率视频
插槽。某些插槽中可以有多个文件,
像
视频字幕
预设一样,因为视频节点可以多个字幕
与它关联,用于不同的语言。
下图说明了内容节点、文件和格式预设之间的结构。
在所示示例中,视频节点是内容类型video
的,并且有三个
相关文件:
- 第一个文件具有文件格式
mp4
和格式预设高分辨率视频
- 第二个文件也采用
mp4
格式,但与内容节点的关系 是不是低分辨率视频
- 格式为
vtt
的第三个文件与视频字幕的格式预设
格式预设在整个Kolibri内容生态系统中起着至关重要的作用, 管理由ricecooker、kolibri studio应用的内容验证规则 编辑规则和kolibri上的呈现逻辑。
文件类型(ricecooker.files.file子类)
在ricecooker上用作标识符,表示序列化时的文件类型 作为内容导入过程的一部分,将内容转换为json。注意,文件类型常量 是ricecooker操作的内部,不在kolibri studio或kolibri中使用。
练习
该文件le-utils/constants/exercises.py 包含不同问题类型和掌握模式的标识符。
Proquint通道令牌
文件包含helper方法
用于生成内容频道的proquint标识符。这些是短字符串
在没有全键盘的设备上很容易输入,例如sutul hakuh
角色
角色
常量用于
科利布里站台。目前,仅支持两个级别的可见性:
学习者
(默认):所有Kolibri用户都可以看到内容节点coach
:内容节点仅对kolibri coach和管理员可见