diff options
| -rwxr-xr-x | youtube_dl/YoutubeDL.py | 14 | ||||
| -rw-r--r-- | youtube_dl/extractor/common.py | 5 | 
2 files changed, 18 insertions, 1 deletions
| diff --git a/youtube_dl/YoutubeDL.py b/youtube_dl/YoutubeDL.py index ebace6b57..1c04e46c1 100755 --- a/youtube_dl/YoutubeDL.py +++ b/youtube_dl/YoutubeDL.py @@ -864,8 +864,14 @@ class YoutubeDL(object):              if self.params.get('playlistrandom', False):                  random.shuffle(entries) +            x_forwarded_for = ie_result.get('__x_forwarded_for_ip') +              for i, entry in enumerate(entries, 1):                  self.to_screen('[download] Downloading video %s of %s' % (i, n_entries)) +                # This __x_forwarded_for_ip thing is a bit ugly but requires +                # minimal changes +                if x_forwarded_for: +                    entry['__x_forwarded_for_ip'] = x_forwarded_for                  extra = {                      'n_entries': n_entries,                      'playlist': playlist, @@ -1250,6 +1256,11 @@ class YoutubeDL(object):          if cookies:              res['Cookie'] = cookies +        if 'X-Forwarded-For' not in res: +            x_forwarded_for_ip = info_dict.get('__x_forwarded_for_ip') +            if x_forwarded_for_ip: +                res['X-Forwarded-For'] = x_forwarded_for_ip +          return res      def _calc_cookies(self, info_dict): @@ -1392,6 +1403,9 @@ class YoutubeDL(object):              full_format_info = info_dict.copy()              full_format_info.update(format)              format['http_headers'] = self._calc_headers(full_format_info) +        # Remove private housekeeping stuff +        if '__x_forwarded_for_ip' in info_dict: +            del info_dict['__x_forwarded_for_ip']          # TODO Central sorting goes here diff --git a/youtube_dl/extractor/common.py b/youtube_dl/extractor/common.py index 96815099d..c1f7f28a0 100644 --- a/youtube_dl/extractor/common.py +++ b/youtube_dl/extractor/common.py @@ -384,7 +384,10 @@ class InfoExtractor(object):              for _ in range(2):                  try:                      self.initialize() -                    return self._real_extract(url) +                    ie_result = self._real_extract(url) +                    if self._x_forwarded_for_ip: +                        ie_result['__x_forwarded_for_ip'] = self._x_forwarded_for_ip +                    return ie_result                  except GeoRestrictedError as e:                      if (not self._downloader.params.get('bypass_geo_restriction_as_country', None) and                              self._BYPASS_GEO and | 
