Commit Graph

573 Commits (f03ee0b3725898f321f795d68f4f9c4630b188b3)

Author SHA1 Message Date
Yen Chi Hsuan 79298173c5
[utils] Fix getheader in urlhandle_detect_ext
Fixes , related to 
Sergey M․ cda6d47aad
[utils] Simplify integer conversion in js_to_json
Sergey M․ 89ac4a19e6
[utils] Process non-base 10 integers in js_to_json
felix bd1e484448
[utils] js_to_json: various improvements
now JS object literals like { /* " */ 0: ",]\xaa<\/p>", } will be correctly converted to JSON.
Yen Chi Hsuan 7581bfc958
[utils] Unquote crendentials passed to SOCKS proxies
Fixes 
Yen Chi Hsuan 778a1ccca7
[utils] Add Œ and œ found in French to ACCENT_CHARS
Fixes 
Yen Chi Hsuan 702ccf2dc0
[compat] Rename shlex_quote and remove unused subprocess_check_output
Yen Chi Hsuan edaa23f822
[compat] Rename struct_(un)pack to compat_struct_(un)pack
Yen Chi Hsuan d5ae6bb501
[utils] Add rationale for register_socks_protocols
Yen Chi Hsuan 51fb4995a5
[utils] Register SOCKS protocols in urllib and support SOCKS4A
Yen Chi Hsuan 71aff18809
[socks] Support SOCKS proxies
Yen Chi Hsuan dab0daeeb0
[utils,compat] Move struct_pack and struct_unpack to compat.py
Sergey M․ abc97b5eda
[utils] Allow empty attribute values in get_element_by_attribute (Closes )
Adam Thalhammer c587cbb793 improved performance by extracting accented chars to top level
Adam Thalhammer 79a2e94e79 Instead of replacing accented characters with an underscore when sanitizing file names in restricted mode, replace them with their non-accented equivalents fixes
Sergey M․ eb9ee19422
[utils] Allow None mimetypes in mimetype2ext
Sergey M b6c0d4f431 Merge pull request from remitamine/parse_duration
[utils] imporove parse_duration to handle more formats
remitamine acaff49575 [utils] imporove parse_duration to handle more formats
Yen Chi Hsuan cacd996662 [utils] Don't touch URLs if not necessary
Fix test_Generic_15 (Google redirect)
Jaime Marquínez Ferrándiz 5bf28d7864 [utils] dfxp2srt: add additional namespace
Used by the ZDF subtitles ().
Sergey M․ 15d260ebaa [utils] Use update_Request in http_request
Sergey M․ ed0291d153 [utils] Add update_Request
Sergey M․ 17bcc626bf [utils] Extract sanitize_url routine
Sergey M․ 15707c7e02 [compat] Add compat_urllib_parse_urlencode and eliminate encode_dict
encode_dict functionality has been improved and moved directly into compat_urllib_parse_urlencode
All occurrences of compat_urllib_parse.urlencode throughout the codebase have been replaced by compat_urllib_parse_urlencode

Closes 
Yen Chi Hsuan 622d19160b [utils] Clarify Python versions affected by buggy struct module
Yen Chi Hsuan efbed08dc2 [utils] Encode hostnames before passing to urllib
With IDN (Internationalized Domain Name) and a proxy, non-ascii URLs
are passed down to urllib/urllib2, causing UnicodeEncodeError

Fixes 
Jaime Marquínez Ferrándiz 782b1b5bd1 [utils] lookup_unit_table: Match word boundary instead of end of string
Jaime Marquínez Ferrándiz 09fc33198a utils: lookup_unit_table: Use a stricter regex
In parse_count multiple units start with the same letter, so it would match different units depending on the order they were sorted when iterating over them.
Sergey M․ 810c10baa1 [utils] Use compat_xpath
Sergey M․ c5229f3926 [utils] PEP 8
remitamine 83548824c2 Merge pull request from bpfoley/twitter-thumbnail
[utils] Add extract_attributes for extracting html tag attributes
Sergey M․ 2f7ae819ac [utils] PEP 8
Sergey M․ fb47597b09 [bbc] Generalize unit table lookup and add parse_count
Yen Chi Hsuan 25cb05bda9 [utils] Remove codec2ext
This function is orignally used for determining file extensions of DASH
formats. Now in DASH, ext is determined by mime_type. See  for more
information.
Yen Chi Hsuan 6d210f2090 [utils] Add more codecs to codec2ext
BBC uses avc3. Here's an example (thanks to @remitamine for this example)

