zenity + wget = GUI wget

このトピックは、ブラウザを使用してファイルホスティングサービスから重いファイルをダウンロードすることを好まない人や、善意の仕事をよりよく理解したい人に捧げられています。



Linuxには、コンソールからヘビーJavaアプリケーションまで、さまざまなロッカーがあります。私のスクリプトは、単なる新しいロッカーではなく、標準のWgetの見事なラッパーです。 潜在的にはWgetでできることはすべて実行できますが、最も基本的な機能のみを実装しました。 このスクリプトの目的は、wgetを使用してダウンロードを開始し(ブラウザからダウンロードする)、実行の進行状況を表示することです。



GTK + 環境には 、ダイアログボックスの表示に使用するすばらしいZenityユーティリティがあります。 リンクには使用のすべての側面が十分に詳細に表示されるため、レビューは行いませんが、すぐに使用方法を示します。



ですから、私のスクリプトでは、快適にダウンロードするために最小限の機能を実装しました:リンクのリスト、プロキシの選択、http、ftpプロトコル、ダウンロードしたファイルの名前の修正(YouTubeのビデオなどに非常に役立ちます)、コマンドラインからの作業( Firefox FlashGotプラグインで動作します)。



#!/ bin / bash

#使用法:./guiwget

#FlashGot引数付き:[URL] [REFERER] [POST]

#Dependens:wget> = 1.11.1、zenity



はい、はい! wgetのバージョンには違いがあります。 バージョン1.11.1では、wgetはオプション--content-dispositionのサポートを開始しました。これは、ifolderやyoutubeなどの交換機からダウンロードするときに必要です。 また、FlashGotでflv-videosをダウンロードし、ダウンロードしたwgetを転送できるようにするオプションも示しました。

#URLを取得

[ "$ 1" ] && url = $ 1 || url = " $(zenity --text-info --editable --title =" URLリストを入力してください "--width = 500 --height = 300) " ;

[ " $ url " ] || exit 0 ;





リンクがFlashGotを介して送信された場合、パラメーターが処理され、直接実行された場合、URLのリストを要求するウィンドウが表示されます。 ダウンロードリストが空の場合、スクリプトは終了します。

#プロキシ

proxy1 = "アンゴラ" ; proxy1addr = "41.210.252.11:80" ;

proxy2 = "バングラデシュ" ; proxy2addr = "202.168.236.178:8080" ;

p = " $(zenity --list --title ="プロキシ選択 "--print-column = 2 --column =" "--column =" "" $ proxy1 "" $ proxy1addr "" $ proxy2 "" $ proxy2addr ") " ;

[ " $ p " = "" ] || proxy = "export http_proxy = http:// $ p " ;



プロキシを使用すると、たとえば2つのプロキシが表示されるなど、異常なものはありません。 理論的には、準備されたプロキシリストのインポートを実装する必要がありますが、私はそれを必要としません。 直接ダウンロードする場合は、ウィンドウの[キャンセル]ボタンをクリックします。

#ファイルのダウンロード用のフォルダの選択

downdir = " $(zenity --file-selection --directory --title ="保存するディレクトリを選択 ") " ;

[ " $ downdir " ] || exit 0 ;



ダウンロードするフォルダーを選択します。 スクリプトでパスをハードコーディングできますが、私はその多様性が大好きです:)



設定が終わり、最も基本的な作業が始まります。

$ urlの urs

する

#ログファイル

output = "/ tmp / ` date +%N` -log " ;

#Wget start

id = $ $ proxy ; wget -b -o " $ output " -P " $ downdir " --referer = "$ 2" --post-data = "$ 3" " $ urs " | egrep -o "[0- 9] + " ;

[ " $ id " ] || exit 0 ;



受信したパラメーターでwgetを起動し、バックグラウンドに送信し、ダウンロードの進行状況をログに書き込みます。ログは処理され、プロセスIDを記憶します。

#名前ファイルとサイズ

h = "" ;

while [ " $ h " == "" ] ; する

if [ -x / proc / $ id ]

それから

