トレントの場合、すべてがシンプルで些細なものです-Transmissionまたは同様のクライアントにWeb銃口を付けます。 しかし、単純なファイル/ページへのリンクには、独自のものが必要です。 以下に、私にタスクを書くように促したタスクの短いリストを示します。
- タブレットを使用してオンラインで映画を見ていますが、物事が表示され、後で見るために保存する必要があります。
- ファイルをリモートサーバーにダウンロードする必要があり、毎回ターミナルを起動する必要があります。
- 新鮮なlinuxmintのイメージをダウンロードする必要がありますが、このアイデアが生まれたラップトップではなく、自宅のNASにダウンロードします。
- サーフィン中に、ファイルを保存して共有するタスクが頻繁に発生します。
好奇心が強い場合は、猫へようこそ:
システム要件
Webインターフェースは、クライアント側のJavascript + css3、およびサーバー側のphp(最も人気のあるものとして選択)に基づいて構築されています。 完全な作業には、次のものが必要です。
- * nix (少なくともこのプラットフォーム専用に作成されたもので、別のプラットフォームで実行するには、作業ポートwget 、 ps 、 killが必要です);
- php5.x (ほとんどの場合、php4.xで動作しますが、公開時点ではテストされていません);
- Javascriptをサポートするブラウザー(およびcss3をサポートする非常に望ましいブラウザー)。
サーバー側の機能と設定
上記のように-PHPで記述されたスクリプトはサーバー側として機能します。 次のタスクを実行します。
- タスクの実行に関する情報を取得します。
- 実行中のタスクをキャンセルします。
- 新しいタスクの追加。
- 結果をJSON形式で返します。
彼の仕事には、それぞれps、wget、killが必要です。 ダウンロードステータスの値を取得するために(完了率で)、次のアルゴリズムが使用されます。
- Wgetタスクは、フラグ「 --background 」および「 --progress = bar:force 」で実行されます。
- ダウンロードログの出力は、パラメーター " --output-file = FILE "で設定されたファイルに対して行われます。
- 「 ps -ax 」を使用してタスクのステータスを照会すると、「-- output -file = FILE 」に設定されたファイルパスが取得されます 。
- このファイルの最後の行を読み取り、定期的に目的の値を取得します。
一時ログファイルのパスは、行 " define ( 'tmp_path' 、 '/ tmp' ) ; ";で設定されます。
ダウンロードされたすべてのファイルが保存されるディレクトリへのパスは、「 define ( 'download_path' 、 BASEPATH 。 '/ Downloads ' ) ; 」行で設定されます 。
ps、wget、killへの便利なパスが利用可能です。 これを行うには、行の先頭にあるコメントを削除し、パスを示します。たとえば、「 define ( 'wget' 、 '/ usr / bin / wget' ) ; 」
設定セクションからダウンロード速度に制限を設定することができます。 「 define ( 'wget_download_limit' 、 '1024' ) ; 」行がこれを担当しています。 コメントアウトしたままにすると、制限はありません。
GUIから他のタスクから起動されたタスクのリストを決定するために、GUIに固有の特定のフラグが使用されます。 「 define ( 'wget_secret_flag' 、 '--max-redirect = 4321' ) ; 」行にインストールされ、必要なく変更する必要はありません。 ちなみに、ターミナルから起動した他のタスクをWebインターフェイスに表示する場合は、このパラメーターを追加するだけです。 しかし、他のパラメーターもいくつかあることを忘れないでください(設定によって異なります)。
リソースに対して最も経済的な態度でシステムへの依存を最小限に抑えて記述しようとしましたが、PHPの経験はあまりないため、最適化の推奨事項に感謝します。
スクリプトは、POST要求とGET要求の両方に応答します。 それらの間に違いはありません。 コマンドラインで渡されたパラメータにも応答します。 例:
php ./rpc.php get_list
または
php ./rpc.php add_task http://goo.gl/5Qi0Xs
POSTリクエストとJSONレスポンスの例:
リクエスト:
192.168.1.2 / wget / rpc。 php ? action = add_task & url = http://mirror.yandex.ru/linuxmint/stable/17/linuxmint-17-cinnamon-dvd-64bit.iso
回答:
{
ステータス: 1 、
msg : "タスクが追加されました" 、
id : 10910
}
リクエスト:
192.168.1.2 / wget / rpc.php? アクション = get_list
回答:
{
ステータス: 1 、
msg : 「アクティブなタスクリスト」 、
タスク: [
{
url : " mirror.yandex.ru/linuxmint/stable/17/linuxmint-17-cinnamon-dvd-64bit.iso" 、
進捗: 95 、
id : 10910
}
]
}
「ps -ax | grep wget "and" cat /tmp/wget{RNDasket.log.tmp ":
データ:〜# ps -ax | grep wget
10910 ? S < s 0:34 wget --progress = bar:force --background --tries = 0 --no-cache --user-agent = Mozilla / 5.0 ( X11; Linux amd64; rv: 21.0 ) Gecko / 20100101 Firefox / 21.0 --directory-prefix = / DataVolume /シェア/パブリック/ダウンロード/ --limit-rate = 2048k --output-file = / tmp / wget9720.log.tmp --max-redirect = 4321 http: // mirror .yandex.ru / linuxmint / stable / 17 / linuxmint- 17 -cinnamon-dvd-64bit.iso
11378ポイント/ 0 S + 0:00 grep wget
データ:〜# cat / tmp / wget9720.log.tmp
--2014-08-24 12 : 32 :04-- http: // mirror.yandex.ru / linuxmint / stable / 17 / linuxmint- 17 -cinnamon-dvd-64bit.iso
mirror.yandex.ruの解決... 213.180.204.183、2a02:6b8 :: 183
mirror.yandex.ruへの接続| 213.180.204.183 | : 80 ...接続されました。
HTTP要求が送信され、応答を待っています... 200 OK
長さ: 1286799360 ( 1.2G ) [ application / octet-stream ]
保存先: `/ DataVolume /シェア/パブリック/ダウンロード/ linuxmint- 17 -cinnamon-dvd-64bit.iso`
95 % [ =================================== ]] 1、225、527、078 1.37M / sイータ35秒
データ:〜#
クライアント側の機能と設定
「新しいhtml5タグ」は使用されませんが、css3プロパティはダウンロードプログレスバーとアダプティブの設計に使用されます。 デザインは画像のないミニマリストスタイルで作られています(例外はファビコンです)。 タスクがない場合は、ページの中央にダウンロードアドレスを追加するためのフィールドがあり、タスクがある場合、このフィールドはページを上に移動し、タスクは下にあります。
すべてのリクエストは非同期です(ページをリロードすることはありません)。 ページデザイン-レスポンシブ:
状態の変化は、タブ(ウィンドウ)のタイトルにも表示されます。
ページの下部にjavascriptブックマーク(「これをダウンロード」)があり、ブラウザのブックマークバーに移動し、ワンクリックで新しいタスクを追加できます(クリックするとアクティブなタブが追加されます。ビデオファイルのあるタブが開いてブックマークバーでクリックされた場合-このビデオファイルをダウンロードするタスクが追加されます):
ドキュメントのすべてのJavaScriptコードは、コアファイルにあります。 js 上部には主な設定があります:
- 「UpdateStatusInterval = 5 * 1000 」-開いているタブでデータを更新する間隔(弱いサーバーではこのパラメーターに注意してください);
- 「DebugMode = false 」-デバッグモード。デバッグ情報はconsole.logに表示されます。
- "Prc = 'rpc.php' "-サーバー側スクリプトへのパス。
機能のポイントを説明することにはあまり意味がありませんが、機能は論理グループに分割され、スクリプトは縮小されず、コメントがあります。
F5をクリックすると、タスクの強制更新が発生し、ブラウザの更新ボタンをクリックするだけでページがリロードされます。
設置
- リポジトリの最新バージョンをダウンロードまたはクローンします。
- 「外部から」アクセス可能なディレクトリに解凍します。
- パスを「 define ( 'download_path' 、 BASEPATH 。 '/ Downloads ' ) ; 」から「rpc.php」に変更します。
- ブラウザで開き、動作を確認します。 エラーの場合- 質問してください 。
変更履歴
変更として、この投稿を更新します
- 更新するのが面倒になりました。現在の変更ログへのリンクがあります
- 0.0.9 -GUIのURLに「-> filename.ext」形式の行を追加することにより、保存されたファイルの名前を指定する機能が追加されました(要求の完全なビューは「htttp://somehost.io/oldfilename.zip-> newfilename.zip ")、追加の入力検証を追加
- 0.0.8-一時ファイルのディレクトリチェックを追加し、GUIにいくつかのタスクを追加する機能を追加、マイナーな改善(主に視覚部分)
- 0.0.7-存在のテストとdownload_path( http://goo.gl/I8gYoK )への書き込み許可がテスト機能に追加されました
- 0.0.6-ps aux呼び出しをps -ewwo pidに変更、解析を高速化するための引数(問題#8)
- 0.0.5-セキュリティ更新、タスクの追加時のエラーメッセージが修正され、関数は結果を返すだけでなくtrue | false-に加えて説明、コンソール(端末)からの起動パラメーターの操作のサポートが追加され、サーバーテスト関数が追加されました(gui-で) URLは「test」という単語を渡します)、その他の小さな修正
- 0.0.4-wgetログファイルの自動削除を追加、マイナーな修正
- 0.0.3-githubでのリリース
期待するもの:
- 認証とキーアクセスの追加。
- ロギング(実装);
- 使用済みログファイルの自動(または半自動)クリーニング(部分的に実装);
- ブラウザの拡張機能(実装済み)。
- ダウンロードのパスや保存されたファイルの名前(部分的に実装)など、タスクの詳細設定。
- 完了していないタスクの削除。
- ...
MITライセンス
著作権©2014 Paramtamtam
このライセンスにより、このソフトウェアおよび関連文書(以下「ソフトウェア」と呼びます)のコピーを受け取った個人は、無制限に使用、コピー、修正、追加、公開、配布、サブライセンスおよび/または以下の条件を条件として、本ソフトウェアのコピーの販売、および本ソフトウェアの提供者への販売
上記の著作権表示およびこれらの条件は、このソフトウェアのすべてのコピーまたは重要な部分に含まれている必要があります。
このソフトウェアは「現状有姿」で提供されますが、明示または黙示を問わず、いかなる種類の保証も含まれませんが、これにはシート送付シートの保証が含まれます。 でNO EVENTは、作者または著作権所有者は、または関連TO THE SOFTWAREの結果またはソフトウェアまたはソフトウェアでその他の取引の使用を持っていることから生じた損害、損失、または該当する契約の下で残りの要件、そうでない場合は不法行為OR、の請求を負担しなければなりません。
このライセンスにより、このソフトウェアおよび関連文書(以下「ソフトウェア」と呼びます)のコピーを受け取った個人は、無制限に使用、コピー、修正、追加、公開、配布、サブライセンスおよび/または以下の条件を条件として、本ソフトウェアのコピーの販売、および本ソフトウェアの提供者への販売
上記の著作権表示およびこれらの条件は、このソフトウェアのすべてのコピーまたは重要な部分に含まれている必要があります。
このソフトウェアは「現状有姿」で提供されますが、明示または黙示を問わず、いかなる種類の保証も含まれませんが、これにはシート送付シートの保証が含まれます。 でNO EVENTは、作者または著作権所有者は、または関連TO THE SOFTWAREの結果またはソフトウェアまたはソフトウェアでその他の取引の使用を持っていることから生じた損害、損失、または該当する契約の下で残りの要件、そうでない場合は不法行為OR、の請求を負担しなければなりません。
プロジェクトへのリンク: https : //github.com/tarampampam/wget-gui-light