wgetおよびエンコードされたURL


12

次のようなURLがあります。

http://dl.minitoons.ir/longs/Khumba (2013) [EN] [BR-Rip 720p] - [www.minitoons.ir].rar

を使用してこのURLをダウンロードしますwget。に直接渡すとwget、すべてがうまくいきます。しかし、ダウンロードURLのエンコードされたバージョンしか持っていないという状況にあります。上記のURLのエンコードされたバージョンをに渡すwgetと、次のエラーがスローされます。

$ wget "http%3A%2F%2Fdl.minitoons.ir%2Flongs%2FKhumba%20(2013)%20%5BEN%5D%20%5BBR-Rip%20720p%5D%20-%20%5Bwww.minitoons.ir%5D.rar"
wget: unable to resolve host address `http://dl.minitoons.ir/longs/khumba (2013) [en] [br-rip 720p] - [www.minitoons.ir].rar'

お知らせwget(例えばURLの筐体を変更Khumbaしますkhumba)。この問題を解決するにはどうすればよいですか?

回答:


19

これはいらいらするほど一般的であるため、さまざまなコンバータが利用可能です- このサイトなど。これらを使用してURLをデコードできます。これにより、これが変換されます。

http%3A%2F%2Fdl.minitoons.ir%2Flongs%2FKhumba%20(2013)%20%5BEN%5D%20%5BBR-Rip%20720p%5D%20-%20%5Bwww.minitoons.ir%5D.rar

に:

http://dl.minitoons.ir/longs/Khumba (2013) [EN] [BR-Rip 720p] - [www.minitoons.ir].rar

しかし、コマンドラインバージョンを持っているのはniCeでしょう...

編集:

コマンドラインバージョンを見つけました-基本的に:

echo "http%3A%2F%2F-REST-OF-URL" | sed -e's/%\([0-9A-F][0-9A-F]\)/\\\\\x\1/g' | xargs echo -e

これは、URLをデコードする次のようなスクリプトで実装できます。

#!/bin/bash
echo "$@" | sed -e's/%\([0-9A-F][0-9A-F]\)/\\\\\x\1/g' | xargs echo -e
exit

保存して実行可能にすれば、非常にうまく機能します。

また、ULもダウンロードするこのスクリプト:

#!/bin/bash
echo "$@" | sed -e's/%\([0-9A-F][0-9A-F]\)/\\\\\x\1/g' | xargs echo -e | wget -c -i -
exit

注: URLが含まれているケースは、ほとんどのサイトでは重要ではないと思います-例えばHTTP://WWW.UBUNTU.COM


4
python -c 'import urllib2; print urllib2.unquote("'${URL}'")'urlを環境変数URLに入れると、ほぼ同じようになります。
taneli 14年

3
通常、ドメインの大文字と小文字は重要ではありませんが、サーバーが大文字と小文字を区別するルーティングを使用する場合や、大文字と小文字が異なるURLを実際のページにリダイレクトしない場合があります。ポイントのケース:developer.android.com/reference/android/view/View.htmldeveloper.android.com/reference/android/view/view.html
JAB 14

7

このように使うべきです

wget "http://dl.minitoons.ir/longs/Khumba%20(2013)%20[EN]%20[BR-Rip%20720p]%20-%20[www.minitoons.ir].rar"`

すべてのスペースをに置き換えてください%20。または、元のリンクをコピーして、Chromium Browserのアドレスバーに貼り付けてください。自動的にフォーマットされます。そこから端末にコピーします。


2
この方法は、場合によってはセキュリティ上のリスクになる可能性があります。既にChromiumを開いている場合は、おそらく[Ctrl]+[Shift]+[J](devコンソールの場合)を押して挿入する最も速い方法decodeURIComponent("your-decoded-URI")です。
ComFreek 14

4

Wgetは、URLが次の形式であると想定しています。

[protocol://]host/path

プロトコルはオプションです。protocolがない場合、WgetはHTTPを想定しています。

WgetはパーセントエンコードされたURLを正常に受け入れますが、protocolhost、およびpathの間の区切り文字はパーセントエンコードできません。

これが、WgetがURLの大文字小文字を変更した理由でもあります。エンコードされていないスラッシュが1つも見つからなかったため、

http://dl.minitoons.ir/longs/khumba (2013) [en] [br-rip 720p] - [www.minitoons.ir].rar

ホスト名です(大文字と小文字は区別されません)。もちろん、実際のホスト名はdl.minitoons.irです。

自動解決のために、代わりに%3A%2F%2F%2Fホスト名の後による://と、/十分であろうが、それは1でURLをデコードするだけの簡単なようです。@Wilfはこれに対してすでに良い解決策を提供しました。

ただし、Wgetコマンドを手動で入力する場合は、次のようにします。

wget "dl.minitoons.ir/longs%2FKhumba%20(2013)%20%5BEN%5D%20%5BBR-Rip%20720p%5D%20-%20%5Bwww.minitoons.ir%5D.rar"

1

URLを引用符で囲むだけで完了です:

wget "http://dl.minitoons.ir/longs/Khumba (2013) [EN] [BR-Rip 720p] - [www.minitoons.ir].rar"
Warning: wildcards not supported in HTTP.
--2014-03-02 20:40:20--  http://dl.minitoons.ir/longs/Khumba%20(2013)%20[EN]%20[BR-Rip%20720p]%20-%20[www.minitoons.ir].rar
Resolving dl.minitoons.ir (dl.minitoons.ir)... 79.127.127.41
Connecting to dl.minitoons.ir (dl.minitoons.ir)|79.127.127.41|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 594062365 (567M) [application/x-rar-compressed]
Saving to: ‘Khumba (2013) [EN] [BR-Rip 720p] - [www.minitoons.ir].rar’

 0% [                                       ] 73,288      44.9KB/s          

その方が簡単で、物事に困る必要はありません。


0

私はそのためにpythonスクリプトを書くことになりました。

from os import listdir, rename
from urllib.parse import unquote  # py2: from urllib import unquote

os.chdir('/mydir/')
for filename in listdir('.'):
    rename(filename, unquote(filename))
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.