Before applying this patch, when downloading resources from xiami.com, it crashes with these:
Traceback (most recent call last):
File "/home/phi/.local/bin/youtube-dl", line 11, in <module>
sys.exit(main())
File "/home/phi/.local/lib/python3.5/site-packages/youtube_dl/__init__.py", line 433, in main
_real_main(argv)
File "/home/phi/.local/lib/python3.5/site-packages/youtube_dl/__init__.py", line 423, in _real_main
retcode = ydl.download(all_urls)
File "/home/phi/.local/lib/python3.5/site-packages/youtube_dl/YoutubeDL.py", line 1786, in download
url, force_generic_extractor=self.params.get('force_generic_extractor', False))
File "/home/phi/.local/lib/python3.5/site-packages/youtube_dl/YoutubeDL.py", line 691, in extract_info
ie_result = ie.extract(url)
File "/home/phi/.local/lib/python3.5/site-packages/youtube_dl/extractor/common.py", line 347, in extract
return self._real_extract(url)
File "/home/phi/.local/lib/python3.5/site-packages/youtube_dl/extractor/xiami.py", line 116, in _real_extract
return self._extract_tracks(self._match_id(url))[0]
File "/home/phi/.local/lib/python3.5/site-packages/youtube_dl/extractor/xiami.py", line 43, in _extract_tracks
'%s/%s%s' % (self._API_BASE_URL, item_id, '/type/%s' % typ if typ else ''), item_id)
File "/home/phi/.local/lib/python3.5/site-packages/youtube_dl/extractor/common.py", line 562, in _download_json
json_string, video_id, transform_source=transform_source, fatal=fatal)
File "/home/phi/.local/lib/python3.5/site-packages/youtube_dl/extractor/common.py", line 568, in _parse_json
return json.loads(json_string)
File "/usr/lib/python3.5/json/__init__.py", line 312, in loads
s.__class__.__name__))
TypeError: the JSON object must be str, not 'NoneType'
This patch solves exactly this problem.
By default io.open() convert all '\n' occurrences to '\r\n' when writing
files. If the content already contains '\r\n', it will be converted to
'\r\r\n', breaking some video players.