h = $ egrep -o "[^ \ /] + '。$" $ output ;

[ " $ h " = "" ] && h = $ sed -n '/RETR/s/.*RETR \([[:print:]] * \)... done。$ / \ 1 / p' $出力 ;

realname = " $ {h%\ '。} " ;

downfile = " $ {realname %% \?*} " ;

[ $ realname = " $ downfile " ] && [ -f " $ downdir / $ downfile " ] && downfile = ` date + N` " _ " $ downfile ;

他に

zenity --text-info --title = "Error" --filename = $ output --width = 700 --height = 400 ;

h = "FAIL" ;

rm $出力 ;

fi

完了 ;

[ " $ h " == "FAIL" ] && continue ;

size = $ grep "Length:" $ output | tail -1 | egrep -o "\(。+ \)" | cut -d "(" -f2 | cut -d ")" -f1 ;



ファイル名、サイズを決定し、サーバーがファイルを提供することを確認します。何か問題が発生した場合、ログのあるウィンドウが表示され、wgetは通常、正確に問題を書き込みます。 downfile変数は、ファイル名を正しく表示するため、およびファイル名file?Var = 1&var = 2をファイルに変換するために必要です。

一つのニュアンス-作業はロシア語のログで行われ、ロシア語の単語は傍受されます。そうでない場合は、スクリプトの「完了」と「長さ」の単語を修正してください。

#Graficalプログレスバー

tail -f --pid = $ id $ output | sed -u -n の/.* \。[] * \([[:print:]] * \)%[] * \([[:グラフ:]] * \)\([[:graph:]] * \)$ /# ' " $ downfile " ': ' $ size ' \ 1%[\ 2B \ / s](\ 3)\ n \ 1 / p ' | zenity --title = " $ pファイルをダウンロード" --progress --percentage = 0 --auto-close

[ $? -eq 0 ] && notify-send "ダウンロード完了" "ファイル: $ downfile " || [ -x / proc / $ id ] && kill $ id || zenity --text-info --title = "Error" --filename = $ output --width = 700 --height = 400 ;

mv " $ downdir / $ realname " " $ downdir / $ downfile " ;

#きれい

rm $出力 ;

やった


そして、これがどのように機能するかを伝える私のノウハウです。

tail -f --pidはログの追跡に最適であり、プロセスのpidも監視します。したがって、指定されたpidを持つプロセスが終了すると、tailはパイプラインも停止します。 ストリームテールはwgetログファイルを(awkとは異なり)ストリーミングsedに転送します。このsedはそれを処理し、必要な情報を抽出して適切にフォーマットすると、テキストが完全になります。

少し説明してみましょう。進行中に、フォームでテキストを送信する必要があります。

#表示するテキスト

0

#表示するテキスト

10

...



ここで、2行目はパーセント数です。 wgetログからのこの変換は、tail + sedによって行われます。 次はエラー処理またはダウンロードが成功した場合のポップアップメッセージ出力です。必要に応じて、ファイル名の変更も行う必要があります。



それだけです。ファイルを都合の良い場所に保存し、実行ビットを設定し、ソケットに起動ボタンを追加して使用するか、Firefox + FlashGot経由でタスクを送信します。



最後の仕上げとして、Rapidshareや、リンクインターセプターが気に入らないその他のファイルホスティングサービスを無効にするために、次の行を.wgetrcファイルに追加します。

header = Accept-Language:ru、en-us; q = 0.7、en; q = 0.3

header = Accept:text / html、application / xhtml + xml、application / xml; q = 0.9、* / *; q = 0.8

header = Accept-Encoding:gzip、deflate

ヘッダー= Accept-Charset:UTF-8、*

ヘッダー=キープアライブ:300

ヘッダー=接続:キープアライブ

user_agent = Mozilla / 5.0(X11; U; Linux i686; ru; rv:1.9.1.2)Gecko / 20090804知床/ 3.5.2

content_disposition = on



ブラウザに従ってユーザーエージェントを修正します。



スクリプトはここから入手できます: nebulosa2007.narod.ru/guiwget.tar.gz



All Articles