TV-Like Logo

Readable YAML rules for turning web pages into TV-ready content.

用清晰的 YAML 规则,把网页内容整理成适合电视端消费的结构化数据。

View on GitHub

English / 英文

中文 / Chinese

Project Overview / 项目介绍

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

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-linkimg[data-src] 分别映射到每个列表项里的 `text`、`link`、`img`。

2. 执行提取

将网页 HTML 与页面 URL 传给 TV 入口,核心模块会完成规则加载、路径命中、选择器提取与值变换。

3. 查看教程

官网只保留项目介绍。详细 YAML 写法、样例和最佳实践请直接查看仓库中的中英文 Tutorial 文档。

Contributing

欢迎贡献!尤其欢迎:

License

本项目采用 MIT License,详见 LICENSE 文件。