http://rdmedia.bbc.co.uk/dash/ondemand/bbb/2/client_manifest-common_init.mpd

See also https://trac.ffmpeg.org/ticket/5217
Yen Chi Hsuan 19a17d4623 [utils] Add codec2ext
Jaime Marquínez Ferrándiz 3233a68fbb [utils] update_url_query: Encode the strings in the query dict
The test case with {'test': '第二行тест'} was failing on python 2 (the non-ascii characters were replaced with '?').
remitamine 1255733945 Merge pull request from remitamine/update_url_params
[utils] add update_url_query function to create or update query string params
remitamine 38f9ef31dc [utils] add update_url_query function
Yen Chi Hsuan 0cae023b24 Merge branch 'jython-support'
Closes 
Yen Chi Hsuan 8ee239e921 [utils] Jython support - handle filenames correctly
Now test:youtube downloads
Brian Foley 8bb56eeeea [utils] Add extract_attributes for extracting html tag attributes
This is much more robust than just using regexps, and handles all
the common scenarios, such as empty/no values, repeated attributes,
entity decoding, mixed case names, and the different possible value
quoting schemes.
remitamine e07237f640 [utils] remove check for val from find_xpath_attr
Yen Chi Hsuan 5eb6bdced4 [utils] Multiple changes to base_n()
1. Renamed to encode_base_n()
2. Allow tables longer than 62 characters
3. Raise ValueError instead of AssertionError for invalid input data
4. Return the first character in the table instead of '0' for number 0
5. Add tests
Yen Chi Hsuan 680079be39 [utils] Relaxing regex in decode_packed_codes for vidzi
Yen Chi Hsuan f52354a889 [utils] Move codes for handling eval() from iqiyi.py
Yen Chi Hsuan 59f898b7a7 [utils] Merge base_n functions
Yen Chi Hsuan 481888294d [utils] Add base36 for use in Vidzi
Yen Chi Hsuan 81bdc8fdf6 [utils] Move base62 to utils
Sergey M․ f160785c5c [utils] Remove AM/PM from unified_strdate patterns
Yen Chi Hsuan b95dc034ca [utils] Implement cache for OnDemandPagedList
remitamine cafcf657a4 add more subtitles mime types to mimetype2ext and fix the platform subtitle extraction
Yen Chi Hsuan c1c05c67ea [utils] Jython support - disable setproctitle() until ctypes is complete
Yen Chi Hsuan 399a76e67b [utils] Jython support: tolerate missing fcntl module
Jaime Marquínez Ferrándiz 765ac263db [utils] mimetype2ext: return 'm4a' for 'audio/mp4' (fixes )
The youtube extractor was using 'mp4' for them, therefore filters like 'bestaudio[ext=m4a]' stopped working (94278f7202 broke it).
Yen Chi Hsuan 5bc880b988 [utils] Add OHDave's RSA encryption function
Sergey M․ 611c1dd96e [refactor] Single quotes consistency
Sergey M․ d800609c62 [refactor] Do not specify redundant None as second argument in dict.get()
Sergey M․ 9c7b38981c [utils] Bump Firefox version in User-Agent
Old version number causes Youtube not to serve some formats in ytplayer.config
Sergey M․ 8411229bd5 [utils] Allow dot in strip_jsonp
Sergey M․ 86296ad2cd [utils] Add ability to control skipping false values in dict_get
Sergey M․ cbecc9b903 [utils] Add dict_get convenience method
Jaime Marquínez Ferrándiz 87de7069b9 [utils] dfxp2srt: make TTMLPElementParser inherit from object
For consistency between python 2 and 3.
remitamine 2b14cb566f [utils] fix dfxp2srt text extraction(fixes )
Yen Chi Hsuan a0d8d704df [utils] Reorder items in mimetype2ext alphabetically
Yen Chi Hsuan f6861ec96f [utils] Add more items to mimetype2ext ()
These are used in Youtube formats
remitamine 6ec6cb4e95 Revert "fix typos"
This reverts commit 36a0e46c39.
remitamine 36a0e46c39 fix typos
Jakub Wilk dfb1b1468c Fix typos
Closes .
Sergey M․ a7aaa39863 [utils] Extract known extensions for reuse
Yen Chi Hsuan c047270c02 [utils] Remove Content-encoding from headers after decompression
With cn_verification_proxy, our http_response() is called twice, one from
PerRequestProxyHandler.proxy_open() and another from normal
YoutubeDL.urlopen(). As a result, for proxies honoring Accept-Encoding, the
following bug occurs:

