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'

ध्यान दें कि wgetURL का आवरण (उदाहरण के 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

जिसे अगर सहेजा और क्रियान्वित किया गया है, तो काफी अच्छी तरह से काम करता है।

यह स्क्रिप्ट भी, जो यूएल को भी डाउनलोड करेगी:

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

NB मुझे लगता है कि जिस मामले में URL है वह अधिकांश साइटों के लिए महत्वपूर्ण नहीं है - उदाहरण के लिएHTTP://WWW.UBUNTU.COM


4
python -c 'import urllib2; print urllib2.unquote("'${URL}'")'लगभग वैसा ही करता है, यदि आप अपना url पर्यावरण चर URL में रखते हैं।
तानेली

3
डोमेन के लिए मामला आम तौर पर महत्वपूर्ण नहीं है, लेकिन सर्वर के केस-संवेदी रूटिंग का उपयोग करने या वास्तविक पृष्ठ पर अलग-अलग मामलों के साथ URL को पुनर्निर्देशित नहीं करने पर क्या हो सकता है, इसके बाद का मामला हो सकता है। बिंदु में मामला: developer.android.com/reference/android/view/View.html बनाम developer.android.com/reference/android/view/view.html
JAB

7

आपको इसे इस तरह इस्तेमाल करना चाहिए

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

बस हर जगह के साथ बदलें %20। या बेहतर अपने मूल लिंक को कॉपी करें और इसे क्रोमियम ब्राउज़र एड्रेस बार में पेस्ट करें। यह स्वचालित रूप से आपके लिए इसे प्रारूपित कर देगा। अब इसे वहां से अपने टर्मिनल पर कॉपी करें।


2
यह विधि कुछ मामलों में सुरक्षा जोखिम हो सकती है। यदि आपके पास पहले से क्रोमियम खुला है, तो यह संभवतः [Ctrl]+[Shift]+[J](देव कंसोल के लिए) प्रेस और सम्मिलित करने का सबसे तेज़ तरीका है decodeURIComponent("your-decoded-URI")
कॉमफ्रीक

4

W URL को निम्नलिखित प्रारूप होने की उम्मीद है:

[protocol://]host/path

प्रोटोकॉल वैकल्पिक है। प्रोटोकॉल के अभाव में Wget HTTP को मानता है।

Wget प्रतिशत-एन्कोडेड URL को ठीक स्वीकार करता है, लेकिन प्रोटोकॉल , होस्ट और पथ के बीच के सीमांकक प्रतिशत-एन्कोडेड नहीं हो सकते।

यही कारण है कि Wget ने URL के आवरण को भी बदल दिया। चूँकि यह एक एकल अनएन्कोडेड स्लैश नहीं मिला, इसलिए यह माना जाता है कि

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

होस्टनाम है (जो केस-असंवेदनशील होगा)। बेशक, वास्तविक होस्टनाम है dl.minitoons.ir

स्वचालित समाधान के लिए, प्रतिस्थापन %3A%2F%2Fऔर उसके %2Fबाद hostname द्वारा ://और /पर्याप्त होगा, लेकिन URL को एक में डिकोड करना उतना ही आसान है। @Ililf ने पहले ही इसके लिए एक अच्छा समाधान दिया।

हालाँकि, यदि आप मैन्युअल रूप से 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

मैंने इसके लिए एक पाइथन स्क्रिप्ट लिखना समाप्त कर दिया।

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))
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.