Commit graph

666 commits

Author SHA1 Message Date
Sergey M․ 53896ca5be
[utils] Actualize major IPv4 address blocks per country 2019-10-29 06:10:20 +07:00
Sergey M․ 824fa51165
[utils] Improve subtitles_filename (closes #22753) 2019-10-18 04:03:53 +07:00
Sergey M․ f7a147e3b6
[utils] Introduce random_user_agent and use as default User-Agent (closes #21546) 2019-06-29 00:32:43 +07:00
Sergey M․ 28cc2241e4
[utils] Restrict parse_codecs and add theora as known vcodec (#21381) 2019-06-14 01:56:17 +07:00
Sergey M․ 53cd37bac5
[utils] Improve strip_or_none 2019-05-24 00:03:01 +07:00
Sergey M․ 3089bc748c
Fix W504 and disable W503 (closes #20863) 2019-05-11 03:57:40 +07:00
Jakub Wilk fd35d8cdfd [utils] Transliterate "þ" as "th" (#20897)
Despite visual similarity "þ" is unrelated to "p".
It is normally transliterated as "th":

    $ echo þ-Þ | iconv -t ASCII//TRANSLIT
    th-TH
2019-05-11 01:42:31 +07:00
Sergey M․ 5e1271c56d
[utils] Improve int_or_none and float_or_none (#20403) 2019-03-23 01:08:54 +07:00
Sergey M․ 0dc41787af
[utils] Introduce parse_bitrate 2019-03-17 09:07:47 +07:00
Sergey M․ 067aa17edf
Start moving to ytdl-org 2019-03-11 04:00:54 +07:00
remitamine e7e62441cd [utils] strip #HttpOnly_ prefix from cookies files (#20219) 2019-03-03 19:23:59 +07:00
Ales Jirasek 22f5f5c6fc
[malltv] Add extractor (closes #18058) 2019-02-08 00:43:26 +07:00
Sergey M․ fad4ceb534
[utils] Fix urljoin for paths with non-http(s) schemes 2019-01-20 20:22:19 +07:00
Sergey M․ e9a50fba86
[utils] Fix typo 2019-01-07 01:02:34 +07:00
Sergey M․ b7acc83550
[utils] Add language codes replaced in 1989 revision of ISO 639 to ISO639Utils (closes #18765) 2019-01-07 00:57:48 +07:00
Sergey M․ 1bab343704
[YoutubeDL] Introduce YoutubeDLCookieJar and clarify the rationale behind session cookies (closes #12929) 2018-12-09 06:47:49 +07:00
Alexander Seiler aa374bc78e [utils] Fix random_birthday to generate existing dates only 2018-12-02 00:05:15 +07:00
Sergey M․ 25d110be30
[utils] Properly recognize AV1 codec (closes #17506) 2018-09-10 02:37:22 +07:00
Sergey M․ 9e21e6d96b
[utils] Improve remote address skipping and add support for python 2.6 (closes #17362) 2018-08-29 01:18:03 +07:00
Andrew Udvare 8959018a5f
[utils] Skip remote IP addresses non matching to source address' IP version (closes #13422) 2018-08-29 01:17:53 +07:00
Sergey M․ 60c0856223
[utils] Use pure browser header for User-Agent (closes #17236) 2018-08-14 23:27:12 +07:00
Huyuumi 38e87f6c2a [utils] Remove return from __init__ 2018-07-29 05:52:42 +07:00
Sergey M․ af03000ad5
[utils] Introduce url_or_none 2018-07-21 18:03:58 +07:00
Sergey M․ e9c671d5e8
[utils] Allow JSONP with empty func name (closes #17028) 2018-07-21 12:30:18 +07:00
Sergey M․ 0685d9727b
[utils] Share JSON-LD regex 2018-07-09 23:43:05 +07:00
Enes 85750f8972 [openload] Improve ext extraction 2018-06-02 00:16:22 +07:00
Remita Amine 261f47306c [utils] fix style id extraction for namespaced id attribute(closes #16551) 2018-05-26 14:38:24 +01:00
Remita Amine 5a16c9d9d3 [utils] keep the original TV_PARENTAL_GUIDELINES dict 2018-05-25 23:12:50 +01:00
Remita Amine b836118724 [utils] Relax TV Parental Guidelines matching 2018-05-23 12:12:20 +01:00
Sergey M․ 5f95927a62
Improve geo bypass mechanism
* Introduce geo bypass context
* Add ability to bypass based on IP blocks in CIDR notation
* Introduce --geo-bypass-ip-block
2018-05-02 07:20:59 +07:00
Sergey M․ 6cc622327f
[utils] Introduce merge_dicts 2018-04-28 02:47:17 +07:00
Sergey M․ 1cc47c6674
[utils] Fix match_str for boolean meta fields 2018-04-24 23:54:49 +07:00
Philipp Hagemeister f226880c6d [tennistv] Add support for tennistv.com 2018-03-14 09:55:21 +01:00
Sergey M․ b871d7e954
[utils] Add parse_resolution 2018-03-02 23:39:04 +07:00
Sergey M․ befa4708fd
[utils] Fixup some common URL's typos in sanitize_url (closes #15649) 2018-02-19 22:50:23 +07:00
Remita Amine b12cf31bb1 [cbc] add new extractor for olympics.cbc.ca(closes #15535) 2018-02-19 09:02:23 +01:00
Sergey M․ 65220c3bd6
Add support for IronPython 2018-01-28 05:48:18 +07:00
Mike Fährmann c384d537f8 [util] Improve scientific notation handling in js_to_json (closes #14789) 2018-01-20 22:54:21 +07:00
Philipp Hagemeister d7cd9a9e84
[utils] Fix youtube-dl under PyPy3 on Windows 2018-01-01 22:48:27 +07:00
Sergey M․ b555ae9bf1
[utils] Add another date format pattern (#14999) 2017-12-16 21:56:16 +07:00
Remita Amine d4f05d4731 [utils] add sami mimetype to mimetype2ext 2017-12-03 00:04:43 +01:00
Remita Amine ffe6979ef9 [utils] add hvc1 codec code to parse_codecs 2017-11-27 16:55:27 +01:00
Sergey M․ 056653bbb1
[utils] Add support for zero years and months in parse_duration 2017-10-29 07:04:48 +07:00
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
2017-10-06 23:13:53 +07:00
Sergey M․ 4c54b89e03
Hide experimental phantomjs wrapper 2017-09-24 00:08:27 +07:00
Yen Chi Hsuan 4ed2d7b7d1 Fix flake8 issues after #14225 2017-09-17 13:53:04 +08:00
Yen Chi Hsuan 3869028ffb [utils] Use bytes-like objects in dfxp2srt
This fixes handling of non-UTF8 TTML subtitles

Closes #14191
2017-09-16 12:18:38 +08:00
Yen Chi Hsuan a88d461dff Merge pull request #14225 from Tithen-Firion/openload-phantomjs-method
Openload phantomjs method
2017-09-16 02:28:28 +08:00
Sergey M․ c7e327c4d4
[utils] Introduce bool_or_none 2017-09-10 19:08:39 +07:00
Yen Chi Hsuan 95f3f7c20a
[utils] Fix unescapeHTML for misformed string like "&a"" (#13935) 2017-08-19 21:40:53 +08:00
Sergey M․ 5b232f46dc
[utils] Skip missing params in cli_bool_option (closes #13865) 2017-08-09 22:28:19 +07:00
Tithen-Firion feee8d32e4 [phantomjs] add exe version to debug info 2017-08-03 14:17:25 +02:00
Yen Chi Hsuan 609ff8ca19 [utils] Support attributes with no values in get_elements_by_attribute() 2017-07-05 23:27:12 +08:00
Sergey M․ aefce8e6dc
[utils] Use compat_shlex_quote in shell_quote 2017-06-17 23:48:58 +07:00
Sergey M․ b4a3d461e4
[utils] Handle HTMLParseError in extract_attributes (closes #13349) 2017-06-12 01:52:24 +07:00
Sergey M․ 2ae2ffda5e
[utils] Improve unified_timestamp 2017-06-11 21:27:22 +07:00
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
2017-05-27 23:05:02 +08:00
Yen Chi Hsuan 5552c9eb0f
[utils] Recognize more patterns in strip_jsonp()
Used in Youku Show pages
2017-05-26 21:58:18 +08:00
Sergey M․ 60f5c9fb19
[utils] Recognize more audio codecs (#13081) 2017-05-14 12:33:33 +07:00
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.
2017-05-06 19:06:18 +08:00
Yen Chi Hsuan b2ad479d17
[utils] Fix multipart_encode for Python < 3.5 2017-05-05 20:51:59 +08:00
Tithen-Firion c89267d31a Merge branch 'master' into openload-phantomjs-method 2017-05-04 11:00:06 +02:00
Yen Chi Hsuan 0c26548601
[cda] Implement birthday verification (closes #12789) 2017-05-04 16:26:17 +08:00
Sergey M․ deef31955b
[utils] Improve unified_timestamp
Seen at http://zaq1.pl/video/xev0e
2017-04-30 21:45:53 +07:00
Remita Amine 98ce1a3fd3 [utils] add video/mp2t to mimetype2ext 2017-04-30 09:03:10 +01:00
Tithen-Firion 98f9d87381 [phantomjs] Add required version checking 2017-04-29 12:41:42 +02:00
Tithen-Firion edd9221cd2 [utils] Fix inconsistent output of clean_html
`\s` in Python 2.x doesn't match unicode whitespace characters by
default
2017-04-28 17:34:27 +02:00
Tithen-Firion 40e41780f1 [phantomjs] add cookie support 2017-04-25 15:12:54 +02:00
Tithen-Firion da57ebaf84 [openload] separate PhantomJS code from extractor 2017-04-25 01:06:14 +02:00
Remita Amine 5b995f713b [utils] add support for ttml styles 2017-04-19 14:38:40 +01:00
Sergey M․ a32a9a7ef5
[extractor/common] Add support multiple getters in try_get 2017-04-18 22:39:58 +07:00
Sergey M․ 51098426b8
[utils] Introduce expand_path 2017-03-26 02:30:10 +07:00
Sergey M․ 4b5de77bdb
[utils] Process bytestrings in urljoin (closes #12369) 2017-03-06 03:57:46 +07:00
Sergey M․ 158af5242e
[utils] Carry long doc string 2017-03-01 23:04:02 +07:00
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
2017-02-28 22:10:31 +08:00
Yen Chi Hsuan f48409c7ac [utils] Add pkcs1pad
Used in daisuki.net (#4738)
2017-02-28 22:10:31 +08:00
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
2017-02-19 05:10:08 +08:00
Sergey M․ 18a0defab0 [utils] Make random_ipv4 return unicode string 2017-02-19 05:10:08 +08:00
Sergey M․ 773f291dcb Add experimental geo restriction bypass mechanism
Based on faking X-Forwarded-For HTTP header
2017-02-19 05:10:08 +08:00
Pierre Mdawar bf5b9d859a [utils] Introduce YoutubeDLError base class for all youtube-dl exceptions 2017-02-19 05:10:08 +08:00
Sergey M․ db13c16ef8
[utils] Add support for quoted string literals in --match-filter (closes #8050, closes #12142, closes #12144) 2017-02-15 23:12:10 +07:00
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.
2017-02-11 14:51:28 +00:00
Thomas Christlieb 2af12ad9d2 Introduce get_elements_by_class and get_elements_by_attribute utility functions 2017-02-11 17:16:54 +08:00
Sergey M․ 4195096ea8
[utils] Improve comments processing in js_to_json (closes #11947) 2017-02-03 03:04:33 +07:00
Michal Čihař b3ee552e4b
[utils] Handle single-line comments in js_to_json 2017-02-03 03:04:33 +07:00
Sergey M․ 15846398ca
[utils] Improve parse_duration 2017-01-26 23:23:08 +07:00
Yen Chi Hsuan 0c1c6f4b9f
[utils] Add another date format seen in NextTV 2017-01-23 23:37:32 +08:00
Sergey M․ cb655f34fb
[utils] Add more date formats 2017-01-12 22:39:45 +07:00
Yen Chi Hsuan ec85ded83c
Fix "invalid escape sequences" error on Python 3.6 2017-01-06 00:58:56 +08:00
Sergey M․ b0c65c677f
[utils] Improve urljoin 2016-12-17 18:49:55 +07:00
Sergey M․ e34c33614d
[utils] Add convenience urljoin 2016-12-13 02:23:49 +07:00
Sergey M․ fb37eb25d9
[utils] Add common user agents map 2016-12-12 00:49:07 +07:00
Sergey M․ 02dc0a36b7
[utils] Introduce base_url 2016-11-02 02:30:18 +07:00
Sergey M․ e5a088dc4b
[utils] Fix --match-filter for int-like strings (closes #11082) 2016-10-31 23:32:08 +07:00
Yen Chi Hsuan b64d04c119
[utils] Clarify for redirecting STDIN in get_exe_version() 2016-10-22 13:04:05 +08:00
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.
2016-10-22 00:34:08 -04:00
Sergey M․ 06b3fe2926
[utils] Expose PACKED_CODES_RE 2016-10-19 23:28:49 +07:00
Déstin Reed dcdb292fdd
Unify coding cookie 2016-10-03 23:44:29 +07:00
Yen Chi Hsuan bd26441205
[utils] Fix xattr error handling 2016-10-02 03:03:41 +08:00
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
2016-10-01 20:13:04 +08:00