epg:從 README 拆解用途、操作與採用邊界
專案速覽:用於從數百個來源下載數千個電視頻道的 EPG(電子節目指南)的實用程式。
秒懂
- 它是什麼?
- 以 README 可核對的功能、命令與資料邊界整理 epg 的實際用途。
- 適合誰用?
- 適合需求與 epg README 明示內容相符、且能管理其命令與依賴的使用者;不適合期待素材未承諾能力的人。先依 epg 的 README 入口執行最小流程,核對輸入、輸出、錯誤日誌與資料位置,再決定是否納入正式工作流。
- 可以商用嗎?
- 可以。Unlicense 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
- 還在維護嗎?
- 有在維護。儲存庫最近一次提交在 14 天前。
- 用什麼語言寫的?
- 主要是 HTML(依據 GitHub 的語言統計)。
以上回答依據專案的 GitHub 資料(最近同步於 2026年9月15日)與我們的分析,不構成法律意見。
開源專案深度解析
從命令列下載節目指南
README 將 iptv-org/epg 介紹為從數百個來源下載數千個電視頻道的電子節目指南(EPG)的工具。核心工作流程是一個 Node.js 指令碼,它接受站點名稱列表,從每個站點取得節目資料,並寫入一個名為 guide.xml 的 XML 檔案。該倉庫要求安裝 Node.js 和 Git,文件中的步驟是克隆倉庫、進入 epg 目錄並執行 npm install。README 沒有指定最低 Node.js 版本或除主控台或終端之外的操作系統要求,因此這些細節尚未得到驗證。
針對 epg 的「從命令列下載節目指南」,可從 epg 開始核對:保留命令輸出、檔案路徑與錯誤訊息,觀察輸入是否產生 README 所描述的結果。素材未說明的版本、平台或安全行為不作推定。
grab 命令及其選項
主要命令是 `npm run grab --- --sites=example.com`,其中站點名稱取自 SITES.md 檔案。指令碼接受一系列命令列選項:逗號分隔的站點列表、自訂頻道 XML 檔案的路徑、輸出路徑(預設為 guide.xml)、語言限制、每次請求的逾時和延遲、代理支援、天數、並行請求限制、gzip 和 JSON 輸出以及 curl 顯示模式。README 展示了如何透過逗號列表一次下載多個站點,以及如何使用 `guides/{site}.xml` 之類的輸出路徑範本按站點拆分輸出。選項列表包括輸出、逾時、延遲、maxConnections、gzip 和 json 的預設值。
針對 epg 的「grab 命令及其選項」,可從 Docker](#docker) 開始核對:保留命令輸出、檔案路徑與錯誤訊息,觀察輸入是否產生 README 所描述的結果。素材未說明的版本、平台或安全行為不作推定。
epg 專案核對補充 1:請以 README 寫出的命令、檔案與設定鍵重跑這個操作,分開記錄成功輸出、例外訊息、依賴版本及輸出檔案。這些觀察只用來界定 epg 在目前素材支持的範圍,不能延伸成未載明的相容性或效能保證。
並行下載和自訂頻道列表
預設情況下,指令碼會逐個取得每個頻道的節目,但 --maxConnections 選項可以提高並行性。README 警告說,在重負載下,某些站點可能會返回錯誤或完全阻止存取。對於自訂頻道集,您可以建立一個 XML 檔案,從 /sites 目錄複製所需頻道的描述,然後透過 --channels 傳遞該檔案。README 包含一個範例頻道元素,其中包含 site、lang、xmltv_id 和 site_id 屬性。這種方法讓您可以精確控制包含哪些頻道,而無需解析所有可用站點。
針對 epg 的「並行下載和自訂頻道列表」,可從 Docker](#docker) 開始核對:保留命令輸出、檔案路徑與錯誤訊息,觀察輸入是否產生 README 所描述的結果。素材未說明的版本、平台或安全行為不作推定。
epg 專案核對補充 2:請以 README 寫出的命令、檔案與設定鍵重跑這個操作,分開記錄成功輸出、例外訊息、依賴版本及輸出檔案。這些觀察只用來界定 epg 在目前素材支持的範圍,不能延伸成未載明的相容性或效能保證。
定時執行和提供指南服務
對於定時下載,README 建議使用 cron 或任何其他任務排程程式,並提到一個名為 chronos 的工具。命令 `npx chronos --execute="npm run grab --- --sites=example.com" --pattern="0 0,12 * * *" --log` 根據 cron 運算式執行 grab 命令。要使其指南可透過 URL 存取,README 建議執行 `npx serve`,該命令在 http://localhost:3000/guide.xml 和區域網路內的機器 IP 位址上提供 guide.xml。serve 命令被描述為暴露檔案的最簡單方法,並註明更多細節請參考 serve 文件。
針對 epg 的「定時執行和提供指南服務」,可從 Docker](#docker) 開始核對:保留命令輸出、檔案路徑與錯誤訊息,觀察輸入是否產生 README 所描述的結果。素材未說明的版本、平台或安全行為不作推定。
epg 專案核對補充 3:請以 README 寫出的命令、檔案與設定鍵重跑這個操作,分開記錄成功輸出、例外訊息、依賴版本及輸出檔案。這些觀察只用來界定 epg 在目前素材支持的範圍,不能延伸成未載明的相容性或效能保證。
Docker 映像和環境變數
該倉庫發布了位於 ghcr.io/iptv-org/epg:master 的 Docker 映像。文件化的流程是拉取映像並執行容器,對應埠 3000,並將本機 channels.xml 掛載到 /epg/public/channels.xml。預設情況下,指南每天在 00:00 UTC 下載,並儲存在容器內的 /epg/public/guide.xml 中。README 列出了對應到指令碼選項的環境變數:CRON_SCHEDULE、MAX_CONNECTIONS、GZIP、JSON、CURL、PROXY、DAYS、TIMEOUT、DELAY 和 RUN_AT_STARTUP。表格給出了預設值,包括 CRON_SCHEDULE 預設為 "0 0 * * *",MAX_CONNECTIONS 預設為 1。Docker run 範例還展示了如何使用 -e 標誌設定這些變數。
針對 epg 的「Docker 映像和環境變數」,可從 Docker](#docker) 開始核對:保留命令輸出、檔案路徑與錯誤訊息,觀察輸入是否產生 README 所描述的結果。素材未說明的版本、平台或安全行為不作推定。
epg 專案核對補充 4:請以 README 寫出的命令、檔案與設定鍵重跑這個操作,分開記錄成功輸出、例外訊息、依賴版本及輸出檔案。這些觀察只用來界定 epg 在目前素材支持的範圍,不能延伸成未載明的相容性或效能保證。
相關倉庫和貢獻
README 指向了配套專案:頻道資料來自 iptv-org/database,API 文件位於 iptv-org/api,IPTV 資源收集在 iptv-org/awesome-iptv 中。使用者可以透過 GUIDES.md 檔案分享他們建立的指南。討論託管在 GitHub Discussions 上。關於貢獻,README 提到了貢獻指南,並透過 Open Collective 列出了支持者和貢獻者。倉庫元資料顯示截至快照時有 3,187 個星標、488 個分叉和 26 個未解決問題,但 README 沒有給出任何使用統計或效能資料。元資料還將主要語言列為 HTML,儘管工具明顯基於 Node.js。
針對 epg 的「相關倉庫和貢獻」,可從 Docker](#docker) 開始核對:保留命令輸出、檔案路徑與錯誤訊息,觀察輸入是否產生 README 所描述的結果。素材未說明的版本、平台或安全行為不作推定。
授權和法律狀態
該倉庫以 Unlicense 授權發布,授權摘錄將其描述為公共領域。授權授予任何人複製、修改、發布、使用、編譯、出售或分發該軟體的任何目的權利,無論商業或非商業。它包含一個免責聲明,即軟體按「原樣」提供,不提供任何擔保,並且作者不對任何索賠或損害承擔責任。授權文字沒有提及安全保證、支援承諾或任何維護策略。README 本身除了連結到完整文字外,沒有詳細說明授權。
針對 epg 的「授權和法律狀態」,可從 Docker](#docker) 開始核對:保留命令輸出、檔案路徑與錯誤訊息,觀察輸入是否產生 README 所描述的結果。素材未說明的版本、平台或安全行為不作推定。
編輯結論
適合需求與 epg README 明示內容相符、且能管理其命令與依賴的使用者;不適合期待素材未承諾能力的人。先依 epg 的 README 入口執行最小流程,核對輸入、輸出、錯誤日誌與資料位置,再決定是否納入正式工作流。
社群筆記