# Kodi 电影剧集筛选插件

**圆角皮肤适配(地平线2，导火线2等)**
<img src="resources/filter2.jpg" width="100%" />

**方角皮肤适配**
<img src="resources/filter.jpg" width="100%" />

这是一个为 Kodi 设计的高级电影剧集筛选和增强工具插件。

## 功能介绍

### 通用功能 (任意皮肤可用)

1.  **完整筛选页面实现**
    *   提供类似爱优腾、爆米花等平台的筛选体验。
    *   支持按类型、地区、年份、评分等多维度筛选。
    *   为地平线、导火线、清风皮肤适配了圆角。

2.  **九宫格输入法筛选电影**
    *   支持使用遥控或界面上的数字键输入拼音进行筛选 (T9输入法)。
    *   快速定位视频，无需繁琐的软键盘输入。

3.  **一键快捷接口**
    *   **一键字幕**: 快速切换或选择字幕。
    *   **一键音轨**: 快速切换音频轨道。
    *   **一键倍速**: 快速调整播放速度(CE下不可用)。

4.  **剧集跳过片头片尾**
    *   支持手动记录剧集的片头和片尾时间点(一季记录一次)。
    *   自动跳过已记录的片头和片尾，实现无缝追剧体验。

5.  **iso自动加载外挂字幕**
    *   自动加载iso文件所在文件夹下同名字幕

6.  **自动补全/修正播放列表**
    *   开始播放已刮削的剧集时，自动将播放列表补全为整季集数，并修正乱序（如播放 E06 时下一个是 E05，会自动移到正确位置）。
    *   开始播放未刮削的文件夹视频时，自动将同文件夹下的所有视频补入播放列表（按文件名自然排序）。
    *   当前项前方保留最多 50 集，后方保留最多 50 集。
    *   可在插件设置中关闭此功能。

### EstuarySearch 皮肤专属功能

1.  **自定义全局背景**
    *   在电影列表右键菜单中，可将任意电影的艺术图（Fanart）设置为 Kodi 的常驻全局背景图案。

### 遥控器与键盘按键绑定（推荐）