$ youtube-dl -vs --cn-verification-proxy https://secure.uku.im:993 "test:letv"
[debug] System config: []
[debug] User config: []
[debug] Command-line args: ['-vs', '--cn-verification-proxy', 'https://secure.uku.im:993', 'test:letv']
[debug] Encodings: locale UTF-8, fs utf-8, out UTF-8, pref UTF-8
[debug] youtube-dl version 2015.12.23
[debug] Git HEAD: 97f18fa
[debug] Python version 3.5.1 - Linux-4.3.3-1-ARCH-x86_64-with-arch-Arch-Linux
[debug] exe versions: ffmpeg 2.8.4, ffprobe 2.8.4, rtmpdump 2.4
[debug] Proxy map: {}
[TestURL] Test URL: http://www.letv.com/ptv/vplay/22005890.html
[Letv] 22005890: Downloading webpage
[Letv] 22005890: Downloading playJson data
ERROR: Unable to download JSON metadata: Not a gzipped file (b'{"') (caused by OSError('Not a gzipped file (b\'{"\')',)); please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see  https://yt-dl.org/update  on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
  File "/home/yen/Executables/Multimedia/youtube-dl/youtube_dl/extractor/common.py", line 330, in _request_webpage
    return self._downloader.urlopen(url_or_request)
  File "/home/yen/Executables/Multimedia/youtube-dl/youtube_dl/YoutubeDL.py", line 1886, in urlopen
    return self._opener.open(req, timeout=self._socket_timeout)
  File "/usr/lib/python3.5/urllib/request.py", line 471, in open
    response = meth(req, response)
  File "/home/yen/Executables/Multimedia/youtube-dl/youtube_dl/utils.py", line 773, in http_response
    raise original_ioerror
  File "/home/yen/Executables/Multimedia/youtube-dl/youtube_dl/utils.py", line 761, in http_response
    uncompressed = io.BytesIO(gz.read())
  File "/usr/lib/python3.5/gzip.py", line 274, in read
    return self._buffer.read(size)
  File "/usr/lib/python3.5/gzip.py", line 461, in read
    if not self._read_gzip_header():
  File "/usr/lib/python3.5/gzip.py", line 409, in _read_gzip_header
    raise OSError('Not a gzipped file (%r)' % magic)
