Commit Graph

673 Commits (master)

Author SHA1 Message Date
Sergey M․ 6be08ce602
[utils] Use in OnDemandPagedList by default
Not using cache results in redundant network I/O due to downloading the same pages while using --playlist-items n-m
7 years ago
Sergey M․ 4c54b89e03
Hide experimental phantomjs wrapper 7 years ago
Yen Chi Hsuan 4ed2d7b7d1 Fix flake8 issues after #14225 7 years ago
Yen Chi Hsuan 3869028ffb [utils] Use bytes-like objects in dfxp2srt
This fixes handling of non-UTF8 TTML subtitles

Closes #14191
7 years ago
Yen Chi Hsuan a88d461dff Merge pull request #14225 from Tithen-Firion/openload-phantomjs-method
Openload phantomjs method
7 years ago
Sergey M․ c7e327c4d4
[utils] Introduce bool_or_none 7 years ago
Yen Chi Hsuan 95f3f7c20a
[utils] Fix unescapeHTML for misformed string like "&a"" (#13935) 7 years ago
Sergey M․ 5b232f46dc
[utils] Skip missing params in cli_bool_option (closes #13865) 7 years ago
Tithen-Firion feee8d32e4 [phantomjs] add exe version to debug info 7 years ago
Yen Chi Hsuan 609ff8ca19 [utils] Support attributes with no values in get_elements_by_attribute() 7 years ago
Sergey M․ aefce8e6dc
[utils] Use compat_shlex_quote in shell_quote 7 years ago
Sergey M․ b4a3d461e4
[utils] Handle HTMLParseError in extract_attributes (closes #13349) 7 years ago
Sergey M․ 2ae2ffda5e
[utils] Improve unified_timestamp 7 years ago
Yen Chi Hsuan b407d8533d
[utils] Drop an compatibility wrapper for Python < 2.6
addinfourl.getcode is added since Python 2.6a1. As youtube-dl now
requires 2.6+, this is no longer necessary.

See 9b0d46db11
7 years ago
Yen Chi Hsuan 5552c9eb0f
[utils] Recognize more patterns in strip_jsonp()
Used in Youku Show pages
7 years ago
Sergey M․ 60f5c9fb19
[utils] Recognize more audio codecs (#13081) 7 years ago
Yen Chi Hsuan 10c87c151b
[utils] Rename try_multipart_encode to _multipart_encode_impl
To state that this is an internal function and people should be careful
when using it outside youtube-dl.
7 years ago
Yen Chi Hsuan b2ad479d17
[utils] Fix multipart_encode for Python < 3.5 7 years ago
Tithen-Firion c89267d31a Merge branch 'master' into openload-phantomjs-method 7 years ago
Yen Chi Hsuan 0c26548601
[cda] Implement birthday verification (closes #12789) 7 years ago
Sergey M․ deef31955b
[utils] Improve unified_timestamp
Seen at http://zaq1.pl/video/xev0e
7 years ago
Remita Amine 98ce1a3fd3 [utils] add video/mp2t to mimetype2ext 7 years ago
Tithen-Firion 98f9d87381 [phantomjs] Add required version checking 7 years ago
Tithen-Firion edd9221cd2 [utils] Fix inconsistent output of clean_html
`\s` in Python 2.x doesn't match unicode whitespace characters by
default
7 years ago
Tithen-Firion 40e41780f1 [phantomjs] add cookie support 7 years ago
Tithen-Firion da57ebaf84 [openload] separate PhantomJS code from extractor 7 years ago
Remita Amine 5b995f713b [utils] add support for ttml styles 7 years ago
Sergey M․ a32a9a7ef5
[extractor/common] Add support multiple getters in try_get 7 years ago
Sergey M․ 51098426b8
[utils] Introduce expand_path 7 years ago
Sergey M․ 4b5de77bdb
[utils] Process bytestrings in urljoin (closes #12369) 7 years ago
Sergey M․ 158af5242e
[utils] Carry long doc string 7 years ago
Yen Chi Hsuan 0a5445ddbe [utils] Add bytes_to_long() and long_to_bytes()
Used in daisuki.net (#4738)

Both are adapted from public domain PyCrypto:
https://github.com/dlitz/pycrypto/blob/master/lib/Crypto/Util/number.py
7 years ago
Yen Chi Hsuan f48409c7ac [utils] Add pkcs1pad
Used in daisuki.net (#4738)
7 years ago
Sergey M․ 4248dad92b Improve geo bypass mechanism
* Rename options to preffixly match with --geo-verification-proxy
* Introduce _GEO_COUNTRIES for extractors
* Implement faking IP right away for sites with known geo restriction
7 years ago
Sergey M․ 18a0defab0 [utils] Make random_ipv4 return unicode string 7 years ago
Sergey M․ 773f291dcb Add experimental geo restriction bypass mechanism
Based on faking X-Forwarded-For HTTP header
7 years ago
Pierre Mdawar bf5b9d859a [utils] Introduce YoutubeDLError base class for all youtube-dl exceptions 7 years ago
Sergey M․ db13c16ef8
[utils] Add support for quoted string literals in --match-filter (closes #8050, closes #12142, closes #12144) 7 years ago
Ricardo Constantino 2f49bcd690
utils.py: Workaround TypeError with Python 2.7.13 in Windows
Fixes #11540

Tested with Windows Python 2.7.12 and 2.7.13.
7 years ago
Thomas Christlieb 2af12ad9d2 Introduce get_elements_by_class and get_elements_by_attribute utility functions 7 years ago
Sergey M․ 4195096ea8
[utils] Improve comments processing in js_to_json (closes #11947) 7 years ago
Michal Čihař b3ee552e4b
[utils] Handle single-line comments in js_to_json 7 years ago
Sergey M․ 15846398ca
[utils] Improve parse_duration 7 years ago
Yen Chi Hsuan 0c1c6f4b9f
[utils] Add another date format seen in NextTV 7 years ago
Sergey M․ cb655f34fb
[utils] Add more date formats 7 years ago
Yen Chi Hsuan ec85ded83c
Fix "invalid escape sequences" error on Python 3.6 7 years ago
Sergey M․ b0c65c677f
[utils] Improve urljoin 8 years ago
Sergey M․ e34c33614d
[utils] Add convenience urljoin 8 years ago
Sergey M․ fb37eb25d9
[utils] Add common user agents map 8 years ago
Sergey M․ 02dc0a36b7
[utils] Introduce base_url 8 years ago
Sergey M․ e5a088dc4b
[utils] Fix --match-filter for int-like strings (closes #11082) 8 years ago
Yen Chi Hsuan b64d04c119
[utils] Clarify for redirecting STDIN in get_exe_version() 8 years ago
John Hawkinson 00ca755231 [get_exe_version] Do version probes with <&-
When doing version probes for ffmpeg, do the
equivalent of calling it as:

    ffmpeg -version <&-

Where <&- is shell syntax for closing stdin before calling the
program. This is roughly equivalent to </dev/null without actually
opening /dev/null.

This prevents ffmpeg -version from hanging when run in the background.
Fixes #955.

The reason is that ffmpeg tries to manipulate stdin to set up terminal
characteristic, and that causes the kernel to suspend the parent
process (youtube-dl).

Note that closing stdin is achieved by calling subprocess.Popen() with
stdin set to subprocess.PIPE and without passing any input to
Popen.communicate(). This is somewhat subtle.
8 years ago
Sergey M․ 06b3fe2926
[utils] Expose PACKED_CODES_RE 8 years ago
Déstin Reed dcdb292fdd
Unify coding cookie 8 years ago
Yen Chi Hsuan bd26441205
[utils] Fix xattr error handling 8 years ago
Yen Chi Hsuan 53a7e3d287
[utils] Support xattr as well as pyxattr
Closes #9054

There are two xattr packages in Python, pyxattr [1] and xattr [2]. They
have different APIs.

In old days pyxattr supports Linux only and xattr supports Linux, Mac,
FreeBSD and Solaris, and pyxattr supports Linux only. Recently pyxattr
adds support for Mac OS X. [3]

An old version of [2] is shipped with Mac OS X. However, some Linux
distributions have pyxattr only, for example PLD-Linux [4] and old Arch
Linux. [5] As a result, supporting both is the way to go.

[1] https://github.com/iustin/pyxattr
[2] https://github.com/xattr/xattr
[3] https://github.com/iustin/pyxattr/pull/9
[4] https://github.com/rg3/youtube-dl/issues/5498
[5] https://git.archlinux.org/svntogit/community.git/commit/?id=427c4c76401e386d865ccddea4fbfdc74df80492
    https://git.archlinux.org/svntogit/community.git/commit/?id=59b40da7b69622a6761d364a8b07909e9cccaa56
    python-xattr is added on 2016/06/29 while pyxattr is there for more
    than 6 years
8 years ago
Sergey M․ c6eed6b8c0
[utils] Lower priority for rare date formats and add tests 8 years ago
Kacper Michajłow 3aa3953d28
[vk] Fix date and view count extraction. 8 years ago
Yen Chi Hsuan efa97bdcf1
Move write_xattr to utils.py
There are some other places that use xattr functions. It's better to
move it to a common place so that others can use it.
8 years ago
Sergey M․ 3e4185c396
[utils] Use native french month names 8 years ago
Sergey M․ f6717dec8a
[utils] Improve month_by_name and add tests 8 years ago
renalid a942d6cb48
[utils,franceinter] Add french months' names and fix extraction
Update of the "FranceInter" radio extractor : webpages HTML structure
had changed, the extractor didn't work. So I updated this extractor to
get the mp3 URL and all details.
8 years ago
Sergey M․ c2b2c7e138
[utils] Add quicktime to mimetype2ext 8 years ago
Sergey M․ 6562d34a8c
[utils] Improve mimetype2ext 8 years ago
Remita Amine 073ac1225f [utils] add ac-3 to the list of audio codecs in parse_codecs 8 years ago
Yen Chi Hsuan 70852b47ca
[utils] Recognize units with full names in parse_filename
Reference: https://en.wikipedia.org/wiki/Template:Quantities_of_bytes
8 years ago
Yen Chi Hsuan e4659b4547
[utils] Correct octal/hexadecimal number detection in js_to_json 8 years ago
Sergey M․ 13585d7682
[utils] Recognize lowercase units in parse_filesize 8 years ago
Remita Amine 98e698f1ff [external/curl] respect more downloader options and display progress 8 years ago
Yen Chi Hsuan 81c13222c6
[utils] Recognize more formats in unified_timestamp
Used in CtsNews
8 years ago
Sergey M․ a8795327ca
[utils] Add support TV Parental Guidelines ratings in parse_age_limit 8 years ago
Yen Chi Hsuan d3f8e038fe
[utils] Add decode_png for openload (#9706) 8 years ago
Yen Chi Hsuan 7dc2a74e0a
[utils] Fix unified_timestamp for formats parsed by parsedate_tz() 8 years ago
Sergey M․ f164b97123
[utils] Add another f4m mimetype to mimetype2ext 8 years ago
Remita Amine e910fe2fe4 [brightcove] skip ism manifests 8 years ago
Yen Chi Hsuan 0b68de3cc1 Merge pull request #8876 from remitamine/html5_media
[extractor/common] add helper method to extract html5 media entries
8 years ago
Yen Chi Hsuan 84c237fb8a
[utils] Add get_element_by_class
For #9950
8 years ago
Remita Amine b4173f1551 [utils] add mimetypes to determine manifest ext(m3u8, f4m, mpd) 8 years ago
Remita Amine 81953d1ae5 [kaltura] add support videos stored on custom kaltura servers(closes #5557) 8 years ago
Sergey M․ 95cf60e826
[utils] Add PUTRequest 8 years ago
Aleksandar Topuzovic 6b03e1e25d
[HRTi] Implement extractor for Croatian Radiotelevision 8 years ago
remitamine 4f3c5e0627 [utils] add helper function for parsing codecs 8 years ago
Yen Chi Hsuan 1143535d76
[utils] Add urshift()
Used in IqiyiIE and LeIE
8 years ago
Sergey M․ b72b44318c
[utils] Add strip_or_none 8 years ago
Sergey M․ 46f59e89ea
[utils] Add unified_timestamp 8 years ago
remitamine e154c65128 [downloader/hls] Add support for AES-128 encrypted segments in hlsnative downloader 8 years ago
Yen Chi Hsuan 47212f7bcb
[utils] Don't transform numbers not starting with a zero
Fix test_Viidea and maybe others
8 years ago
Sergey M․ 329ca3bef6
[utils] Add try_get
To reduce boilerplate when accessing JSON
8 years ago
Paul Henning 15d106787e [utils] Change Firefox 44 to 47
See commit title.
8 years ago
Yen Chi Hsuan 55b2f099c0
[utils] Decode HTML5 entities
Used in test_Vporn_1. Also related to #9270
8 years ago
Yen Chi Hsuan 6c33d24b46
[utils] Add audio/mpeg to mimetype2ext()
Used in WDR live radios (#6147)
8 years ago
bzc6p c88270271e Added sanitization support for Hungarian letters Ő and Ű 8 years ago
Yen Chi Hsuan 9a4aec8b7e [utils] Use bytes-like objects as header values on Python 2 8 years ago
Yen Chi Hsuan 0ea590076f [utils] Always decode Location header
escape_url is broken for bytes-like objects
8 years ago
Yen Chi Hsuan 293c255688
[utils] Remove debugging codes 8 years ago
Yen Chi Hsuan 5950cb1d6d
[utils] Support a new form of date
Found in dw.com (#9475)
8 years ago
Sergey M․ c6b9cf05e1
[utils] Do not fail on unknown date formats in unified_strdate 8 years ago
Sergey M․ 46bc9b7d7c
[utils] Allow None in remove_{start,end} 8 years ago
Yen Chi Hsuan cdd94c2eae
[utils] Check for None values in SOCKS proxy
Originally reported at
https://github.com/rg3/youtube-dl/pull/9287#issuecomment-219617864
8 years ago
Yen Chi Hsuan 79298173c5
[utils] Fix getheader in urlhandle_detect_ext
Fixes #7049, related to #9440
8 years ago
Sergey M․ cda6d47aad
[utils] Simplify integer conversion in js_to_json 8 years ago
Sergey M․ 89ac4a19e6
[utils] Process non-base 10 integers in js_to_json 8 years ago
felix bd1e484448
[utils] js_to_json: various improvements
now JS object literals like { /* " */ 0: ",]\xaa<\/p>", } will be correctly converted to JSON.
8 years ago
Yen Chi Hsuan 7581bfc958
[utils] Unquote crendentials passed to SOCKS proxies
Fixes #9450
8 years ago
Yen Chi Hsuan 778a1ccca7
[utils] Add Œ and œ found in French to ACCENT_CHARS
Fixes #9463
8 years ago
Yen Chi Hsuan 702ccf2dc0
[compat] Rename shlex_quote and remove unused subprocess_check_output 8 years ago
Yen Chi Hsuan edaa23f822
[compat] Rename struct_(un)pack to compat_struct_(un)pack 8 years ago
Yen Chi Hsuan d5ae6bb501
[utils] Add rationale for register_socks_protocols 8 years ago
Yen Chi Hsuan 51fb4995a5
[utils] Register SOCKS protocols in urllib and support SOCKS4A 8 years ago
Yen Chi Hsuan 71aff18809
[socks] Support SOCKS proxies 8 years ago
Yen Chi Hsuan dab0daeeb0
[utils,compat] Move struct_pack and struct_unpack to compat.py 8 years ago
Sergey M․ abc97b5eda
[utils] Allow empty attribute values in get_element_by_attribute (Closes #9415) 8 years ago
Adam Thalhammer c587cbb793 improved performance by extracting accented chars to top level 8 years ago
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 #9347 8 years ago
Sergey M․ eb9ee19422
[utils] Allow None mimetypes in mimetype2ext 8 years ago
Sergey M b6c0d4f431 Merge pull request #9110 from remitamine/parse_duration
[utils] imporove parse_duration to handle more formats
8 years ago
remitamine acaff49575 [utils] imporove parse_duration to handle more formats 8 years ago
Yen Chi Hsuan cacd996662 [utils] Don't touch URLs if not necessary
Fix test_Generic_15 (Google redirect)
8 years ago
Jaime Marquínez Ferrándiz 5bf28d7864 [utils] dfxp2srt: add additional namespace
Used by the ZDF subtitles (#9081).
8 years ago
Sergey M․ 15d260ebaa [utils] Use update_Request in http_request 8 years ago
Sergey M․ ed0291d153 [utils] Add update_Request 8 years ago
Sergey M․ 17bcc626bf [utils] Extract sanitize_url routine 8 years ago
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 #8974
8 years ago
Yen Chi Hsuan 622d19160b [utils] Clarify Python versions affected by buggy struct module 8 years ago
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 #8890
8 years ago
Jaime Marquínez Ferrándiz 782b1b5bd1 [utils] lookup_unit_table: Match word boundary instead of end of string 8 years ago
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.
8 years ago
Sergey M․ 810c10baa1 [utils] Use compat_xpath 8 years ago
Sergey M․ c5229f3926 [utils] PEP 8 8 years ago
remitamine 83548824c2 Merge pull request #8092 from bpfoley/twitter-thumbnail
[utils] Add extract_attributes for extracting html tag attributes
8 years ago
Sergey M․ 2f7ae819ac [utils] PEP 8 8 years ago
Sergey M․ fb47597b09 [bbc] Generalize unit table lookup and add parse_count 8 years ago
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 #8766 for more
information.
8 years ago
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
8 years ago
Yen Chi Hsuan 19a17d4623 [utils] Add codec2ext 8 years ago
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 '?').
8 years ago
remitamine 1255733945 Merge pull request #8739 from remitamine/update_url_params
[utils] add update_url_query function to create or update query string params
8 years ago
remitamine 38f9ef31dc [utils] add update_url_query function 8 years ago
Yen Chi Hsuan 0cae023b24 Merge branch 'jython-support'
Closes #8302
8 years ago
Yen Chi Hsuan 8ee239e921 [utils] Jython support - handle filenames correctly
Now test:youtube downloads
8 years ago
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.
8 years ago
remitamine e07237f640 [utils] remove check for val from find_xpath_attr 8 years ago
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
8 years ago
Yen Chi Hsuan 680079be39 [utils] Relaxing regex in decode_packed_codes for vidzi 8 years ago
Yen Chi Hsuan f52354a889 [utils] Move codes for handling eval() from iqiyi.py 8 years ago
Yen Chi Hsuan 59f898b7a7 [utils] Merge base_n functions 8 years ago
Yen Chi Hsuan 481888294d [utils] Add base36 for use in Vidzi 8 years ago
Yen Chi Hsuan 81bdc8fdf6 [utils] Move base62 to utils 8 years ago
Sergey M․ f160785c5c [utils] Remove AM/PM from unified_strdate patterns 8 years ago