文前碎碎唸
前一陣子由於好奇的關係,試著開始錄製自己的 Podcast 節目,而在每一次錄音完成後,除了把成品上傳到 Hosting 平台外,個人也會習慣在自己的設備上保存一份,除了做備份外,也可以紀錄過去節目中討論過的主題。
不過,既然要自己留存檔案的話,內容的管理就理所當然的變成不可忽略的環節。雖然目前節目成長十分龜速,但如果要持續經營的話,累積的檔案也只會越來越多,勢必也是需要整理及歸檔,至少要能建立好對應的播放清單,這樣對於未來的回顧或是成品展示也是很有幫助的。
但問題就來了,偏偏我就是個懶得做檔案整理的廢人,要在錄音當下將相關檔案丟到同一個資料夾這件事還好辦,但要從大量目錄中整理並作成能展示用的清單,我就懶了⋯
不過有句俗話說的正好,現代的問題,就要靠現代方法來解決,這種瑣碎的雜事,當然直接丟給電腦處理(喂),那既然決定好了,就來開始摳頂囉!(說好的懶呢 🤣)
正文開始
好啦,前言廢話這麼多,該來點認真的了。
今天要介紹的,主要是我為了在備份 Podcast 音檔及原稿文檔用的 Server 上,快速架設一個可以簡易展示節目列表及播放單集的網頁所寫的生成器。
由於我作為備份用的 Server 是自己利用樹莓派土炮的,所以管理上主要還是得透過 FTP 處理。雖然在檔案管理上還可以使用 FileZilla 來方便操作,但有些時候如果只是要查看之前講過的主題,但又不想把檔案拉回來,或是單純只是想把節目另外做展示的話,還是有些不便。
所以這次小工具的主要目標,是在不建立複雜的後端環境(意即不使用 PHP、SQL 等作為後台)的前提下,僅使用基本 HTML、JS 及 CSS 架構,還能根據目錄內節目集數的增加,而對列表展示頁面做更新。
【基本操作】
其實簡單來說,這套工具就是把這樣的目錄結構⋯
轉換成這樣的網頁
製做出來的網頁,包含有最基本的播放列表展示,選擇單集後可以看到 txt 檔中的資訊,並附上一個單集的播放頁面。
基本上,這個小工具只有單一個 py 檔案,所以只要將這個檔案複製到你的備份資料夾下,然後下指令執行就可以了。不過要注意的是,目前的版本有設定只會抓每個單集資料夾中的「episode」為音訊來源,以及「info.txt」為單集資訊來源,如果資料夾中沒有「episode」的話,就不會出現在列表內了。
程式第一次執行的時候,會產生一個預設的 Config 檔案,主要的設定項目也很簡易,其中「logo」跟「cover」並不是必須(若沒有給定的話,程式會吐一個預設的給你),「source」則是你拿來存放單集資料夾的跟目錄路徑,也就是假設你的單集「EP1」、「EP2」都存在 episode 裡面的話,那麽就打「episode」就可以了,最後「ext」則是你單集錄音檔的副檔名。
設定完之後,再執行一次就會吐出網頁給你啦!接著就可以將這個網頁放到 Server 的網頁 Hosting 區域,或是上傳到靜態網頁空間做展示了。
【應用及未來計畫】
由於這個工具主要是放在 Server 端做網頁更新使用,因此暫時沒打算給他加一個圖形化的操作介面。而程式執行後,會自動覆蓋掉上一次執行的結果,因此如果有針對網頁部分內容做客製化處理需求的,可以考慮直接修改程式內的模板,以避免內容遺失。
另外,如果有自動化更新需求的,可以在伺服器上設置一個固定排程,看是要在固定時間,或是偵測到單集目錄中有內容變化的時候自動執行,這樣就能達成定時更新的目的。
未來的更新計劃,應該會試著去整合自動更新以及 Web server 的部分,也就是說只要選定好放置節目的根目錄,把這個程式丟到同一個目錄下執行後,就直接可以放飛了(理想上),不過那都是之後的事,就看未來的我的進度囉(躺)。
至於 Podcast 節目要成立的重要條件之一 RSS Feed 的部分,原本有想說要在第一版就給他加入,不過由於還在研究相關格式及規範,所以就暫時擱置⋯😑
【20220208 更新】
果然有些事還是要一不做二不休才會有效率,繼上一次釋出 Repo 後,就開始構思如何結合 Server 的部分,於是就又開始動工,結果⋯就趕出來了🤣
這裡就直接補充更新的部分:
1. 新版本工具可在 Config 中設定是否啟用 Server 功能以及要用的 Port 、Playlist 更新週期等,新的設定格式如下(可以在更新程式後刪掉舊的,即會生成新版本)
[CAST]title = 節目標題logo = 節目標誌符號cover = 封面source = 存放單集的資料夾ext = 單集副檔名[SERVER]port = 伺服器埠號cycle = 單集列表更新週期(秒)mode = 是否開啟伺服器(True/False)
2. 以伺服器模式開啟後,程式即會自動讀取單集資料夾裡面的目錄清單,並以設定的時間週期對網頁進行更新。
3. 這個版本修正了之前會把 CSS 以及播放器網頁覆蓋掉的功能,僅會覆蓋列表網頁(index.html)。
最後附上 Github 連結,讓有興趣嘗試的可以使用看看囉
☞ 請點我右轉
《暫時。終了》