推荐和 [script.controller.switcher](https://github.com/forbxy/script.controller.switcher) 插件搭配使用。  
可以直接在controller.switcher加载适配遥控器的默认配置  
也可以自定义按键绑定    
安装该辅助插件后，在按键动作列表的 **"Forbxy插件"** 分类中即可直接看到本插件提供的快捷功能  
你可以在可视化图形界面上将这些功能映射到你习惯的遥控器或键盘按键上，**全程无需手动编写任何 XML 配置文件**。

---

## 接口调用

可以通过 `RunScript` 命令调用本插件提供的接口功能。  
可以绑定到遥控按键或者皮肤视图


## 使用示例

### 1. 绑定到遥控器按键 (Keymap)
编辑 `userdata/keymaps/gen.xml` (或新建)，将功能绑定到特定按键。

**示例：绑定启动筛选页面 (v12红色键) 及跳过功能 (v12蓝色键)**
```xml
<keymap>
  <Global>
    <keyboard>
      <!-- 芝杜V12红色键 (ID 61952): 启动筛选页面 -->
      <key id="61952">RunScript(plugin.video.filteredmovies, 0, ?mode=launch_t9)</key>
    </keyboard>
  </Global>
  <!-- FullscreenVideo: 全屏播放视频时生效 (无菜单遮挡) -->
  <FullscreenVideo>
    <keyboard>
      <!-- 蓝色键短按: 记录片头或片尾的时间点 -->
      <key id="61514">RunScript(plugin.video.filteredmovies, ?mode=record_skip_point)</key>
      <!-- 蓝色键长按: 删除片头或片尾的时间点 -->
      <key id="61514" mod="longpress">RunScript(plugin.video.filteredmovies, ?mode=delete_skip_point)</key>
    </keyboard>
  </FullscreenVideo>
  <!-- VideoOSD: 当呼出播放进度条/菜单时生效 (建议与 FullscreenVideo 保持一致) -->
  <VideoOSD>
    <keyboard>
      <key id="61514">RunScript(plugin.video.filteredmovies, ?mode=record_skip_point)</key>
      <key id="61514" mod="longpress">RunScript(plugin.video.filteredmovies, ?mode=delete_skip_point)</key>
    </keyboard>
  </VideoOSD>
</keymap>
```



### 2. 在皮肤视图中调用 (Skin XML)
在皮肤文件的控件事件中调用，例如在某个按钮被点击时触发。

**示例：点击按钮启动 T9 搜索界面**
```xml
<control type="button" id="9000">
    <onclick>RunScript(plugin.video.filteredmovies, ?mode=launch_t9)</onclick>
    <label>搜索</label>
</control>
```

**示例：点击按钮切换字幕**
```xml
<control type="button" id="5001">
    <onclick>RunScript(plugin.video.filteredmovies, ?mode=select_subtitle)</onclick>
    <label>切换字幕</label>
</control>
```

## 接口列表

### 1. 打开筛选/T9搜索页面
```xml
RunScript(plugin.video.filteredmovies, ?mode=launch_t9)
```
### 2. 播放控制接口
**一键选择字幕**
```xml
RunScript(plugin.video.filteredmovies, ?mode=select_subtitle)
```

**一键选择音轨**
```xml
RunScript(plugin.video.filteredmovies, ?mode=select_audio)
```

**一键选择倍速**
```xml
RunScript(plugin.video.filteredmovies, ?mode=select_playback_speed)
```

**VS10 引擎模式切换**
*   循环切换或直接指定当前片源可用的 VS10 转码模式 (Origin / SDR / HDR10 / DV) 自动跳过不支持的模式。
```xml
RunScript(plugin.video.filteredmovies, ?mode=set_vs10_mode)
<!-- 或者指定转码，target_mode可用值为 vs10.original, vs10.sdr, vs10.hdr10, vs10.dv -->
RunScript(plugin.video.filteredmovies, ?mode=set_vs10_mode&target_mode=vs10.dv)
```

### 3. 跳过片头片尾接口
**记录当前时间为跳过点 (片头/片尾)**
*   在剧集播放的前20%调用记录为片头结束点。
*   在剧集播放的后20%调用记录为片尾开始点。
```xml
RunScript(plugin.video.filteredmovies, ?mode=record_skip_point)
```

**删除当前剧集的跳过点记录**
```xml
RunScript(plugin.video.filteredmovies, ?mode=delete_skip_point)
```

### 4. 其他实用接口

**切换收藏状态/将选中项加入或移出收藏夹**
```xml
RunScript(plugin.video.filteredmovies, ?mode=toggle_favourite)
```

**打开当前播放剧集的列表**
```xml
RunScript(plugin.video.filteredmovies, ?mode=open_playing_tvshow)
```

**Linux下重启Kodi**
*   仅对 Linux/CoreELEC/LibreELEC/Ubuntu 等类 Unix 系统有效。
*   发送底层中断信号 (`kill -TERM` / `kill -KILL`)，重启 Kodi(优雅kill -TERM 等待10秒还不停止，kill -KILL强制退出)。  
*   之后systemd会重新拉起kodi
```xml
RunScript(plugin.video.filteredmovies, ?mode=restart_linux_kodi)
```

**重启到内部存储 (Reboot from eMMC/NAND)**
*   对安装在 SD卡/U盘中的 CoreELEC 等外部启动系统有效，重启回电视盒子内部的安卓系统。
```xml
RunScript(plugin.video.filteredmovies, ?mode=reboot_from_nand)
```

**退出播放确认弹窗**
*   弹出确认窗口，显示当前播放的视频标题，确认后停止播放。
```xml
RunScript(plugin.video.filteredmovies, ?mode=confirm_stop_playback)
```

