6 个版本
0.9.6 | 2024年5月1日 |
---|---|
0.9.5 | 2024年4月27日 |
0.9.2 | 2024年3月26日 |
0.1.0 |
|
#455 in 解析实现
320KB
1K SLoC
xmltv
使用 serde 的电子节目指南 (EPG) 解析器和生成器 XMLTV。
功能
- 将某些元素(如
<new/>
)扁平化为布尔值,以避免样板代码 - 提供 CLI 以执行某些操作
使用方法
库
use std::str::FromStr;
use quick_xml::de::from_str;
use quick_xml::se::to_string_with_root;
use xmltv::*;
fn main() {
let xml = "<tv>\
<programme channel=\"1\" start=\"2021-10-09 12:00:00 +0200\" stop=\"2021-10-09 13:00:00 +0200\">\
<title>Les feux de l'amour é</title>\
</programme>\
<programme channel=\"2\" start=\"2021-10-09 12:20:00 +0200\" stop=\"2021-10-09 12:35:00 +0200\">\
<title lang=\"fr-FR\">Le journal</title>\
</programme>\
<programme channel=\"3\" start=\"2021-10-09 13:00:00 +0200\" stop=\"2021-10-09 13:40:00 +0200\">\
<title>Le journal</title>\
</programme>\
</tv>";
// deserialize into the root object (Tv)
let item: Tv = from_str(xml).unwrap();
// serialize into string
let _out = to_string_with_root("tv", &tv).unwrap();
}
为了序列化 大文件,您可以查看 tests/from_files.rs::test_programmes_from_files
。它逐个读取节目,而不将所有内容加载到 RAM 中。
命令行界面 (CLI)
使用 cargo install xmltv
或二进制文件安装它。
-c <频道 列表>
或--channels=<频道 列表>
:您想要保留的频道,例如:-c tf1,m6,Arte
。您还可以使用 TUI 通过-c ?
检查它们--cleanse <项目 列表>
:您想要从 XMLTV 文件中删除的项目。我制作了这个选项,因为在 XMLTV 文件中有很多数据,我们不需要所有这些数据,并且我们可能想要减小文件的大小。可用的项目有credits
:删除所有信用。如果您想删除其中一些,请使用directors
actors
writers
adapters
producers
composers
editors
presenters
commentators
guests
categories
new
countries
keywords
sub-titles
languages
videos
audios
subtitles
last-chances
descriptions
dates
origin-languages
length
premieres
previously-showns
ratings
star-ratings
reviews
images
episode-nums
icons
urls
-数字
或--days 数字
:保留 EPG 中的天数-o <FILE> 或
--output <FILE>
:您希望生成的新的 XMLTV 文件,否则将打印到控制台。
路线图
- 命令行界面
- 限制为 N 天
-d <number>
。-3
表示从今天起接下来的3天 - 清理:移除一些不需要的元素以使其更轻量。您可以移除描述
--no-description
、所有版权信息--no-credits
或部分信息(如导演--no-directors
、演员--no-actors
、嘉宾--no-guests
等),--no-categories
、--no-keywords
、--no-countries
等。您还可以移除不需要的时间段(如0:00-6:00和/或23:30-23:59)或不需要的天数--days 1,2,3,5,6,7
(这里没有星期四,第一天是星期一)。 - 从配置文件加载外部过滤器(
--l <FILE>
或--load <FILE>
)以避免命令行参数过多或仅为了跟踪喜欢的节目。 - 导出到各种格式(RSS/Atom/Jsonfeed、iCal、JSON、CSV)
- 限制为 N 天
- 终端用户界面(TUI)
- 检查要过滤的频道
- 在标题(以及可能的其他如关键词、描述、版权信息)中搜索
- 显示 EPG
- 将选定的节目导出到日历(
.ics
) - 配置收藏夹和过滤器?
资源
XMLTV DTD 在这里:https://github.com/XMLTV/xmltv/blob/master/xmltv.dtd
依赖项
~0.4–7.5MB
~50K SLoC