English / 英文
中文 / Chinese
Project Overview / 项目介绍
- TV-Like: convert web pages into TV-ready structured content.
- TV-Like:把网页内容转换成适合电视端消费的结构化结果。
TV-Like is a lightweight extraction engine. It uses readable YAML rules to describe which sections, lists, text, images, and links should be extracted from a page, then returns a stable JSON-like structure for TV apps and large-screen experiences.
TV-Like 是一个轻量的网页内容提取引擎。它使用易读的 YAML 规则描述页面中的区块、列表、文本、图片和链接,并输出稳定结构,方便电视端应用和大屏内容编排直接消费。
TV Like
TV-Like 聚焦两件事:定义规则和提取结果。项目本身不重写网页,也不绑定某个前端框架,而是把已有页面转换成更适合电视端渲染的数据层。
现在的核心规则格式已经统一为 YAML DSL,结构更清楚、可读性更高,也更适合后续做规则生成、校验和维护。
Features
- 网页内容提取:用易读的 YAML DSL 描述网页中的核心内容区块
- 标准化输出:输出统一结构,便于电视端模板和内容层直接消费
- DSL 加载:
- 在目标网页中内嵌 YAML 规则脚本
- 上传到远程 YAML Hub,在页面未内嵌规则时按域名回源读取
- 灵活配置:支持 path 匹配、区块提取、列表提取、元数据透传和字段变换
- 电视适配优化:更适合首页卡片流、推荐区、导航区和详情页模块化输出
- 运行环境:Java 8+
Usage
1. 编写 YAML 规则
在页面中内嵌 YAML,或把 YAML 规则放到远程 Hub,让核心引擎知道哪些 path、section、items 和字段需要被提取。
HTML
<div class="page">
<div class="hero-card">
<a class="title" href="/detail/1">Movie One</a>
<img data-src="/poster/1.jpg" />
</div>
<ul class="recommend-list">
<li class="card">
<a class="item-link" href="/detail/1">
<img data-src="/poster/1.jpg" />
<span class="item-title">Movie One</span>
</a>
</li>
<li class="card">
<a class="item-link" href="/detail/2">
<img data-src="/poster/2.jpg" />
<span class="item-title">Movie Two</span>
</a>
</li>
</ul>
</div>
YAML
version: 1
paths:
- match: /list/**
sections:
- name: hero
selector: .hero-card
fields:
text:
selector: .title
transforms: [trim]
link:
selector: .title
attr: href
transforms: [abs-url]
img:
selector: img[data-src]
attr: data-src
transforms: [abs-url]
- name: recommend
selector: .recommend-list
items:
selector: li.card
limit: 12
meta:
img-ratio: 2/3
fields:
text:
selector: .item-title
transforms: [trim]
link:
selector: .item-link
attr: href
transforms: [abs-url]
img:
selector: img[data-src]
attr: data-src
transforms: [abs-url]
.hero-card 对应一个 `section`,
.recommend-list 对应一个列表型 `section`,
li.card 对应 `items.selector`,
.item-title、.item-link、img[data-src] 分别映射到每个列表项里的 `text`、`link`、`img`。
2. 执行提取
将网页 HTML 与页面 URL 传给 TV 入口,核心模块会完成规则加载、路径命中、选择器提取与值变换。
3. 查看教程
官网只保留项目介绍。详细 YAML 写法、样例和最佳实践请直接查看仓库中的中英文 Tutorial 文档。
Contributing
欢迎贡献!尤其欢迎:
- 新网站的 DSL 规则贡献
- DSL 语法增强建议
- 性能优化
- 文档改进
License
本项目采用 MIT License,详见 LICENSE 文件。