diff --git a/README.md b/README.md index 7186ae350..d89382deb 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,6 @@ -# 📺 開發者文件 +# 開發者文件 -基於 [CatVod](https://github.com/CatVodTVOfficial/CatVodTVJarLoader) 的開源 Android 影音應用程式,同時支援 -**Android TV 大螢幕** 與 **手機** 兩種使用情境。爬蟲引擎支援 Java JAR、JavaScript、Python -三種語言,透過外部配置檔靈活擴展內容來源。 +基於 [CatVod](https://github.com/CatVodTVOfficial/CatVodTVJarLoader) 的開源 Android 影音應用程式,同時支援 **Android TV 大螢幕**與**手機**兩種使用情境,並且透過外部配置靈活擴展內容。 [討論群組](https://t.me/fongmi_official) | [發布頻道](https://t.me/fongmi_release) @@ -25,14 +23,15 @@ --- -## 🏗️ 專案架構 +## 專案架構 -| 項目 | 值 | -|--------------------|-------------------------------| -| Package | `com.fongmi.android.tv` | -| minSdk / targetSdk | 24 / 28 | -| ABI | `arm64-v8a`、`armeabi-v7a` | -| Flavor | `leanback`(電視版)、`mobile`(手機版) | +| 項目 | 值 | +|-----------|-------------------------------| +| Package | `com.fongmi.android.tv` | +| minSdk | 24(Android 7.0 Nougat) | +| targetSdk | 28(Android 9.0 Pie) | +| ABI | `arm64-v8a`、`armeabi-v7a` | +| Flavor | `leanback`(電視版)、`mobile`(手機版) | ``` TV/ @@ -46,7 +45,7 @@ TV/ --- -## 🎬 播放器 +## 播放器 - **核心**:ExoPlayer(Media3)+ FFmpeg 軟解,硬解 / 軟解自動降級切換 - **渲染**:SurfaceView / TextureView @@ -57,7 +56,7 @@ TV/ --- -## 📼 點播功能 +## 點播功能 - 多站點分類瀏覽,Filter 篩選(年份 / 地區 / 類型等) - 多站點**並行搜尋**,關鍵字自動繁轉簡提升相容性 @@ -67,7 +66,7 @@ TV/ --- -## 📡 直播功能 +## 直播功能 - 支援 M3U/M3U8、TXT(`#genre#` 分組)、JSON 三種直播源格式 - **EPG**:XMLTV 格式(支援 `.gz`),每 6 小時自動刷新 @@ -77,14 +76,19 @@ TV/ --- -## 🕷️ 爬蟲引擎 +## 爬蟲引擎 -支援三種語言撰寫爬蟲:Java JAR(DexClassLoader)、JavaScript(QuickJS)、Python(Chaquopy)。透過 `api` -欄位指定爬蟲,`ext` 欄位傳入初始化參數。完整 API 規格見 [SPIDER.md](docs/SPIDER.md)。 +支援三種語言撰寫爬蟲: + +- Java JAR(DexClassLoader) +- JavaScript(QuickJS) +- Python(Chaquopy) + +透過 `api` 欄位指定爬蟲,`ext` 欄位傳入初始化參數。完整 API 規格見 [SPIDER.md](docs/SPIDER.md)。 --- -## 🌐 網路功能 +## 網路功能 - **DoH**:DNS over HTTPS,支援 Bootstrap IP - **代理**:HTTP / HTTPS / SOCKS4 / SOCKS5,依 host 正則規則動態選擇 @@ -95,7 +99,7 @@ TV/ --- -## 📲 DLNA 投放 +## DLNA 投放 - **DMC(投放端)**:手機版,掃描區域網路 DLNA 設備並投放媒體 - **DMR(被投放端)**:電視版,作為 DLNA Renderer 接收其他設備投放 @@ -104,22 +108,25 @@ TV/ --- -## 🖥️ 遠端控制 +## 遠端控制 -應用啟動後綁定本地 HTTP 伺服器(NanoHTTPD),埠號從 **9978** 起自動偵測至 **9998** -,可用於播放控制、推送字幕 / 彈幕、多裝置同步等。完整端點說明見 [LOCAL.md](docs/LOCAL.md)。 +應用啟動後綁定本地 HTTP 伺服器(NanoHTTPD),埠號從 **9978** 起自動偵測至 **9998**,可用於播放控制、推送字幕 / 彈幕、多裝置同步等。完整端點說明見 [LOCAL.md](docs/LOCAL.md)。 --- -## ⚙️ 配置說明 +## 配置說明 + +VOD 配置為應用主要入口,透過 URL 或本地路徑載入,頂層欄位定義: + +- 點播站點(`sites`)、解析規則(`parses`) +- 直播來源(`lives`) +- 網路設定(`doh`、`proxy`、`hosts`、`ads`) -`config.json`(VOD 配置)為應用主要入口,透過頂層欄位定義點播站點(`sites`)、解析規則(`parses`)、直播來源( -`lives`)及網路設定(`doh`、`proxy`、`hosts`、`ads`)。Live -配置可內嵌或獨立存放。完整欄位說明見 [CONFIG.md](docs/CONFIG.md)。 +Live 配置可內嵌或獨立存放。完整欄位說明見 [CONFIG.md](docs/CONFIG.md)。 --- -## 📚 延伸閱讀 +## 延伸閱讀 | 文件 | 說明 | |-----------------------------|----------------------| diff --git a/docs/CONFIG.md b/docs/CONFIG.md index 10dfd171c..a2866aa65 100644 --- a/docs/CONFIG.md +++ b/docs/CONFIG.md @@ -153,8 +153,7 @@ VOD 配置為一個 JSON 物件,作為應用程式的主要配置入口。配 ### lives — 直播來源 -VOD 配置中的 `lives` 欄位用於指向外部直播配置或內嵌直播資訊。每個物件為一個 `Live` -來源,欄位定義與 [Live 配置頂層欄位](#頂層欄位-1) 相同。 +VOD 配置中的 `lives` 欄位用於指向外部直播配置或內嵌直播資訊。每個物件為一個 `Live` 來源,欄位定義與 [Live 配置頂層欄位](#頂層欄位-1) 相同。 常見用法為指定 `url` 指向外部 `live.json`,或直接內嵌 `groups` 頻道資料。 diff --git a/docs/LOCAL.md b/docs/LOCAL.md index bb4c8071d..862486ba3 100644 --- a/docs/LOCAL.md +++ b/docs/LOCAL.md @@ -8,8 +8,7 @@ http://127.0.0.1:{port} > 實際埠號依系統可用情況而定,預設起始為 9978。 -所有端點支援 GET 與 POST(除特別標注外),參數可放在 Query String 中。回應若無特別說明皆為 `text/plain` -,成功回傳 `OK`,失敗回傳 `500` 與錯誤訊息。 +所有端點支援 GET 與 POST(除特別標注外),參數可放在 Query String 中。回應若無特別說明皆為 `text/plain`,成功回傳 `OK`,失敗回傳 `500` 與錯誤訊息。 --- @@ -382,8 +381,7 @@ GET http://127.0.0.1:9978/file/{path} | `""` | 上一層為根目錄。 | | `"path/to/parent"` | 上一層目錄的相對路徑。 | -**檔案回應:** 直接串流檔案內容,支援 Range 請求(`206 Partial Content`)與 ETag 快取( -`304 Not Modified`)。 +**檔案回應:** 直接串流檔案內容,支援 Range 請求(`206 Partial Content`)與 ETag 快取(`304 Not Modified`)。 --- @@ -475,8 +473,7 @@ GET http://127.0.0.1:9978/parse?jxs={jxs}&url={url} GET/POST http://127.0.0.1:9978/proxy?... ``` -所有 Query String 參數、請求標頭與 POST Body 會合併後傳入 `BaseLoader.get().proxy(params)`。回應由爬蟲 -`proxy()` 決定,框架原封不動地轉發爬蟲回傳的串流與標頭。 +所有 Query String 參數、請求標頭與 POST Body 會合併後傳入 `BaseLoader.get().proxy(params)`。回應由爬蟲 `proxy()` 決定,框架原封不動地轉發爬蟲回傳的串流與標頭。 爬蟲如何實作 `proxy()` 方法及取得代理 URL,見 [SPIDER.md — 爬蟲本地代理 URL](SPIDER.md#爬蟲本地代理-url)。 diff --git a/docs/SPIDER.md b/docs/SPIDER.md index 74c95e3cf..70705b47b 100644 --- a/docs/SPIDER.md +++ b/docs/SPIDER.md @@ -11,7 +11,7 @@ - [Spider 抽象類別](#spider-抽象類別) - [init — 初始化](#init--初始化) - [homeContent — 首頁分類](#homecontent--首頁分類) - - [homeVideoContent — 首頁推薦影片](#homevideoContent--首頁推薦影片) + - [homeVideoContent — 首頁推薦影片](#homevideocontent--首頁推薦影片) - [categoryContent — 分類列表](#categorycontent--分類列表) - [detailContent — 影片詳情](#detailcontent--影片詳情) - [searchContent — 搜尋](#searchcontent--搜尋) @@ -32,7 +32,7 @@ - [播放集數格式(vod_play_from / vod_play_url)](#播放集數格式vod_play_from--vod_play_url) - [完整 JSON 範例](#完整-json-範例) - [homeContent 回傳範例](#homecontent-回傳範例) - - [homeVideoContent / categoryContent 回傳範例](#homevideoContent--categorycontent-回傳範例) + - [homeVideoContent / categoryContent 回傳範例](#homevideocontent--categorycontent-回傳範例) - [detailContent 回傳範例](#detailcontent-回傳範例) - [playerContent 回傳範例](#playercontent-回傳範例) - [searchContent 回傳範例](#searchcontent-回傳範例) @@ -43,8 +43,7 @@ ## 概覽 -Spider 是應用程式爬蟲的抽象基底類別,位於 `com.github.catvod.crawler.Spider`。每個影片來源(`Site`)對應一個 -Spider 實例。 +Spider 是應用程式爬蟲的抽象基底類別,位於 `com.github.catvod.crawler.Spider`。每個影片來源(`Site`)對應一個 Spider 實例。 **生命週期:**