ria2 雖然很強大,配置就略有些復雜,一些懶人包說實話整成了累人包。
今天抽了點時間改進了一下 aardio 中的 process.aria2 擴展庫,順手解決了 aria2 不支持 UPnP 內網穿透的問題 —— 再也不用手動去配置了。
process.aria2 可以自動創(chuàng)建并管理 aria2 服務進程,自動獲取并添加最新 Tracker 服務器,自動探測可用空閑端口,多個 aria2 進程不會沖突。并且自動檢測系統(tǒng)環(huán)境并自動設置最佳配置。
寫界面也要不了幾句代碼。下面介紹 2 種實現(xiàn)界面的方案:
1、用網頁寫界面。先用 WebView2 + AriaNg 演示一下。至于強大的 WebView2 請參考:放棄 Electron,擁抱 WebView2!JavaScript 快速開發(fā)獨立 EXE 程序
2、直接用 aardio 創(chuàng)建原生界面。
這兩種方案的完整源碼我放到 process.aria2 擴展庫的范例里了。運行「 aardio 工具 > 擴展庫 」,在庫名稱中輸入 process.aria2 找到擴展庫,雙擊擴展庫名字可以打開范例( 右鍵菜單也可以 ):
這里要注意一下,BT 下載如果一開始沒速度是正常的,等一下或者先找個熱門資源下載速度就會上來了。
先看效果:
軟件的全部 aardio 代碼其實沒幾句,如下:
import win.ui;
/*DSG{{*/
var winform=win.form(text="aria下載器";right=1250;bottom=704;border="none")
winform.add(
bk={cls="bk";left=0;top=0;right=1251;bottom=31;bgcolor=11841964;dl=1;dr=1;dt=1;forecolor=5392444;linearGradient=0;z=2};
custom={cls="custom";text="";left=0;top=28;right=1251;bottom=706;bgcolor=16777215;db=1;dl=1;dr=1;dt=1;z=1}
)
/*}}*/
import process.aria2;
var aria2=process.aria2();
aria2.startServer();
import web.view;
var wb=web.view(winform.custom);
//創(chuàng)建嵌入HTTP服務器
import wsock.tcp.simpleHttpServer;
wsock.tcp.simpleHttpServer.threadGlobal={
ARIA2_RPC_PORT=tostring(aria2.rpcPort);
ARIA2_RPC_SECRET=crypt.bin.encodeBase64(aria2.rpcToken);
}
wb.go("/html/index.html");
//關閉窗口前關閉 aria2
winform.onDestroy=function(){
aria2.stop();
}
//添加窗口標題欄、邊框、陰影等
import win.ui.simpleWindow;
win.ui.simpleWindow(winform);
winform.show();
win.loopMessage();
aardio 用 simpleHttpServer 創(chuàng)建了一個嵌入式的微型 HTTP 服務端,另外 aardio 也可以將網頁端的 AriaNg 自動嵌入 EXE 文件 —— 所以能生成獨立 EXE。
aardio 支持類似 PHP 的服務端模板語法,這里我們簡單地將初始化配置的 *.js 文件 改為 *.aardio 文件,然后在這個 aardio 文件里動態(tài)讀取上面代碼設置的
ARIA2_RPC_PORT, ARIA2_RPC_SECRET
就可以讓 AriaNg 愉快地連接到 aardio 創(chuàng)建的 aria2 服務端了。
實際上就是修改 aria-ng-***.min.js,主要修改代碼如下:
response.contentType="application/x-javascript"; ?>
//…… 省略其他代碼 ……
angular.module("ariaNg").constant("ariaNgDefaultOptions", {
rpcPort: "<?=ARIA2_RPC_PORT ?>",
secret: "<?=ARIA2_RPC_SECRET ?>"
})
當然這種事就不需要自己動手去改動 AriaNg 了,我在范例里寫了一個『 更新前端 HTML.aardio 』,直接運行這個代碼就可以自動下載最新版 AriaNg,自動修改 AriaNg …… 全自動搞定。
這個界面我寫得比較簡單,主要演示用 aardio 直接調用 aria2 的 JSON-RPC 接口有多方便。這個先搞定了的話,單純畫個界面用什么界面組件就可以自由發(fā)揮了。
先看界面:
此方案生成的軟件體積更小,下面看完整源碼( 不再需要其他代碼 )。
家好,我是路程lucky,熱愛開發(fā)、設計、學習、生活、愛搗鼓的web前后端工程師,為您帶來原創(chuàng)文章~
本文基于centos系統(tǒng)的aria2離線下載服務的安裝,適用于各類所需人群學習、研究、實踐。離線下載的原理、實踐相信能給大家?guī)硎斋@。
在前幾期文章中,我們分別在windows和centos操作系統(tǒng)基礎上搭建了DLNA媒體服務,已經能夠實現(xiàn)了媒體服務器上綁定的文件夾能夠動態(tài)監(jiān)測文件夾內容,包含媒體文件就能夠局域網發(fā)送更新信息,從而電視端、手機端的DLNA終端設備更新獲取到最新的播放媒體信息。
「動手打造家庭媒體網絡平臺」體驗篇-媒體服務配置和預覽效果
「動手打造家庭媒體網絡平臺」安裝篇-windows搭建DLNA媒體服務
「動手打造家庭媒體網絡平臺」安裝篇-centos搭建DLNA媒體服務
點擊新增
然而,我們當時只是測試,手動在服務器的文件夾存放文件,這十分的不方便。我們預期是能夠離線下載。因此,我們的服務器需要一個離線下載工具,能夠在對應文件夾中下載我們所需的媒體資源。
最簡單的理解是不在本機進行下載,由服務器幫你下載好,當你需要的時候再取回本地。
經過調查當前支持linux的離線下載的軟件有:
這里我們采用的是aria2
aria2分為客戶端和服務器端。
aria2服務端官網
ariang客戶端網站
centos下的軟件主要步驟類似之前安裝serviio軟件一致,通過tar解壓、configure配置、make install安裝的方式進行安裝即可。
先從官網下載壓縮包https://github.com/aria2/aria2/releases/tag/release-1.35.0或者下載aria2源代碼https://github.com/aria2/aria2,這里我們下載最新版。這里下載tar.gz的tar包。
選擇tar.gz
關鍵步驟:
cd /lucky
// 解壓安裝包
tar -xzvf aria2-1.35.0.tar.gz
./configure
make
make install
直接啟動aria2:
// 啟動aria2進程, --enable-rpc=true參數(shù)為啟動rpc進程,默認為6800端口,這樣ui可以訪問到
aria2c --enable-rpc=true
由于默認軟件安裝并不會每次開機就執(zhí)行。我們需要將aria2改造為可啟動的service服務,模式與原理跟之前的安裝serviio類似具體可以參考。
aria2可以通過配置文件方式啟動,給予它設置一些默認參數(shù),這里我們放到/etc/aria2/aria2.conf文件中,如果沒有可以新建。
// 創(chuàng)建service文件
touch /lib/systemd/system/aria2-rpc.service
// 輸入服務內容
[Unit]
Description=aria2c-rpc
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
User=root
Group=root
GuessMainPID=yes
ExecStart=/bin/aria2c --enable-rpc=true -D --conf-path=/etc/aria2/aria2.conf
ExecReload=/bin/kill -s QUIT $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
// centos系統(tǒng)方式啟動
systemctl start aria2c-rpc
// 停止
systemctl stop aria2c-rpc
// 重啟
systemctl restart aria2c-rpc
客戶端其實就是html、css、js的靜態(tài)資源。需要搭建web服務器即可。這里使用nginx直接作為靜態(tài)資源服務器能夠訪問到。放到對應目錄即可。接口會調用 端口為6800的rpc服務知曉實時的狀態(tài)
瀏覽器訪問web客戶端頁面,點擊新增,輸入下載地址,開始下載
點擊新增
新增下載地址
設置下載路徑
當文件下載完成后,就會按照我們之前的章節(jié)所提到的,媒體服務自動更新,DLNA客戶端自動獲取到最新視頻,即實現(xiàn)了觀看離線下載的媒體
離線下載技術使得我們能夠將下載的任務交給服務器,實現(xiàn)資源共享。
通過離線下載媒體資源,貫通媒體資源播放,從而實現(xiàn)了媒體文件從源頭獲取到最終終端播放的一條順暢數(shù)據流,全程手機操作,在互聯(lián)網時代,真正實現(xiàn)了家庭媒體網絡平臺。
堅持原創(chuàng),堅持動手實踐,那么持續(xù)關注我,給予創(chuàng)造的動力,還給你一片廣袤的天空。我是路程lucky,分享和實踐專業(yè)技能,為美好生活和未來而努力奮斗。
riaNg Native中文版是mac上一款基于aria2開源下載軟件的Web前端,遵守MIT開源協(xié)議, 使用純 html & Javascript 開發(fā), 不需要任何編譯器或運行環(huán)境. 只要將 AriaNg 放在 Web 服務器里并在瀏覽器中打開即可使用. AriaNg使用響應式布局, 支持各種計算機或移動設備,支持多語言包括中文。
純Html和Javascript,無需運行時
響應式設計,支持桌面和移動設備
用戶友好的界面
排序任務(按名稱,大小,進度,剩余時間,下載速度等),文件,bittorrent同行
搜索任務
重試任務
通過拖動調整任務順序
更多任務信息(健康百分比,bt同行的客戶信息等)
按照指定的文件類型(視頻,音頻,圖片,文檔,應用程序,存檔等)或文件擴展名過濾文件
多目錄任務的樹視圖
下載/上傳aria2或單個任務的速度表
完全支持aria2設置
url命令行api支持
下載完成的通知
多語言支持
多aria2 RPC主機支持
導出和導入設置支持
減少帶寬使用,僅請求增量數(shù)據
查看AriaNg Native 1.1.5安裝包!http://ll006.cn/wOdKvs
*請認真填寫需求信息,我們會在24小時內與您取得聯(lián)系。