Sergey M․ 9b9c5355e4 Rename error_to_str to error_to_compat_str
Sergey M․ 8e60dc7526 [utils] Add encode_compat_str
Sergey M․ fdae235858 [utils] Add error_to_str
Yen Chi Hsuan db2fe38b55 [utils] Support alternative timestamp format in TTML
Fixes 
Yen Chi Hsuan d631d5f9f2 [utils] Fix TTML conversion
Tolerate invalid timestamps (closes )
Sergey M․ 31b2051e21 [utils] Add remove_quotes
Yen Chi Hsuan 992fc9d6e1 [utils] Refactor handle_youtubedl_headers for future extension
Yen Chi Hsuan 0424ec307b [utils] Correct docstring of YoutubeDLHandler
Yen Chi Hsuan 87f0e62d94 [utils] Separate codes for handling Youtubedl-* headers
Sergey M․ 67dda51722 Rename compat_urllib_request_Request to sanitized_Request and move to utils
Sergey M․ 9cb9a5df77 [utils] Check ext with trailing slash against the list of known extensions
Sergey M․ 3e12bc583a [utils] Improve determine_ext (Closes )
Sergey M․ 7e1f5447e7 [utils] Improve encode_dict
Sergey M․ 7a3f0c00ad [utils] Style
Sergey M․ 7aefc49c40 [utils] Skip invalid/non HTML entities (Closes )
Jaime Marquínez Ferrándiz 6a75040278 [utils] unified_strdate: Return None if the date format can't be recognized (fixes )
This issue was introduced with ae12bc3ebb, it returned 'None'.
Sergey M․ c90d16cf36 [utils:sanitize_path] Disallow trailing whitespace in path segment (Closes )
Sergey M 30eecc6a04 Merge pull request from jaimeMF/xml_attrib_unicode
Use a wrapper around xml.etree.ElementTree.fromstring in python 2.x (…
Sergey M․ ae12bc3ebb [utils] Make unified_strdate always return unicode string
Sergey M․ 578c074575 [utils] Support list of xpath in xpath_element
Sergey M․ 52c3a6e49d [utils] Improve parse_iso8601
Jaime Marquínez Ferrándiz f78546272c [compat] compat_etree_fromstring: also decode the text attribute
Deletes parse_xml from utils, because it also does it.
Jaime Marquínez Ferrándiz 36e6f62cd0 Use a wrapper around xml.etree.ElementTree.fromstring in python 2.x ()
Attributes aren't unicode objects, so they couldn't be directly used in info_dict fields (for example '--write-description' doesn't work with bytes).
Sergey M․ d01949dc89 [utils:js_to_json] Fix bad escape in double quoted strings
Yen Chi Hsuan 1e399778ee [letv] Fix extraction
Using data URIs for passing the decrypted M3U8 manifest, which is
supported by ffmpeg only.
Sergey M․ af98f8ff37 [utils] Return default on fail in int_or_none
Sergey M․ caf80631f0 [utils] Do not fail in float_or_none on non-numeric data
Sergey M․ 1812afb7b3 [utils] Do not fail in int_or_none on non-numeric data (Closes )
Sergey M․ 5a1a2e9454 [utils] Fix kwargs on old python 2 (Closes )
Sergey M․ e28034c5ac [utils] Comment cookie processing until result from travis and some more testing
Sergey M․ 266e466ee4 [utils] Simplify cookie processor
Sergey M․ 1639282434 [utils] Add encode_dict
Sergey M․ ad72917274 [utils] Add issue URL in comment for
Sergey M․ a6420bf50c [utils] Add cookie processor for cookie correction (Closes )
Sergey M․ 66e289bab4 [utils] Generalize cli option converters
Sergey M․ 8e636da499 [utils] Improve xpath_text
Sergey M․ 5d2354f177 [utils] Relax attribute key assert
Sergey M․ a41fb80ce1 [utils] Add xpath_element and xpath_attr
Sergey M․ e5e78797e6 [utils] Strict HTTP responses (Closes )
Sergey M․ 5a4d9ddb21 [utils] Percent-encode redirect URL of Location header (Closes )
Sergey M․ 51f267d9d4 [YoutubeDL:utils] Move percent encode non-ASCII URLs workaround to http_request and simplify (Closes )
Sergey M․ ee114368ad [utils] Make value optional for find_xpath_attr
This allows selecting particular attributes by name but without specifying the value and similar to xpath syntax `[@attrib]`
Raphael Michel 2c7ed24796 Remove redundant (and wrong) class parameters
Yen Chi Hsuan 9c29bc69f7 [utils] Improve parse_duration
Now dots are parsed. For example '87 Min.'
Sergey M․ bf42a9906d [utils] Add default value for xpath_text
Yen Chi Hsuan 4eb10f6621 [utils] Add ISO3166Utils
Yen Chi Hsuan 4e33577173 [utils] Support ttaf1 namespace in TTML
It's found in bbc.co.uk. See 
Yen Chi Hsuan 396726244a [utils/ffmpeg] Move ISO 639 related codes to utils
Yen Chi Hsuan ecee572411 [yahoo] Add support for closed captions (closes )
Yen Chi Hsuan 1b0427e6c4 [utils] Support TTML without default namespace
In a strict sense such TTML is invalid, but Yahoo uses it.
Yen Chi Hsuan c1c924abfe [utils,common] Merge format_srt_time and _subtitles_timecode
format_srt_time uses a comma as the delimiter between seconds and
milliseconds while _subtitles_timecode uses a dot. All .srt examples I
found on the Internet uses a comma, so I use a comma in the merged
version. See http://matroska.org/technical/specs/subtitles/srt.html and
http://devel.aegisub.org/wiki/SubtitleFormats/SRT
Yen Chi Hsuan 7dff03636a [utils] Support 'dur' field in TTML
Yen Chi Hsuan d39e0f05db [utils] Remove sanitize_url_path_consecutive_slashes()
This function is used only in SohuIE, which is updated to use a new
extraction logic.
Jaime Marquínez Ferrándiz 541168039d [utils] get_exe_version: encode executable name (fixes )
It failed in python 2.x when $PATH contains a directory with non-ascii characters.
Yen Chi Hsuan 0fe2ff78e6 [NBC] Enhance embedURL extraction (closes )
Sergey M․ b3ed15b760 [utils] Add replace_extension
Sergey M․ e65e4c8874 [utils] Improve prepend_extension
Now `ext` is appended to filename if real extension != expected extension.
Sergey M․ c86b61428b [utils] Fix another old python 2.6 kwargs issue (Closes )
Sergey M. 40b96352c9 Merge pull request from jaimeMF/remove-format-limit
Remove the --max-quality option
Sergey M․ aa49acd15a [utils] Add `get_subprocess_encoding` and filename/argument decode counterparts
Yen Chi Hsuan bf6427d2fb [ffmpeg] Add dfxp (TTML) subtitles support (, )
Jaime Marquínez Ferrándiz 9f3fa89f7c Remove the --max-quality option
It doesn't work well with 'bestvideo' and 'bestaudio' because they are usually before the max quality.
Format filters should be used instead, they are more flexible and don't require the requested quality to exist for each video.
Jaime Marquínez Ferrándiz 08f2a92c9c InfoExtractor._search_regex: Suggest updating when the regex is not found (suggested in )
Reuse the same message from ExtractorError
Sergey M․ be531ef1ec [utils] Fix splitunc deprecation warning
Yen Chi Hsuan 0a1603634b [utils] Remove url_infer_protocol
Yen Chi Hsuan 418c5cc3fc [udn] Add new extractor
Sergey M․ 15ac8413c7 [utils] Avoid treating `*-%Y` date template as UTC offset
Sergey M․ 79c21abba7 [utils] Add one more template to unified_strdate
Sergey M․ ba9e68f402 [utils] Drop trailing comma before closing brace
Jaime Marquínez Ferrándiz 70a1165b32 Don't use bare 'except:'
They catch any exception, including KeyboardInterrupt, we don't want to catch it.
Naglis Jonaitis 91757b0f37 [utils] Escape all HTML entities written in hexadecimal form
Sergey M․ 92a4793b3c [utils] Place sanitize url function near other sanitizing functions
Sergey M․ dc03a42537 Merge branch 'sohu_fix' of https://github.com/yan12125/youtube-dl into yan12125-sohu_fix
Sergey M․ 2ebfeacabc [utils] Keep dot and dotdot unmodified (Closes )
Sergey M․ f18ef2d144 [utils] Disallow trailing dot in sanitize_path for a path part
Sergey M․ d55de57b67 [utils] Fix sanitize_open
Sergey M․ a2aaf4dbc6 [utils] Add sanitize_path
Yen Chi Hsuan 55969016e9 [utils] Add a function to sanitize consecutive slashes in URLs
Philipp Hagemeister 2461f79d2a [utils] Correct per-request proxy handling