samuelhuang77 / hdp_ims Goto Github PK
View Code? Open in Web Editor NEWThis project forked from ypchen/hdp_ims
可用來自行建立 IMS 的 php 架構、亦可直接使用目前已實作的範例
This project forked from ypchen/hdp_ims
可用來自行建立 IMS 的 php 架構、亦可直接使用目前已實作的範例
功能 可用來自行建立 IMS 的 php 架構、亦可直接使用目前已實作的範例 取得 1. 正常開發版本 (使用 symbolic links 來避免檔案內容重覆) 由 https://github.com/ypchen/hdp_ims 下載,或使用 git clone 取得 git clone git://github.com/ypchen/hdp_ims.git 2. dereferenced 版本 (適合用於無法處理 symbolic links 之系統) 由 https://github.com/ypchen/hdp_ims_dereferenced 下載,或使用 git clone 取得 git clone git://github.com/ypchen/hdp_ims_dereferenced.git 注意 1. 若欲將 IMS 裝設於本機,或者透過 IMS 網站欲觀賞 YouTube 內容 (含以 YouTube 為 back-end 之影音網站),則本機必須具備運行中之 web server 以及可執行 php 程式之能力。 2. 若使用 FTP 來傳輸 IMS code,請一定要強制以二進位 (binary) 方式傳輸 [感謝 zorron@HDPfans] 說明 1. 有興趣的人可以使用這整套 php code 來建立自己 (或者公開給別人使用) 的 IMS 2. 也可以直接使用我目前實作來當範例的幾個站台: A. 眾遙電視 (不卡點播、網星電視) B. 楓林網 C. sugoideas D. 卡提諾影音 (ck101) E. TED Talks on TED / YouTube / podcast F. YouTube 帳戶功能 (YouTube Data API v3) 個人清單建立與播放、YouTube 搜索 G. 台灣蘋果動新聞 H. CNN 影音 podcast I. IMS 搜索: 以本機 hdp_input 或播放機機內建或線上 hdp_input 搭配 HDPfans/HAOIMS 進行搜索 J. 近三十個成人影片網站 3. 兩種層級搭配 (01_base 和 02_query) 可做出數種不同觀看流程 A. 眾遙電視 (不卡點播、網星電視) 01 -> 02 -> 02 -> 播放 B. 楓林網 a. 每日熱門、最新節目 01 -> 02 -> 播放 b. 綜藝節目、偶像戲劇 01 -> 02 -> 02 -> 播放 C. sugoideas 01 -> 02 -> 02 -> 播放 D. 卡提諾影音 (ck101) 01 -> 02 -> 02 -> 播放 E. TED Talks on TED / YouTube / podcast a. TED Talks on TED / YouTube 01 -> 02 -> 播放 b. podcast 01 -> podcast F. YouTube 帳戶功能 (YouTube Data API v3) 複雜交互叫用流程 G. 台灣蘋果動新聞 01 -> 01 -> 02 -> 02 -> 播放 H. CNN 影音 podcast 01 -> podcast I. IMS 搜索 01 -> HDPfans/HAOIMS 搜索各大站台 J. 近三十個成人影片網站 01 -> 01 -> 02 -> 播放 01 -> 02 -> 播放 01 -> podcast 4. 可以播放 YouTube 的搜索結果、頻道、以及公開的播放清單 (YouTube Data API v2) 5. 內建歷史自動記錄功能: 最近瀏覽、最近觀看、本地收藏 6. 具有當網站錯誤發生時通知管理者進行處理的功能 7. 具有使用 MySQL database 記錄使用者動作的功能 8. IMS 線上搜索可讓使用者自訂由 hdp_input 模組所做成的線上輸入功能 9. [v1.4] youtube.video.php 將會由 IMS 來源網站載入 scripts/youtube.video.php 來執行 10. [v1.6] 可播放 YouTube 字幕 (請將至少 v1.6.2 版之 youtube.video.php 刷入本機) 11. [v1.6.2] 提供存放於 github 之 dereferenced 版本,以利追蹤版本變更時檔案之異同 12. [v1.6.4] 可直接觀賞 TED.com 上的 TED Talks,並支援字幕顯示 13. [v1.7] 因應多個網站之變更,包括蘋果動新聞及 TED.com * 敬請改用 v1.7 版之 youtube.video.php * 不再支援 v1.7 版之前版本中自動由 IMS 來源網站載入功能 14. [v2.0] 開始支援 heroku deployment 15. [v2.3] 使用 ossp-js (of ipkg) 進行 YouTube signature 解碼 16. [v2.4] 加入支援使用飛驢下載 (http://flv.cn or http://flvxz.com) 進行視訊解析 17. [v3.0] 支援 YouTube Data API v3; 部分操作介面增加使用數字按鍵; 支援多種播放模式與切換; 設定輸入方式 * 支援 YouTube Data API v3 -- 必須設定 YouTube 帳戶方能使用,詳情請見: http://hdp-ims.neocities.org/ -- 可新建個人播放清單 (新建清單之隱私模式為「私人」) -- 可管理個人播放清單內之項目 (加入視訊、設定順序、刪除視訊) -- 可查詢個人頻道 -- 可使用不同搜索條件對視訊、清單、頻道進行搜索 -- 結合本版 (v3.0) 其他新功能,可實現以下使用情境: a. 新建個人播放清單,並指定之 b. 透過 YouTube 搜索功能,將視訊加入指定之播放清單 c. 若有必要可調整清單內之視訊順序或刪除 d. 開始播放清單內之項目,預設為正序連續播放模式 e. 在視訊播放中,可按 [重覆/6] 切換播放模式,例如:隨機播放 -- 破壞性高 (例如: 刪除清放清單)、操作複雜 (例如: 清單資訊變更) 之功能恕不支援 * 部分操作介面增加使用數字按鍵 -- 目前含此功能之模組為 02_query.php 與 03_play.php -- 為因應各遙控器之按鍵設置不同而增加使用數字按鍵功能,安排原則如下: 綠: 1 停止: 2 黃: 3 信息: 4 放大: 5 重覆: 6 紅: 7 播放: 8 藍: 9 * 支援多種播放模式與切換 -- 共六種播放模式 個別視訊播放、正序連續播放、正序循環播放、隨機視訊播放、反序連續播放、反序循環播放 -- 可於 03_play.php 作用時,使用 [重覆/6] 切換播放模式 -- 連續、循環、隨機等播放模式之範圍限制於「同一頁」之中 (而非「整個播放清單內之項目」) * 設定輸入方式 -- 可將本 IMS 中之輸入方式設定為播放機內建輸入法、hdp_input、或使用者自訂之輸入方式 18. [v3.1] 修復使用 curl_youtube 時短缺之選時功能; 利用 curl_youtube 配合 youtube.video.php 支援直播 使用 1. 直接放在本機使用 步驟一: 將 adult/ common/ scripts/ video/ 這些目錄放在 /opt/share/www 下 即可在 menu.rss 或其他適當的地方加入 (port 8081 是 iMax 韌體預設) <item> <title>IMS: video</title> <link>http://localhost:8081/video/scripts/siteList.php</link> <mediaDisplay /> </item> 或 <item> <title>IMS: adult</title> <link>http://localhost:8081/adult/scripts/siteList.php</link> <mediaDisplay /> </item> 步驟二: common/settings.php 裡的 $imsUseCurl 要設定成 false,亦即 $imsUseCurl = false; 如果本機有裝 https://github.com/ypchen/hdp_filemanager 的話,最新版本的同名檔案都已經同步成一樣的了,所以不必擔心會有衝突 2. 建立 IMS 網站 如果是建立 IMS 網站的話,YouTube 上的影片仍然必由本機進行處理而得到 URL 因此,scripts/ 這個目錄 (裡面只有一個 youtube.video.php 用來處理 back-end 為 YouTube 的網站,如範例中的楓林網和 sugoideas) 還是必須放在本機 --- v2.0 開始,支援以下兩種建置方式: A. 使用 heroku (建議使用此方式,以便於後續更新) 有關 heroku 與 git 的使用,請參考他們各自的文件及資料 利用 heroku 來建立 hdp_ims 只需要以下幾個步驟: ### 用 git 把 hdp_ims 從 github.com 上抓下來 $ git clone git://github.com/ypchen/hdp_ims.git ### 進入 hdp_ims 然後產生 heroku 專案 $ cd hdp_ims $ heroku create ### 用 git 上傳到 heroku 上 $ git push heroku master ### 設定 heroku 環境變數 $ heroku config:add IMS_ON_HEROKU=true 完成後,畫面會顯示出此專案的 URL,例如: http://sleepy-lake-1234.herokuapp.com 這樣一來,就可以使用 http://sleepy-lake-1234.herokuapp.com/video/scripts/siteList.php 進入 IMS 了 使用 heroku 建置 IMS 網站後,未來更新 IMS code 只要執行以下指令便能完成 ### 進入原先下載 hdp_ims 的目錄 $ cd hdp_ims ### 更新本地版本 $ git pull ### 再把新版本上傳至 heroku $ git push heroku 所有的 settings.php 內的設定,都可以用 heroku config 來設定, 所以可以在不必編輯任何程式碼的情形下,完成 heroko 建置 B. 自建 web server 將 adult/ common/ video/ 這些目錄放在適當的地方 (參考安裝在本機的做法) 然後使用正確的 URL 即可 3. 範例網站 *** 範例網站預計於 2016 年 1 月中關閉 (domain name 到期日為 2016-01-26) *** 我直接把這組 code 建立成範例網站,有興趣的人可以直接用用看, 但原則上不提供任何技術支援或服務 楓林網、sugoideas、TED Talks 中文字幕版等 back-end 為 YouTube 則須參考下點說明 <item> <title>IMS: video</title> <link>http://[HOSTNAME].[DOMAIN]/video/scripts/siteList.php</link> <mediaDisplay /> </item> 目前的 [HOSTNAME] 為 ims-hdp 而 [DOMAIN] 為 cloudfor.info 4. 有關 youtube.video.php 目前程式假設 youtube.video.php 在本機上的 URL 是 (port 8081 是 iMax 韌體預設) http://localhost:8081/scripts/youtube.video.php 如果有人要建立 IMS 網站,但是想使用該 IMS 網站的使用者們的本機上 的 youtube.video.php 有可能在不同位置,在這種情形下,使用者可以藉由提供 youtube_video 這個變數讓 IMS 網站知道自己的 youtube.video.php 放置的 URL,例如 http://ims.your.site/video/scripts/siteList.php?youtube_video=http%3A%2F%2Flocalhost%3A2345%2Futils%2Fyoutube.video.php 就是放在 utils 下,而 lighttpd 使用的 port 為 2345 --- v3.1 支援 YouTube 直播 A. 配合 curl_youtube 對 YouTube 直播視訊進行支援 B. 於先前版本中若使用 curl_youtube 將導致播放 YouTube (非直播) 視訊無法進行選時之狀況已修復 C. 新增「個別重覆」播放模式 --- v3.0 支援 YouTube Data API v3 A. 必須設定 YouTube 帳戶方能使用,詳情請見: http://hdp-ims.neocities.org/ B. 新增使用 temporary local copy,在一回開機使用過程中只會向 remote source 進行一次更新 --- v2.4 加入支援使用飛驢下載 (http://flv.cn or http://flvxz.com) 進行視訊解析 A. 必須於 /usr/local/etc/dvdplayer/ims_flv_token.dat 存入自行向 flvxz.com 申請之 token 資料 B. /usr/local/etc/dvdplayer/ims_flv_token.dat 的內容格式為 (請勿使用下面做為範例而亂寫的字串) token/1234567890abcedfghijklmnopqrstuv C. 目前先用於楓林網中用到 Tudou2 及 Tv56 做為後端的部分 (BiliBili 似乎不易成功) --- v2.3 改用 ossp-js (of ipkg) 進行 YouTube signature 解碼以及提供影片無法觀看之訊息 A. 在此版中,增加使用本機 ossp-js (ipkg 之 package) 之方式,來解析 YouTube 之加密 signature B. 使用方式為於 /usr/local/etc/dvdplayer/ims_yv_sig_redir.dat 中指定存取本機 js 之 URL 例如:http://localhost/cgi-bin/js_youtube C. js_youtube (參考實作提供於 scripts/js_youtube) 為一個參考實作,需依使用者之本機狀況更改其內容,以及調整其存放位置 使用者亦可依本身喜好或所需,自行製作具相同功能之 script 程式 D. 在設定 ims_yv_js_redir.dat 後並安裝完成 js_youtube 的情形下,解碼 YouTube 之 signature 過程為 (1) youtube.video.php 讀取 YouTube 正常網頁 (https://www.youtube.com/watch?v=<<ID>>) (2) 由網頁中取出 video URL,若含有 "s=<<加密之 signature>>",則將進行以下步驟 (3) 取得 YouTube 提供之 JS 檔案 (4) 將相關資料存入 /usr/local/etc/dvdplayer/ims_yv_sig_data.dat (5) 叫用 ims_yv_sig_redir.dat 中所設定之 URL 來使用本機上之 js (ossp-js) 進行解碼 (6) 若發現有 undefined reference,則重覆上二步驟再次嘗試 --- v2.2.3.26 YouTube 錯誤修復 *不確定是不是因為 YouTube 在 302 重導時給了太長的 URL 而導致無法觀看 A. 在此版中,增加使用本機 curl (或具 https 能力之 wget) 之方式,來解析 YouTube 之 URL B. 使用方式為於 /usr/local/etc/dvdplayer/ims_yv_url_redir.dat 中指定存取本機 curl/wget 之 URL 例如:http://localhost/cgi-bin/curl_youtube C. curl_youtube (參考實作提供於 scripts/curl_youtube) 為一個參考實作,需依使用者之本機狀況更改其內容,以及調整其存放位置 使用者亦可依本身喜好或所需,自行製作具相同功能之 script 程式 D. 在設定 ims_yv_url_redir.dat 後並安裝完成 curl_youtube 的情形下,解析 YouTube 之 URL 過程為 (1) youtube.video.php 讀取 YouTube 正常網頁 (https://www.youtube.com/watch?v=<<ID>>) (2) 由網頁中取出 video URL (3) 將 URL 存入 /usr/local/etc/dvdplayer/ims_yv_url_data.dat (4) 叫用 ims_yv_url_redir.dat 中所設定之 URL 來使用本機上之 curl/wget 進行解析 (5) [若使用 curl_youtube] curl_youtube 將處理可能之 302 重導,並向 YouTube 取得資料轉送 --- v1.7 更動部分程式碼,以期未來能支援更多影音網站 * 敬請改用 v1.7 版之 youtube.video.php * 不再支援 v1.7 版之前版本中自動由 IMS 來源網站載入功能 A. 請將 v1.7 版之 youtube.video.php 刷入本機 --- v1.6 增加了 youtube 影片的字幕功能: 設定載入喜好後即可顯示有提供 CC 的 youtube 影片 A. 請將至少 v1.6.2 版之 youtube.video.php 刷入本機 希望將來真的不必再更新本機內的這個檔案 B. 影片開始會比平常慢一些,因為要先下載字幕 C. 因為播放機的時間解析度只能到約 0.1 秒,所以字幕的出現和消失可能會有點不順 在影片一開始的兩、三分鐘內,因為 onRefresh 被叫用的間隔並不穩定, 所以可能會不太順有些播放機可能無法順利顯示字幕 (我自己好幾部 HD300B plus 就有不行的) D. 按 [藍] 可切換字幕的顯示; 按 [信息] 則有影片相關資訊: (1) 34/640x360/9/0/115 為 youtube 解析度資訊 (2) 字幕相關資訊 [-] 表示使用者設定為不自動載入字幕 {-} 表示此影片不提供字幕 [#] 表示此影片提供的字幕中,並無使用者接受的 [X] 表示字幕下載失敗 [zh-Hant]{zh-Hant,en} 表示正在使用正體中文(zh-Hant)字幕 而此影片提供正體中文與英文字幕 E. v1.6.4 可直接觀賞 TED.com 上的 TED Talks,並支援字幕顯示 部分 TED.com 上的影片實際存放於 YouTube 且不一定有字幕 --- v1.4 增加了 youtube.video.php 兩個重要的新功能: * 敬請改用 v1.7 版之 youtube.video.php * 不再支援 v1.7 版之前版本中自動由 IMS 來源網站載入功能 A. 由 IMS 來源網站載入 scripts/youtube.video.php 來執行 如此一來,只要將 v1.4 這份 youtube.video.php 刷入機中,以後應該就不必再更新這個檔案 這個功能是由 IMS 來源網站透過 yv_rmt_src 這個 URL 變數來告知 youtube.video.php 下載位置,如果有需要的話,可以手動設定或取消此功能 如果整個 IMS code 是放在本機執行的話,自然就沒有這個功能了 (因為 IMS 來源是本機) B. 可以用 fmt_prefs 來指定 YouTube 的解析度喜好,預設為 22,35,34,18,5 請參考 http://en.wikipedia.org/wiki/YouTube 也可以把喜好放在本機檔案 /usr/local/etc/dvdplayer/ims_fmt_prefs.dat 放在這個本機檔案的優先次序高於使用 fmt_prefs 來進行的設定 在 IMS code 中,有提供了幾個讓使用者可以簡單在本機上設定的功能: 最高 1920x1080、最高 1280x720、最高 854x480、以及取消本機解析度設定 觀賞 1080p Trailers 和動感小站等頻道,應該可以看出差別 此外,可以使用遙控器上的 [信息] 鍵顯示目前播放的 YouTube video clip 的解析度資訊 備註 1. 奠基於 iMax.Live 韌體 20110401 這個 php IMS 架構發展之初,參考了 iMax 韌體中的許多部分, 非常感謝 maxjojo@HDPfans! 2. 因為我使用的 image 都是去抓那些網站的 logo 還有用 images.google.com 從網上抓下來的,所以無法一併 release 在 code 中,請見諒。
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.