Merge branch 'master' into video-metadata-#195
Browse files- .travis.yml +7 -7
- Makefile +6 -0
- Pipfile +3 -5
- Pipfile.lock +235 -112
- README.md +3 -3
- pytube/__init__.py +1 -1
- pytube/contrib/playlist.py +3 -6
- pytube/itags.py +11 -1
- setup.cfg +4 -3
- setup.py +1 -1
.travis.yml
CHANGED
@@ -8,16 +8,16 @@ python:
|
|
8 |
- "3.5"
|
9 |
- "3.6"
|
10 |
- "3.6-dev"
|
11 |
-
install:
|
12 |
-
|
13 |
-
-
|
14 |
-
before_script: flake8
|
15 |
before_install:
|
16 |
-
- sudo apt-get install -y python-pip
|
17 |
- sudo apt-get install -y libpython-dev
|
18 |
- sudo apt-get install -y libyaml-dev
|
19 |
-
- sudo apt-get install python-dev
|
20 |
-
|
|
|
|
|
21 |
sudo: required
|
22 |
after_success:
|
23 |
coveralls
|
|
|
8 |
- "3.5"
|
9 |
- "3.6"
|
10 |
- "3.6-dev"
|
11 |
+
install: "make"
|
12 |
+
script:
|
13 |
+
- make ci
|
|
|
14 |
before_install:
|
|
|
15 |
- sudo apt-get install -y libpython-dev
|
16 |
- sudo apt-get install -y libyaml-dev
|
17 |
+
- sudo apt-get install -y python-dev
|
18 |
+
- sudo apt-get install -y python-pip
|
19 |
+
- sudo apt-get install -y python-software-properties
|
20 |
+
- sudo apt-get install -y software-properties-common
|
21 |
sudo: required
|
22 |
after_success:
|
23 |
coveralls
|
Makefile
CHANGED
@@ -4,6 +4,12 @@ help:
|
|
4 |
@echo "clean-pyc - remove Python file artifacts"
|
5 |
@echo "install - install the package to the active Python's site-packages"
|
6 |
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
clean: clean-build clean-pyc
|
8 |
|
9 |
clean-build:
|
|
|
4 |
@echo "clean-pyc - remove Python file artifacts"
|
5 |
@echo "install - install the package to the active Python's site-packages"
|
6 |
|
7 |
+
ci:
|
8 |
+
pip install pipenv
|
9 |
+
pipenv install --dev
|
10 |
+
pipenv run flake8
|
11 |
+
pipenv run pytest --cov-report term-missing --cov=pytube
|
12 |
+
|
13 |
clean: clean-build clean-pyc
|
14 |
|
15 |
clean-build:
|
Pipfile
CHANGED
@@ -23,8 +23,6 @@ pytest-cov = "*"
|
|
23 |
pytest-mock = "*"
|
24 |
sphinx = "*"
|
25 |
sphinx-rtd-theme = "*"
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
python_version = "2.7"
|
|
|
23 |
pytest-mock = "*"
|
24 |
sphinx = "*"
|
25 |
sphinx-rtd-theme = "*"
|
26 |
+
configparser = "*"
|
27 |
+
"urllib3" = "*"
|
28 |
+
pyopenssl = "*"
|
|
|
|
Pipfile.lock
CHANGED
@@ -1,25 +1,10 @@
|
|
1 |
{
|
2 |
"_meta": {
|
3 |
"hash": {
|
4 |
-
"sha256": "
|
5 |
-
},
|
6 |
-
"host-environment-markers": {
|
7 |
-
"implementation_name": "cpython",
|
8 |
-
"implementation_version": "0",
|
9 |
-
"os_name": "posix",
|
10 |
-
"platform_machine": "x86_64",
|
11 |
-
"platform_python_implementation": "CPython",
|
12 |
-
"platform_release": "17.4.0",
|
13 |
-
"platform_system": "Darwin",
|
14 |
-
"platform_version": "Darwin Kernel Version 17.4.0: Sun Dec 17 09:19:54 PST 2017; root:xnu-4570.41.2~1/RELEASE_X86_64",
|
15 |
-
"python_full_version": "2.7.14",
|
16 |
-
"python_version": "2.7",
|
17 |
-
"sys_platform": "darwin"
|
18 |
},
|
19 |
"pipfile-spec": 6,
|
20 |
-
"requires": {
|
21 |
-
"python_version": "2.7"
|
22 |
-
},
|
23 |
"sources": [
|
24 |
{
|
25 |
"name": "pypi",
|
@@ -29,19 +14,27 @@
|
|
29 |
]
|
30 |
},
|
31 |
"default": {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
32 |
"enum34": {
|
33 |
"hashes": [
|
34 |
-
"sha256:
|
35 |
"sha256:644837f692e5f550741432dd3f223bbb9852018674981b1664e5dc339387588a",
|
36 |
-
"sha256:
|
37 |
-
"sha256:
|
38 |
],
|
|
|
39 |
"version": "==1.1.6"
|
40 |
},
|
41 |
"flake8": {
|
42 |
"hashes": [
|
43 |
-
"sha256:
|
44 |
-
"sha256:
|
45 |
],
|
46 |
"version": "==3.5.0"
|
47 |
},
|
@@ -54,8 +47,8 @@
|
|
54 |
},
|
55 |
"pycodestyle": {
|
56 |
"hashes": [
|
57 |
-
"sha256:
|
58 |
-
"sha256:
|
59 |
],
|
60 |
"version": "==2.3.1"
|
61 |
},
|
@@ -75,31 +68,38 @@
|
|
75 |
],
|
76 |
"version": "==0.7.10"
|
77 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
78 |
"aspy.yaml": {
|
79 |
"hashes": [
|
80 |
-
"sha256:
|
81 |
-
"sha256:
|
82 |
],
|
83 |
"version": "==1.0.0"
|
84 |
},
|
85 |
"attrs": {
|
86 |
"hashes": [
|
87 |
-
"sha256:
|
88 |
-
"sha256:
|
89 |
],
|
90 |
"version": "==17.4.0"
|
91 |
},
|
92 |
"babel": {
|
93 |
"hashes": [
|
94 |
-
"sha256:
|
95 |
-
"sha256:
|
96 |
],
|
97 |
"version": "==2.5.3"
|
98 |
},
|
99 |
"bumpversion": {
|
100 |
"hashes": [
|
101 |
-
"sha256:
|
102 |
-
"sha256:
|
103 |
],
|
104 |
"version": "==0.5.3"
|
105 |
},
|
@@ -117,60 +117,135 @@
|
|
117 |
],
|
118 |
"version": "==2018.1.18"
|
119 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
120 |
"chardet": {
|
121 |
"hashes": [
|
122 |
-
"sha256:
|
123 |
-
"sha256:
|
124 |
],
|
125 |
"version": "==3.0.4"
|
126 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
127 |
"coverage": {
|
128 |
"hashes": [
|
129 |
-
"sha256:
|
130 |
-
"sha256:3a2184c6d797a125dca8367878d3b9a178b6fdd05fdc2d35d758c3006a1cd694",
|
131 |
-
"sha256:f3f501f345f24383c0000395b26b726e46758b71393267aeae0bd36f8b3ade80",
|
132 |
"sha256:0b136648de27201056c1869a6c0d4e23f464750fd9a9ba9750b8336a244429ed",
|
|
|
|
|
|
|
|
|
|
|
|
|
133 |
"sha256:337ded681dd2ef9ca04ef5d93cfc87e52e09db2594c296b4a0a3662cb1b41249",
|
|
|
|
|
|
|
134 |
"sha256:3eb42bf89a6be7deb64116dd1cc4b08171734d721e7a7e57ad64cc4ef29ed2f1",
|
135 |
-
"sha256:
|
136 |
-
"sha256:
|
137 |
-
"sha256:2eb564bbf7816a9d68dd3369a510be3327f1c618d2357fa6b1216994c2e3d508",
|
138 |
-
"sha256:9d6dd10d49e01571bf6e147d3b505141ffc093a06756c60b053a859cb2128b1f",
|
139 |
-
"sha256:701cd6093d63e6b8ad7009d8a92425428bc4d6e7ab8d75efbb665c806c1d79ba",
|
140 |
"sha256:5a13ea7911ff5e1796b6d5e4fbbf6952381a611209b736d48e675c2756f3f74e",
|
141 |
-
"sha256:
|
142 |
-
"sha256:03481e81d558d30d230bc12999e3edffe392d244349a90f4ef9b88425fac74ba",
|
143 |
-
"sha256:28b2191e7283f4f3568962e373b47ef7f0392993bb6660d079c62bd50fe9d162",
|
144 |
-
"sha256:de4418dadaa1c01d497e539210cb6baa015965526ff5afc078c57ca69160108d",
|
145 |
-
"sha256:8c3cb8c35ec4d9506979b4cf90ee9918bc2e49f84189d9bf5c36c0c1119c6558",
|
146 |
-
"sha256:7e1fe19bd6dce69d9fd159d8e4a80a8f52101380d5d3a4d374b6d3eae0e5de9c",
|
147 |
"sha256:6bc583dc18d5979dc0f6cec26a8603129de0304d5ae1f17e57a12834e7235062",
|
148 |
-
"sha256:
|
149 |
-
"sha256:
|
150 |
-
"sha256:3d72c20bd105022d29b14a7d628462ebdc61de2f303322c0212a054352f3b287",
|
151 |
-
"sha256:4635a184d0bbe537aa185a34193898eee409332a8ccb27eea36f262566585000",
|
152 |
-
"sha256:e05cb4d9aad6233d67e0541caa7e511fa4047ed7750ec2510d466e806e0255d6",
|
153 |
"sha256:76ecd006d1d8f739430ec50cc872889af1f9c1b6b8f48e29941814b09b0fd3cc",
|
|
|
154 |
"sha256:7d3f553904b0c5c016d1dad058a7554c7ac4c91a789fca496e7d8347ad040653",
|
155 |
-
"sha256:
|
156 |
-
"sha256:
|
|
|
|
|
157 |
"sha256:ac4fef68da01116a5c117eba4dd46f2e06847a497de5ed1d64bb99a5fda1ef91",
|
158 |
-
"sha256:1c383d2ef13ade2acc636556fd544dba6e14fa30755f26812f54300e401f98f2",
|
159 |
"sha256:b8815995e050764c8610dbc82641807d196927c3dbed207f0a079833ffcf588d",
|
160 |
-
"sha256:
|
161 |
-
"sha256:
|
162 |
-
"sha256:
|
|
|
163 |
"sha256:e4d96c07229f58cb686120f168276e434660e4358cc9cf3b0464210b04913e77",
|
|
|
164 |
"sha256:f8a923a85cb099422ad5a2e345fe877bbc89a8a8b23235824a93488150e45f6e"
|
165 |
],
|
166 |
"version": "==4.5.1"
|
167 |
},
|
168 |
"coveralls": {
|
169 |
"hashes": [
|
170 |
-
"sha256:
|
171 |
-
"sha256:
|
172 |
-
],
|
173 |
-
"version": "==1.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
174 |
},
|
175 |
"docopt": {
|
176 |
"hashes": [
|
@@ -180,30 +255,48 @@
|
|
180 |
},
|
181 |
"docutils": {
|
182 |
"hashes": [
|
183 |
-
"sha256:7a4bd47eaf6596e1295ecb11361139febe29b084a87bf005bf899f9a42edc3c6",
|
184 |
"sha256:02aec4bd92ab067f6ff27a38a38a41173bf01bed8f89157768c1573f53e474a6",
|
185 |
-
"sha256:51e64ef2ebfb29cae1faa133b3710143496eca21c530f3f71424d77687764274"
|
|
|
186 |
],
|
187 |
"version": "==0.14"
|
188 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
189 |
"flake8": {
|
190 |
"hashes": [
|
191 |
-
"sha256:
|
192 |
-
"sha256:
|
193 |
],
|
194 |
"version": "==3.5.0"
|
195 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
196 |
"identify": {
|
197 |
"hashes": [
|
198 |
-
"sha256:
|
199 |
-
"sha256:
|
200 |
],
|
201 |
-
"version": "==1.0.
|
202 |
},
|
203 |
"idna": {
|
204 |
"hashes": [
|
205 |
-
"sha256:
|
206 |
-
"sha256:
|
207 |
],
|
208 |
"version": "==2.6"
|
209 |
},
|
@@ -214,6 +307,13 @@
|
|
214 |
],
|
215 |
"version": "==1.0.0"
|
216 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
217 |
"jinja2": {
|
218 |
"hashes": [
|
219 |
"sha256:74c935a1b8bb9a3947c50a54766a969d4846290e1e788ea44c1392163723c3bd",
|
@@ -239,6 +339,7 @@
|
|
239 |
"sha256:5ce3c71c5545b472da17b72268978914d0252980348636840bd34a00b5cc96c1",
|
240 |
"sha256:b158b6df76edd239b8208d481dc46b6afd45a846b7812ff0ce58971cf5bc8bba"
|
241 |
],
|
|
|
242 |
"version": "==2.0.0"
|
243 |
},
|
244 |
"nodeenv": {
|
@@ -256,8 +357,8 @@
|
|
256 |
},
|
257 |
"pbr": {
|
258 |
"hashes": [
|
259 |
-
"sha256:
|
260 |
-
"sha256:
|
261 |
],
|
262 |
"version": "==3.1.1"
|
263 |
},
|
@@ -269,10 +370,10 @@
|
|
269 |
},
|
270 |
"pre-commit": {
|
271 |
"hashes": [
|
272 |
-
"sha256:
|
273 |
-
"sha256:
|
274 |
],
|
275 |
-
"version": "==1.
|
276 |
},
|
277 |
"py": {
|
278 |
"hashes": [
|
@@ -283,11 +384,17 @@
|
|
283 |
},
|
284 |
"pycodestyle": {
|
285 |
"hashes": [
|
286 |
-
"sha256:
|
287 |
-
"sha256:
|
288 |
],
|
289 |
"version": "==2.3.1"
|
290 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
291 |
"pyflakes": {
|
292 |
"hashes": [
|
293 |
"sha256:08bd6a50edf8cffa9fa09a463063c425ecaaf10d1eb0335a7e8b1401aef89e6f",
|
@@ -302,29 +409,36 @@
|
|
302 |
],
|
303 |
"version": "==2.2.0"
|
304 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
305 |
"pyparsing": {
|
306 |
"hashes": [
|
307 |
-
"sha256:fee43f17a9c4087e7ed1605bd6df994c6173c1e977d7ade7b651292fab2bd010",
|
308 |
"sha256:0832bcf47acd283788593e7a0f542407bd9550a55a8a8435214a1960e04bcb04",
|
309 |
-
"sha256:9e8143a3e15c13713506886badd96ca4b579a87fbdf49e550dbfc057d6cb218e",
|
310 |
"sha256:281683241b25fe9b80ec9d66017485f6deff1af5cde372469134b56ca8447a07",
|
311 |
-
"sha256:b8b3117ed9bdf45e14dcc89345ce638ec7e0e29b2b579fa1ecf32ce45ebac8a5",
|
312 |
"sha256:8f1e18d3fd36c6795bb7e02a39fd05c611ffc2596c1e0d995d34d67630426c18",
|
313 |
-
"sha256:
|
|
|
|
|
|
|
314 |
],
|
315 |
"version": "==2.2.0"
|
316 |
},
|
317 |
"pytest": {
|
318 |
"hashes": [
|
319 |
-
"sha256:
|
320 |
-
"sha256:
|
321 |
],
|
322 |
-
"version": "==3.4.
|
323 |
},
|
324 |
"pytest-cov": {
|
325 |
"hashes": [
|
326 |
-
"sha256:
|
327 |
-
"sha256:
|
328 |
],
|
329 |
"version": "==2.5.1"
|
330 |
},
|
@@ -337,34 +451,34 @@
|
|
337 |
},
|
338 |
"pytz": {
|
339 |
"hashes": [
|
340 |
-
"sha256:ed6509d9af298b7995d69a440e2822288f2eca1681b8cce37673dbb10091e5fe",
|
341 |
-
"sha256:f93ddcdd6342f94cea379c73cddb5724e0d6d0a1c91c9bdef364dc0368ba4fda",
|
342 |
-
"sha256:61242a9abc626379574a166dc0e96a66cd7c3b27fc10868003fa210be4bff1c9",
|
343 |
-
"sha256:ba18e6a243b3625513d85239b3e49055a2f0318466e0b8a92b8fb8ca7ccdf55f",
|
344 |
"sha256:07edfc3d4d2705a20a6e99d97f0c4b61c800b8232dc1c04d87e8554f130148dd",
|
345 |
"sha256:3a47ff71597f821cd84a162e71593004286e5be07a340fd462f0d33a760782b5",
|
|
|
346 |
"sha256:5bd55c744e6feaa4d599a6cbd8228b4f8f9ba96de2c38d56f08e534b3c9edf0d",
|
|
|
347 |
"sha256:887ab5e5b32e4d0c86efddd3d055c1f363cbaa583beb8da5e22d2fa2f64d51ef",
|
348 |
-
"sha256:
|
|
|
|
|
349 |
],
|
350 |
"version": "==2018.3"
|
351 |
},
|
352 |
"pyyaml": {
|
353 |
"hashes": [
|
354 |
-
"sha256:
|
355 |
"sha256:16b20e970597e051997d90dc2cddc713a2876c47e3d92d59ee198700c5427736",
|
356 |
-
"sha256:
|
357 |
-
"sha256:
|
358 |
-
"sha256:
|
359 |
-
"sha256:827dc04b8fa7d07c44de11fabbc888e627fa8293b695e0f99cb544fdfa1bf0d1",
|
360 |
"sha256:592766c6303207a20efc445587778322d7f73b161bd994f227adaa341ba212ab",
|
|
|
361 |
"sha256:5f84523c076ad14ff5e6c037fe1c89a7f73a3e04cf0377cb4d017014976433f3",
|
362 |
-
"sha256:
|
363 |
"sha256:b4c423ab23291d3945ac61346feeb9a0dc4184999ede5e7c43e1ffb975130ae6",
|
|
|
|
|
364 |
"sha256:ca233c64c6e40eaa6c66ef97058cdc80e8d0157a443655baa1b2966e812807ca",
|
365 |
-
"sha256:
|
366 |
-
"sha256:326420cbb492172dec84b0f65c80942de6cedb5233c413dd824483989c000608",
|
367 |
-
"sha256:5ac82e411044fb129bae5cfbeb3ba626acb2af31a8d17d175004b70862a741a7"
|
368 |
],
|
369 |
"version": "==3.12"
|
370 |
},
|
@@ -377,15 +491,15 @@
|
|
377 |
},
|
378 |
"six": {
|
379 |
"hashes": [
|
380 |
-
"sha256:
|
381 |
-
"sha256:
|
382 |
],
|
383 |
"version": "==1.11.0"
|
384 |
},
|
385 |
"snowballstemmer": {
|
386 |
"hashes": [
|
387 |
-
"sha256:
|
388 |
-
"sha256:
|
389 |
],
|
390 |
"version": "==1.2.1"
|
391 |
},
|
@@ -398,18 +512,27 @@
|
|
398 |
},
|
399 |
"sphinx-rtd-theme": {
|
400 |
"hashes": [
|
401 |
-
"sha256:
|
402 |
-
"sha256:
|
403 |
],
|
404 |
"version": "==0.2.4"
|
405 |
},
|
406 |
"sphinxcontrib-websupport": {
|
407 |
"hashes": [
|
408 |
-
"sha256:
|
409 |
-
"sha256:
|
410 |
],
|
411 |
"version": "==1.0.1"
|
412 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
413 |
"urllib3": {
|
414 |
"hashes": [
|
415 |
"sha256:06330f386d6e4b195fbfc736b297f58c5a892e4440e54d294d7004e3a9bbea1b",
|
@@ -419,8 +542,8 @@
|
|
419 |
},
|
420 |
"virtualenv": {
|
421 |
"hashes": [
|
422 |
-
"sha256:
|
423 |
-
"sha256:
|
424 |
],
|
425 |
"version": "==15.1.0"
|
426 |
}
|
|
|
1 |
{
|
2 |
"_meta": {
|
3 |
"hash": {
|
4 |
+
"sha256": "e517b067af601141604f030b60fecfa67d34ff012465b87979a6baa106a56194"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
},
|
6 |
"pipfile-spec": 6,
|
7 |
+
"requires": {},
|
|
|
|
|
8 |
"sources": [
|
9 |
{
|
10 |
"name": "pypi",
|
|
|
14 |
]
|
15 |
},
|
16 |
"default": {
|
17 |
+
"configparser": {
|
18 |
+
"hashes": [
|
19 |
+
"sha256:5308b47021bc2340965c371f0f058cc6971a04502638d4244225c49d80db273a"
|
20 |
+
],
|
21 |
+
"markers": "python_version < '3.2'",
|
22 |
+
"version": "==3.5.0"
|
23 |
+
},
|
24 |
"enum34": {
|
25 |
"hashes": [
|
26 |
+
"sha256:2d81cbbe0e73112bdfe6ef8576f2238f2ba27dd0d55752a776c41d38b7da2850",
|
27 |
"sha256:644837f692e5f550741432dd3f223bbb9852018674981b1664e5dc339387588a",
|
28 |
+
"sha256:6bd0f6ad48ec2aa117d3d141940d484deccda84d4fcd884f5c3d93c23ecd8c79",
|
29 |
+
"sha256:8ad8c4783bf61ded74527bffb48ed9b54166685e4230386a9ed9b1279e2df5b1"
|
30 |
],
|
31 |
+
"markers": "python_version < '3.4'",
|
32 |
"version": "==1.1.6"
|
33 |
},
|
34 |
"flake8": {
|
35 |
"hashes": [
|
36 |
+
"sha256:7253265f7abd8b313e3892944044a365e3f4ac3fcdcfb4298f55ee9ddf188ba0",
|
37 |
+
"sha256:c7841163e2b576d435799169b78703ad6ac1bbb0f199994fc05f700b2a90ea37"
|
38 |
],
|
39 |
"version": "==3.5.0"
|
40 |
},
|
|
|
47 |
},
|
48 |
"pycodestyle": {
|
49 |
"hashes": [
|
50 |
+
"sha256:682256a5b318149ca0d2a9185d365d8864a768a28db66a84a2ea946bcc426766",
|
51 |
+
"sha256:6c4245ade1edfad79c3446fadfc96b0de2759662dc29d07d80a6f27ad1ca6ba9"
|
52 |
],
|
53 |
"version": "==2.3.1"
|
54 |
},
|
|
|
68 |
],
|
69 |
"version": "==0.7.10"
|
70 |
},
|
71 |
+
"asn1crypto": {
|
72 |
+
"hashes": [
|
73 |
+
"sha256:2f1adbb7546ed199e3c90ef23ec95c5cf3585bac7d11fb7eb562a3fe89c64e87",
|
74 |
+
"sha256:9d5c20441baf0cb60a4ac34cc447c6c189024b6b4c6cd7877034f4965c464e49"
|
75 |
+
],
|
76 |
+
"version": "==0.24.0"
|
77 |
+
},
|
78 |
"aspy.yaml": {
|
79 |
"hashes": [
|
80 |
+
"sha256:6215f44900ff65f27dbd00a36b06a7926276436ed377320cfd4febd69bbd4a94",
|
81 |
+
"sha256:be70cc0ccd1ee1d30f589f2403792eb2ffa7546470af0a17179541b13d8374df"
|
82 |
],
|
83 |
"version": "==1.0.0"
|
84 |
},
|
85 |
"attrs": {
|
86 |
"hashes": [
|
87 |
+
"sha256:1c7960ccfd6a005cd9f7ba884e6316b5e430a3f1a6c37c5f87d8b43f83b54ec9",
|
88 |
+
"sha256:a17a9573a6f475c99b551c0e0a812707ddda1ec9653bed04c13841404ed6f450"
|
89 |
],
|
90 |
"version": "==17.4.0"
|
91 |
},
|
92 |
"babel": {
|
93 |
"hashes": [
|
94 |
+
"sha256:8ce4cb6fdd4393edd323227cba3a077bceb2a6ce5201c902c65e730046f41f14",
|
95 |
+
"sha256:ad209a68d7162c4cff4b29cdebe3dec4cef75492df501b0049a9433c96ce6f80"
|
96 |
],
|
97 |
"version": "==2.5.3"
|
98 |
},
|
99 |
"bumpversion": {
|
100 |
"hashes": [
|
101 |
+
"sha256:6744c873dd7aafc24453d8b6a1a0d6d109faf63cd0cd19cb78fd46e74932c77e",
|
102 |
+
"sha256:6753d9ff3552013e2130f7bc03c1007e24473b4835952679653fb132367bdd57"
|
103 |
],
|
104 |
"version": "==0.5.3"
|
105 |
},
|
|
|
117 |
],
|
118 |
"version": "==2018.1.18"
|
119 |
},
|
120 |
+
"cffi": {
|
121 |
+
"hashes": [
|
122 |
+
"sha256:151b7eefd035c56b2b2e1eb9963c90c6302dc15fbd8c1c0a83a163ff2c7d7743",
|
123 |
+
"sha256:1553d1e99f035ace1c0544050622b7bc963374a00c467edafac50ad7bd276aef",
|
124 |
+
"sha256:1b0493c091a1898f1136e3f4f991a784437fac3673780ff9de3bcf46c80b6b50",
|
125 |
+
"sha256:2ba8a45822b7aee805ab49abfe7eec16b90587f7f26df20c71dd89e45a97076f",
|
126 |
+
"sha256:3c85641778460581c42924384f5e68076d724ceac0f267d66c757f7535069c93",
|
127 |
+
"sha256:3eb6434197633b7748cea30bf0ba9f66727cdce45117a712b29a443943733257",
|
128 |
+
"sha256:4c91af6e967c2015729d3e69c2e51d92f9898c330d6a851bf8f121236f3defd3",
|
129 |
+
"sha256:770f3782b31f50b68627e22f91cb182c48c47c02eb405fd689472aa7b7aa16dc",
|
130 |
+
"sha256:79f9b6f7c46ae1f8ded75f68cf8ad50e5729ed4d590c74840471fc2823457d04",
|
131 |
+
"sha256:7a33145e04d44ce95bcd71e522b478d282ad0eafaf34fe1ec5bbd73e662f22b6",
|
132 |
+
"sha256:857959354ae3a6fa3da6651b966d13b0a8bed6bbc87a0de7b38a549db1d2a359",
|
133 |
+
"sha256:87f37fe5130574ff76c17cab61e7d2538a16f843bb7bca8ebbc4b12de3078596",
|
134 |
+
"sha256:95d5251e4b5ca00061f9d9f3d6fe537247e145a8524ae9fd30a2f8fbce993b5b",
|
135 |
+
"sha256:9d1d3e63a4afdc29bd76ce6aa9d58c771cd1599fbba8cf5057e7860b203710dd",
|
136 |
+
"sha256:a36c5c154f9d42ec176e6e620cb0dd275744aa1d804786a71ac37dc3661a5e95",
|
137 |
+
"sha256:ae5e35a2c189d397b91034642cb0eab0e346f776ec2eb44a49a459e6615d6e2e",
|
138 |
+
"sha256:b0f7d4a3df8f06cf49f9f121bead236e328074de6449866515cea4907bbc63d6",
|
139 |
+
"sha256:b75110fb114fa366b29a027d0c9be3709579602ae111ff61674d28c93606acca",
|
140 |
+
"sha256:ba5e697569f84b13640c9e193170e89c13c6244c24400fc57e88724ef610cd31",
|
141 |
+
"sha256:be2a9b390f77fd7676d80bc3cdc4f8edb940d8c198ed2d8c0be1319018c778e1",
|
142 |
+
"sha256:d5d8555d9bfc3f02385c1c37e9f998e2011f0db4f90e250e5bc0c0a85a813085",
|
143 |
+
"sha256:e55e22ac0a30023426564b1059b035973ec82186ddddbac867078435801c7801",
|
144 |
+
"sha256:e90f17980e6ab0f3c2f3730e56d1fe9bcba1891eeea58966e89d352492cc74f4",
|
145 |
+
"sha256:ecbb7b01409e9b782df5ded849c178a0aa7c906cf8c5a67368047daab282b184",
|
146 |
+
"sha256:ed01918d545a38998bfa5902c7c00e0fee90e957ce036a4000a88e3fe2264917",
|
147 |
+
"sha256:edabd457cd23a02965166026fd9bfd196f4324fe6032e866d0f3bd0301cd486f",
|
148 |
+
"sha256:fdf1c1dc5bafc32bc5d08b054f94d659422b05aba244d6be4ddc1c72d9aa70fb"
|
149 |
+
],
|
150 |
+
"markers": "platform_python_implementation != 'PyPy'",
|
151 |
+
"version": "==1.11.5"
|
152 |
+
},
|
153 |
+
"cfgv": {
|
154 |
+
"hashes": [
|
155 |
+
"sha256:2fbaf8d082456d8fff5a68163ff59c1025a52e906914fbc738be7d8ea5b7aa4b",
|
156 |
+
"sha256:733aa2f66b5106af32d271336a571610b9808e868de0ad5690d9d5155e5960c5"
|
157 |
+
],
|
158 |
+
"version": "==1.0.0"
|
159 |
+
},
|
160 |
"chardet": {
|
161 |
"hashes": [
|
162 |
+
"sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae",
|
163 |
+
"sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691"
|
164 |
],
|
165 |
"version": "==3.0.4"
|
166 |
},
|
167 |
+
"configparser": {
|
168 |
+
"hashes": [
|
169 |
+
"sha256:5308b47021bc2340965c371f0f058cc6971a04502638d4244225c49d80db273a"
|
170 |
+
],
|
171 |
+
"markers": "python_version < '3.2'",
|
172 |
+
"version": "==3.5.0"
|
173 |
+
},
|
174 |
"coverage": {
|
175 |
"hashes": [
|
176 |
+
"sha256:03481e81d558d30d230bc12999e3edffe392d244349a90f4ef9b88425fac74ba",
|
|
|
|
|
177 |
"sha256:0b136648de27201056c1869a6c0d4e23f464750fd9a9ba9750b8336a244429ed",
|
178 |
+
"sha256:104ab3934abaf5be871a583541e8829d6c19ce7bde2923b2751e0d3ca44db60a",
|
179 |
+
"sha256:15b111b6a0f46ee1a485414a52a7ad1d703bdf984e9ed3c288a4414d3871dcbd",
|
180 |
+
"sha256:198626739a79b09fa0a2f06e083ffd12eb55449b5f8bfdbeed1df4910b2ca640",
|
181 |
+
"sha256:1c383d2ef13ade2acc636556fd544dba6e14fa30755f26812f54300e401f98f2",
|
182 |
+
"sha256:28b2191e7283f4f3568962e373b47ef7f0392993bb6660d079c62bd50fe9d162",
|
183 |
+
"sha256:2eb564bbf7816a9d68dd3369a510be3327f1c618d2357fa6b1216994c2e3d508",
|
184 |
"sha256:337ded681dd2ef9ca04ef5d93cfc87e52e09db2594c296b4a0a3662cb1b41249",
|
185 |
+
"sha256:3a2184c6d797a125dca8367878d3b9a178b6fdd05fdc2d35d758c3006a1cd694",
|
186 |
+
"sha256:3c79a6f7b95751cdebcd9037e4d06f8d5a9b60e4ed0cd231342aa8ad7124882a",
|
187 |
+
"sha256:3d72c20bd105022d29b14a7d628462ebdc61de2f303322c0212a054352f3b287",
|
188 |
"sha256:3eb42bf89a6be7deb64116dd1cc4b08171734d721e7a7e57ad64cc4ef29ed2f1",
|
189 |
+
"sha256:4635a184d0bbe537aa185a34193898eee409332a8ccb27eea36f262566585000",
|
190 |
+
"sha256:56e448f051a201c5ebbaa86a5efd0ca90d327204d8b059ab25ad0f35fbfd79f1",
|
|
|
|
|
|
|
191 |
"sha256:5a13ea7911ff5e1796b6d5e4fbbf6952381a611209b736d48e675c2756f3f74e",
|
192 |
+
"sha256:69bf008a06b76619d3c3f3b1983f5145c75a305a0fea513aca094cae5c40a8f5",
|
|
|
|
|
|
|
|
|
|
|
193 |
"sha256:6bc583dc18d5979dc0f6cec26a8603129de0304d5ae1f17e57a12834e7235062",
|
194 |
+
"sha256:701cd6093d63e6b8ad7009d8a92425428bc4d6e7ab8d75efbb665c806c1d79ba",
|
195 |
+
"sha256:7608a3dd5d73cb06c531b8925e0ef8d3de31fed2544a7de6c63960a1e73ea4bc",
|
|
|
|
|
|
|
196 |
"sha256:76ecd006d1d8f739430ec50cc872889af1f9c1b6b8f48e29941814b09b0fd3cc",
|
197 |
+
"sha256:7aa36d2b844a3e4a4b356708d79fd2c260281a7390d678a10b91ca595ddc9e99",
|
198 |
"sha256:7d3f553904b0c5c016d1dad058a7554c7ac4c91a789fca496e7d8347ad040653",
|
199 |
+
"sha256:7e1fe19bd6dce69d9fd159d8e4a80a8f52101380d5d3a4d374b6d3eae0e5de9c",
|
200 |
+
"sha256:8c3cb8c35ec4d9506979b4cf90ee9918bc2e49f84189d9bf5c36c0c1119c6558",
|
201 |
+
"sha256:9d6dd10d49e01571bf6e147d3b505141ffc093a06756c60b053a859cb2128b1f",
|
202 |
+
"sha256:9e112fcbe0148a6fa4f0a02e8d58e94470fc6cb82a5481618fea901699bf34c4",
|
203 |
"sha256:ac4fef68da01116a5c117eba4dd46f2e06847a497de5ed1d64bb99a5fda1ef91",
|
|
|
204 |
"sha256:b8815995e050764c8610dbc82641807d196927c3dbed207f0a079833ffcf588d",
|
205 |
+
"sha256:be6cfcd8053d13f5f5eeb284aa8a814220c3da1b0078fa859011c7fffd86dab9",
|
206 |
+
"sha256:c1bb572fab8208c400adaf06a8133ac0712179a334c09224fb11393e920abcdd",
|
207 |
+
"sha256:de4418dadaa1c01d497e539210cb6baa015965526ff5afc078c57ca69160108d",
|
208 |
+
"sha256:e05cb4d9aad6233d67e0541caa7e511fa4047ed7750ec2510d466e806e0255d6",
|
209 |
"sha256:e4d96c07229f58cb686120f168276e434660e4358cc9cf3b0464210b04913e77",
|
210 |
+
"sha256:f3f501f345f24383c0000395b26b726e46758b71393267aeae0bd36f8b3ade80",
|
211 |
"sha256:f8a923a85cb099422ad5a2e345fe877bbc89a8a8b23235824a93488150e45f6e"
|
212 |
],
|
213 |
"version": "==4.5.1"
|
214 |
},
|
215 |
"coveralls": {
|
216 |
"hashes": [
|
217 |
+
"sha256:32569a43c9dbc13fa8199247580a4ab182ef439f51f65bb7f8316d377a1340e8",
|
218 |
+
"sha256:664794748d2e5673e347ec476159a9d87f43e0d2d44950e98ed0e27b98da8346"
|
219 |
+
],
|
220 |
+
"version": "==1.3.0"
|
221 |
+
},
|
222 |
+
"cryptography": {
|
223 |
+
"hashes": [
|
224 |
+
"sha256:0d39a93cf25edeae1f796bbc5960e587f34513a852564f6345ea4491a86c5997",
|
225 |
+
"sha256:18d0b0fc21f39b35ea469a82584f55eeecec1f65a92d85af712c425bdef627b3",
|
226 |
+
"sha256:27a208b9600166976182351174948e128818e7fc95cbdba18143f3106a211546",
|
227 |
+
"sha256:28e4e9a97713aa47b5ef9c5003def2eb58aec89781ef3ef82b1c2916a8b0639b",
|
228 |
+
"sha256:2cfcee8829c5dec55597826d52c26bc26e7ce39adb4771584459d0636b0b7108",
|
229 |
+
"sha256:33b564196dcd563e309a0b07444e31611368afe3a3822160c046f5e4c3b5cdd7",
|
230 |
+
"sha256:41f94194ae78f83fd94ca94fb8ad65f92210a76a2421169ffa5c33c3ec7605f4",
|
231 |
+
"sha256:4f385ee7d39ee1ed74f1d6b1da03d0734ea82855a7b28a9e6e88c4091bc58664",
|
232 |
+
"sha256:55555d784cfdf9033e81f044c0df04babed2aa141213765d960d233b0139e353",
|
233 |
+
"sha256:69285f5615507b6625f89ea1048addd1d9218585fb886eb90bdebb1d2b2d26f5",
|
234 |
+
"sha256:6cb1224da391fa90f1be524eafb375b62baf8d3df9690b32e8cc475ccfccee5e",
|
235 |
+
"sha256:6fb22f63e17813f3d1d8e30dd1e249e2c34233ba1d3de977fd31cb5db764c7d0",
|
236 |
+
"sha256:7a2409f1564c84bcf2563d379c9b6148c5bc6b0ae46e109f6a7b4bebadf551df",
|
237 |
+
"sha256:8487524a1212223ca6dc7e2c8913024618f7ff29855c98869088e3818d5f6733",
|
238 |
+
"sha256:9a2945efcff84830c8e237ab037d0269380d75d400a89cc9e5628e52647e21be",
|
239 |
+
"sha256:9a47a80f65f4feaaf8415a40c339806c7d7d867152ddccc6ca87f707c8b7b565",
|
240 |
+
"sha256:a3c180d12ffb1d8ee5b33a514a5bcb2a9cc06cc89aa74038015591170c82f55d",
|
241 |
+
"sha256:a5f2c681fd040ed648513939a1dd2242af19bd5e9e79e53b6dcfa33bdae61217",
|
242 |
+
"sha256:b984523d28737e373c7c35c8b6db6001537609d47534892de189bebebaa42a47",
|
243 |
+
"sha256:d18df9cf3f3212df28d445ea82ce702c4d7a35817ef7a38ee38879ffa8f7e857",
|
244 |
+
"sha256:e4d967371c5b6b2e67855066471d844c5d52d210c36c28d49a8507b96e2c5291",
|
245 |
+
"sha256:ee245f185fae723133511e2450be08a66c2eebb53ad27c0c19b228029f4748a5",
|
246 |
+
"sha256:fc2208d95d9ecc8032f5e38330d5ace2e3b0b998e42b08c30c35b2ab3a4a3bc8"
|
247 |
+
],
|
248 |
+
"version": "==2.1.4"
|
249 |
},
|
250 |
"docopt": {
|
251 |
"hashes": [
|
|
|
255 |
},
|
256 |
"docutils": {
|
257 |
"hashes": [
|
|
|
258 |
"sha256:02aec4bd92ab067f6ff27a38a38a41173bf01bed8f89157768c1573f53e474a6",
|
259 |
+
"sha256:51e64ef2ebfb29cae1faa133b3710143496eca21c530f3f71424d77687764274",
|
260 |
+
"sha256:7a4bd47eaf6596e1295ecb11361139febe29b084a87bf005bf899f9a42edc3c6"
|
261 |
],
|
262 |
"version": "==0.14"
|
263 |
},
|
264 |
+
"enum34": {
|
265 |
+
"hashes": [
|
266 |
+
"sha256:2d81cbbe0e73112bdfe6ef8576f2238f2ba27dd0d55752a776c41d38b7da2850",
|
267 |
+
"sha256:644837f692e5f550741432dd3f223bbb9852018674981b1664e5dc339387588a",
|
268 |
+
"sha256:6bd0f6ad48ec2aa117d3d141940d484deccda84d4fcd884f5c3d93c23ecd8c79",
|
269 |
+
"sha256:8ad8c4783bf61ded74527bffb48ed9b54166685e4230386a9ed9b1279e2df5b1"
|
270 |
+
],
|
271 |
+
"markers": "python_version < '3.4'",
|
272 |
+
"version": "==1.1.6"
|
273 |
+
},
|
274 |
"flake8": {
|
275 |
"hashes": [
|
276 |
+
"sha256:7253265f7abd8b313e3892944044a365e3f4ac3fcdcfb4298f55ee9ddf188ba0",
|
277 |
+
"sha256:c7841163e2b576d435799169b78703ad6ac1bbb0f199994fc05f700b2a90ea37"
|
278 |
],
|
279 |
"version": "==3.5.0"
|
280 |
},
|
281 |
+
"funcsigs": {
|
282 |
+
"hashes": [
|
283 |
+
"sha256:330cc27ccbf7f1e992e69fef78261dc7c6569012cf397db8d3de0234e6c937ca",
|
284 |
+
"sha256:a7bb0f2cf3a3fd1ab2732cb49eba4252c2af4240442415b4abce3b87022a8f50"
|
285 |
+
],
|
286 |
+
"markers": "python_version < '3.3'",
|
287 |
+
"version": "==1.0.2"
|
288 |
+
},
|
289 |
"identify": {
|
290 |
"hashes": [
|
291 |
+
"sha256:53be6ea950a5f40e13be2dd87e67413eb6879527b831333196ab2a54de38f499",
|
292 |
+
"sha256:c0bfb29634e04cde8e54aee2d55aff9dad30d6ea1f3e9e3ce731934d78635aa1"
|
293 |
],
|
294 |
+
"version": "==1.0.8"
|
295 |
},
|
296 |
"idna": {
|
297 |
"hashes": [
|
298 |
+
"sha256:2c6a5de3089009e3da7c5dde64a141dbc8551d5b7f6cf4ed7c2568d0cc520a8f",
|
299 |
+
"sha256:8c7309c718f94b3a625cb648ace320157ad16ff131ae0af362c9f21b80ef6ec4"
|
300 |
],
|
301 |
"version": "==2.6"
|
302 |
},
|
|
|
307 |
],
|
308 |
"version": "==1.0.0"
|
309 |
},
|
310 |
+
"ipaddress": {
|
311 |
+
"hashes": [
|
312 |
+
"sha256:200d8686011d470b5e4de207d803445deee427455cd0cb7c982b68cf82524f81"
|
313 |
+
],
|
314 |
+
"markers": "python_version < '3'",
|
315 |
+
"version": "==1.0.19"
|
316 |
+
},
|
317 |
"jinja2": {
|
318 |
"hashes": [
|
319 |
"sha256:74c935a1b8bb9a3947c50a54766a969d4846290e1e788ea44c1392163723c3bd",
|
|
|
339 |
"sha256:5ce3c71c5545b472da17b72268978914d0252980348636840bd34a00b5cc96c1",
|
340 |
"sha256:b158b6df76edd239b8208d481dc46b6afd45a846b7812ff0ce58971cf5bc8bba"
|
341 |
],
|
342 |
+
"markers": "python_version < '3.0'",
|
343 |
"version": "==2.0.0"
|
344 |
},
|
345 |
"nodeenv": {
|
|
|
357 |
},
|
358 |
"pbr": {
|
359 |
"hashes": [
|
360 |
+
"sha256:05f61c71aaefc02d8e37c0a3eeb9815ff526ea28b3b76324769e6158d7f95be1",
|
361 |
+
"sha256:60c25b7dfd054ef9bb0ae327af949dd4676aa09ac3a9471cdc871d8a9213f9ac"
|
362 |
],
|
363 |
"version": "==3.1.1"
|
364 |
},
|
|
|
370 |
},
|
371 |
"pre-commit": {
|
372 |
"hashes": [
|
373 |
+
"sha256:1b96ef893c003fcf81ac7c39cc790b01438dea05d9298e73bb61b9bf572282c3",
|
374 |
+
"sha256:89ab725f311e6785f2f391ecfb6730b12b991d9488ae08d9d382104364527110"
|
375 |
],
|
376 |
+
"version": "==1.8.1"
|
377 |
},
|
378 |
"py": {
|
379 |
"hashes": [
|
|
|
384 |
},
|
385 |
"pycodestyle": {
|
386 |
"hashes": [
|
387 |
+
"sha256:682256a5b318149ca0d2a9185d365d8864a768a28db66a84a2ea946bcc426766",
|
388 |
+
"sha256:6c4245ade1edfad79c3446fadfc96b0de2759662dc29d07d80a6f27ad1ca6ba9"
|
389 |
],
|
390 |
"version": "==2.3.1"
|
391 |
},
|
392 |
+
"pycparser": {
|
393 |
+
"hashes": [
|
394 |
+
"sha256:99a8ca03e29851d96616ad0404b4aad7d9ee16f25c9f9708a11faf2810f7b226"
|
395 |
+
],
|
396 |
+
"version": "==2.18"
|
397 |
+
},
|
398 |
"pyflakes": {
|
399 |
"hashes": [
|
400 |
"sha256:08bd6a50edf8cffa9fa09a463063c425ecaaf10d1eb0335a7e8b1401aef89e6f",
|
|
|
409 |
],
|
410 |
"version": "==2.2.0"
|
411 |
},
|
412 |
+
"pyopenssl": {
|
413 |
+
"hashes": [
|
414 |
+
"sha256:07a2de1a54de07448732a81e38a55df7da109b2f47f599f8bb35b0cbec69d4bd",
|
415 |
+
"sha256:2c10cfba46a52c0b0950118981d61e72c1e5b1aac451ca1bc77de1a679456773"
|
416 |
+
],
|
417 |
+
"version": "==17.5.0"
|
418 |
+
},
|
419 |
"pyparsing": {
|
420 |
"hashes": [
|
|
|
421 |
"sha256:0832bcf47acd283788593e7a0f542407bd9550a55a8a8435214a1960e04bcb04",
|
|
|
422 |
"sha256:281683241b25fe9b80ec9d66017485f6deff1af5cde372469134b56ca8447a07",
|
|
|
423 |
"sha256:8f1e18d3fd36c6795bb7e02a39fd05c611ffc2596c1e0d995d34d67630426c18",
|
424 |
+
"sha256:9e8143a3e15c13713506886badd96ca4b579a87fbdf49e550dbfc057d6cb218e",
|
425 |
+
"sha256:b8b3117ed9bdf45e14dcc89345ce638ec7e0e29b2b579fa1ecf32ce45ebac8a5",
|
426 |
+
"sha256:e4d45427c6e20a59bf4f88c639dcc03ce30d193112047f94012102f235853a58",
|
427 |
+
"sha256:fee43f17a9c4087e7ed1605bd6df994c6173c1e977d7ade7b651292fab2bd010"
|
428 |
],
|
429 |
"version": "==2.2.0"
|
430 |
},
|
431 |
"pytest": {
|
432 |
"hashes": [
|
433 |
+
"sha256:062027955bccbc04d2fcd5d79690947e018ba31abe4c90b2c6721abec734261b",
|
434 |
+
"sha256:117bad36c1a787e1a8a659df35de53ba05f9f3398fb9e4ac17e80ad5903eb8c5"
|
435 |
],
|
436 |
+
"version": "==3.4.2"
|
437 |
},
|
438 |
"pytest-cov": {
|
439 |
"hashes": [
|
440 |
+
"sha256:03aa752cf11db41d281ea1d807d954c4eda35cfa1b21d6971966cc041bbf6e2d",
|
441 |
+
"sha256:890fe5565400902b0c78b5357004aab1c814115894f4f21370e2433256a3eeec"
|
442 |
],
|
443 |
"version": "==2.5.1"
|
444 |
},
|
|
|
451 |
},
|
452 |
"pytz": {
|
453 |
"hashes": [
|
|
|
|
|
|
|
|
|
454 |
"sha256:07edfc3d4d2705a20a6e99d97f0c4b61c800b8232dc1c04d87e8554f130148dd",
|
455 |
"sha256:3a47ff71597f821cd84a162e71593004286e5be07a340fd462f0d33a760782b5",
|
456 |
+
"sha256:410bcd1d6409026fbaa65d9ed33bf6dd8b1e94a499e32168acfc7b332e4095c0",
|
457 |
"sha256:5bd55c744e6feaa4d599a6cbd8228b4f8f9ba96de2c38d56f08e534b3c9edf0d",
|
458 |
+
"sha256:61242a9abc626379574a166dc0e96a66cd7c3b27fc10868003fa210be4bff1c9",
|
459 |
"sha256:887ab5e5b32e4d0c86efddd3d055c1f363cbaa583beb8da5e22d2fa2f64d51ef",
|
460 |
+
"sha256:ba18e6a243b3625513d85239b3e49055a2f0318466e0b8a92b8fb8ca7ccdf55f",
|
461 |
+
"sha256:ed6509d9af298b7995d69a440e2822288f2eca1681b8cce37673dbb10091e5fe",
|
462 |
+
"sha256:f93ddcdd6342f94cea379c73cddb5724e0d6d0a1c91c9bdef364dc0368ba4fda"
|
463 |
],
|
464 |
"version": "==2018.3"
|
465 |
},
|
466 |
"pyyaml": {
|
467 |
"hashes": [
|
468 |
+
"sha256:0c507b7f74b3d2dd4d1322ec8a94794927305ab4cebbe89cc47fe5e81541e6e8",
|
469 |
"sha256:16b20e970597e051997d90dc2cddc713a2876c47e3d92d59ee198700c5427736",
|
470 |
+
"sha256:3262c96a1ca437e7e4763e2843746588a965426550f3797a79fca9c6199c431f",
|
471 |
+
"sha256:326420cbb492172dec84b0f65c80942de6cedb5233c413dd824483989c000608",
|
472 |
+
"sha256:4474f8ea030b5127225b8894d626bb66c01cda098d47a2b0d3429b6700af9fd8",
|
|
|
473 |
"sha256:592766c6303207a20efc445587778322d7f73b161bd994f227adaa341ba212ab",
|
474 |
+
"sha256:5ac82e411044fb129bae5cfbeb3ba626acb2af31a8d17d175004b70862a741a7",
|
475 |
"sha256:5f84523c076ad14ff5e6c037fe1c89a7f73a3e04cf0377cb4d017014976433f3",
|
476 |
+
"sha256:827dc04b8fa7d07c44de11fabbc888e627fa8293b695e0f99cb544fdfa1bf0d1",
|
477 |
"sha256:b4c423ab23291d3945ac61346feeb9a0dc4184999ede5e7c43e1ffb975130ae6",
|
478 |
+
"sha256:bc6bced57f826ca7cb5125a10b23fd0f2fff3b7c4701d64c439a300ce665fff8",
|
479 |
+
"sha256:c01b880ec30b5a6e6aa67b09a2fe3fb30473008c85cd6a67359a1b15ed6d83a4",
|
480 |
"sha256:ca233c64c6e40eaa6c66ef97058cdc80e8d0157a443655baa1b2966e812807ca",
|
481 |
+
"sha256:e863072cdf4c72eebf179342c94e6989c67185842d9997960b3e69290b2fa269"
|
|
|
|
|
482 |
],
|
483 |
"version": "==3.12"
|
484 |
},
|
|
|
491 |
},
|
492 |
"six": {
|
493 |
"hashes": [
|
494 |
+
"sha256:70e8a77beed4562e7f14fe23a786b54f6296e34344c23bc42f07b15018ff98e9",
|
495 |
+
"sha256:832dc0e10feb1aa2c68dcc57dbb658f1c7e65b9b61af69048abc87a2db00a0eb"
|
496 |
],
|
497 |
"version": "==1.11.0"
|
498 |
},
|
499 |
"snowballstemmer": {
|
500 |
"hashes": [
|
501 |
+
"sha256:919f26a68b2c17a7634da993d91339e288964f93c274f1343e3bbbe2096e1128",
|
502 |
+
"sha256:9f3bcd3c401c3e862ec0ebe6d2c069ebc012ce142cce209c098ccb5b09136e89"
|
503 |
],
|
504 |
"version": "==1.2.1"
|
505 |
},
|
|
|
512 |
},
|
513 |
"sphinx-rtd-theme": {
|
514 |
"hashes": [
|
515 |
+
"sha256:2df74b8ff6fae6965c527e97cca6c6c944886aae474b490e17f92adfbe843417",
|
516 |
+
"sha256:62ee4752716e698bad7de8a18906f42d33664128eea06c46b718fc7fbd1a9f5c"
|
517 |
],
|
518 |
"version": "==0.2.4"
|
519 |
},
|
520 |
"sphinxcontrib-websupport": {
|
521 |
"hashes": [
|
522 |
+
"sha256:7a85961326aa3a400cd4ad3c816d70ed6f7c740acd7ce5d78cd0a67825072eb9",
|
523 |
+
"sha256:f4932e95869599b89bf4f80fc3989132d83c9faa5bf633e7b5e0c25dffb75da2"
|
524 |
],
|
525 |
"version": "==1.0.1"
|
526 |
},
|
527 |
+
"typing": {
|
528 |
+
"hashes": [
|
529 |
+
"sha256:3a887b021a77b292e151afb75323dea88a7bc1b3dfa92176cff8e44c8b68bddf",
|
530 |
+
"sha256:b2c689d54e1144bbcfd191b0832980a21c2dbcf7b5ff7a66248a60c90e951eb8",
|
531 |
+
"sha256:d400a9344254803a2368533e4533a4200d21eb7b6b729c173bc38201a74db3f2"
|
532 |
+
],
|
533 |
+
"markers": "python_version < '3.5'",
|
534 |
+
"version": "==3.6.4"
|
535 |
+
},
|
536 |
"urllib3": {
|
537 |
"hashes": [
|
538 |
"sha256:06330f386d6e4b195fbfc736b297f58c5a892e4440e54d294d7004e3a9bbea1b",
|
|
|
542 |
},
|
543 |
"virtualenv": {
|
544 |
"hashes": [
|
545 |
+
"sha256:02f8102c2436bb03b3ee6dede1919d1dac8a427541652e5ec95171ec8adbc93a",
|
546 |
+
"sha256:39d88b533b422825d644087a21e78c45cf5af0ef7a99a1fc9fbb7b481e5c85b0"
|
547 |
],
|
548 |
"version": "==15.1.0"
|
549 |
}
|
README.md
CHANGED
@@ -140,10 +140,10 @@ You can also download a complete Youtube playlist:
|
|
140 |
>>> from pytube import Playlist
|
141 |
>>> pl = Playlist("https://www.youtube.com/watch?v=Edpy1szoG80&list=PL153hDY-y1E00uQtCVCVC8xJ25TYX8yPU")
|
142 |
>>> pl.download_all()
|
143 |
-
>>> #
|
144 |
-
>>> pl.download_all(
|
145 |
```
|
146 |
-
This will download the highest progressive stream available (generally 720p) from the given playlist. Later more
|
147 |
to choose video resolution.
|
148 |
|
149 |
Pytube allows you to filter on every property available (see the documentation for the complete list), let's take a look at some of the most useful ones.
|
|
|
140 |
>>> from pytube import Playlist
|
141 |
>>> pl = Playlist("https://www.youtube.com/watch?v=Edpy1szoG80&list=PL153hDY-y1E00uQtCVCVC8xJ25TYX8yPU")
|
142 |
>>> pl.download_all()
|
143 |
+
>>> # or if you want to download in a specific directory
|
144 |
+
>>> pl.download_all('/path/to/directory/')
|
145 |
```
|
146 |
+
This will download the highest progressive stream available (generally 720p) from the given playlist. Later more options would be given for user's flexibility
|
147 |
to choose video resolution.
|
148 |
|
149 |
Pytube allows you to filter on every property available (see the documentation for the complete list), let's take a look at some of the most useful ones.
|
pytube/__init__.py
CHANGED
@@ -9,7 +9,7 @@ follows best practice patterns.
|
|
9 |
|
10 |
"""
|
11 |
__title__ = 'pytube'
|
12 |
-
__version__ = '9.
|
13 |
__author__ = 'Nick Ficano'
|
14 |
__license__ = 'MIT License'
|
15 |
__copyright__ = 'Copyright 2017 Nick Ficano'
|
|
|
9 |
|
10 |
"""
|
11 |
__title__ = 'pytube'
|
12 |
+
__version__ = '9.1.1'
|
13 |
__author__ = 'Nick Ficano'
|
14 |
__license__ = 'MIT License'
|
15 |
__copyright__ = 'Copyright 2017 Nick Ficano'
|
pytube/contrib/playlist.py
CHANGED
@@ -81,14 +81,11 @@ class Playlist(object):
|
|
81 |
for link in self.video_urls:
|
82 |
yt = YouTube(link)
|
83 |
|
|
|
84 |
dl_stream = yt.streams.filter(
|
85 |
progressive=True, subtype='mp4',
|
86 |
).order_by('resolution').desc().first()
|
87 |
|
88 |
-
|
89 |
-
|
90 |
-
dl_stream.download(download_path)
|
91 |
-
else:
|
92 |
-
dl_stream.download()
|
93 |
-
|
94 |
logger.debug('download complete')
|
|
|
81 |
for link in self.video_urls:
|
82 |
yt = YouTube(link)
|
83 |
|
84 |
+
# TODO: this should not be hardcoded to a single user's preference
|
85 |
dl_stream = yt.streams.filter(
|
86 |
progressive=True, subtype='mp4',
|
87 |
).order_by('resolution').desc().first()
|
88 |
|
89 |
+
logger.debug('download path: %s', download_path)
|
90 |
+
dl_stream.download(download_path)
|
|
|
|
|
|
|
|
|
91 |
logger.debug('download complete')
|
pytube/itags.py
CHANGED
@@ -69,6 +69,14 @@ ITAGS = {
|
|
69 |
308: ('1440p', None),
|
70 |
313: ('2160p', None),
|
71 |
315: ('2160p', None),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
72 |
|
73 |
# DASH Audio
|
74 |
139: (None, '48kbps'),
|
@@ -85,7 +93,8 @@ ITAGS = {
|
|
85 |
328: (None, None),
|
86 |
}
|
87 |
|
88 |
-
|
|
|
89 |
_3D = [82, 83, 84, 85, 100, 101, 102]
|
90 |
LIVE = [91, 92, 93, 94, 95, 96, 132, 151]
|
91 |
|
@@ -106,5 +115,6 @@ def get_format_profile(itag):
|
|
106 |
'abr': bitrate,
|
107 |
'is_live': itag in LIVE,
|
108 |
'is_3d': itag in _3D,
|
|
|
109 |
'fps': 60 if itag in _60FPS else 30,
|
110 |
}
|
|
|
69 |
308: ('1440p', None),
|
70 |
313: ('2160p', None),
|
71 |
315: ('2160p', None),
|
72 |
+
330: ('144p', None),
|
73 |
+
331: ('240p', None),
|
74 |
+
332: ('360p', None),
|
75 |
+
333: ('480p', None),
|
76 |
+
334: ('720p', None),
|
77 |
+
335: ('1080p', None),
|
78 |
+
336: ('1440p', None),
|
79 |
+
337: ('2160p', None),
|
80 |
|
81 |
# DASH Audio
|
82 |
139: (None, '48kbps'),
|
|
|
93 |
328: (None, None),
|
94 |
}
|
95 |
|
96 |
+
HDR = [330, 331, 332, 333, 334, 335, 336, 337]
|
97 |
+
_60FPS = [298, 299, 302, 303, 308, 315] + HDR
|
98 |
_3D = [82, 83, 84, 85, 100, 101, 102]
|
99 |
LIVE = [91, 92, 93, 94, 95, 96, 132, 151]
|
100 |
|
|
|
115 |
'abr': bitrate,
|
116 |
'is_live': itag in LIVE,
|
117 |
'is_3d': itag in _3D,
|
118 |
+
'is_hdr': itag in HDR,
|
119 |
'fps': 60 if itag in _60FPS else 30,
|
120 |
}
|
setup.cfg
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
[bumpversion]
|
2 |
commit = True
|
3 |
tag = True
|
4 |
-
current_version = 9.
|
5 |
parse = (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)(\-(?P<release>[a-z]+))?
|
6 |
-
serialize =
|
7 |
{major}.{minor}.{patch}
|
8 |
|
9 |
[metadata]
|
@@ -15,5 +15,6 @@ description-file = README.md
|
|
15 |
|
16 |
[coverage:run]
|
17 |
source = pytube
|
18 |
-
omit =
|
19 |
pytube/compat.py
|
|
|
|
1 |
[bumpversion]
|
2 |
commit = True
|
3 |
tag = True
|
4 |
+
current_version = 9.1.1
|
5 |
parse = (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)(\-(?P<release>[a-z]+))?
|
6 |
+
serialize =
|
7 |
{major}.{minor}.{patch}
|
8 |
|
9 |
[metadata]
|
|
|
15 |
|
16 |
[coverage:run]
|
17 |
source = pytube
|
18 |
+
omit =
|
19 |
pytube/compat.py
|
20 |
+
|
setup.py
CHANGED
@@ -14,7 +14,7 @@ with open('LICENSE') as readme_file:
|
|
14 |
|
15 |
setup(
|
16 |
name='pytube',
|
17 |
-
version='9.
|
18 |
author='Nick Ficano',
|
19 |
author_email='nficano@gmail.com',
|
20 |
packages=['pytube', 'pytube.contrib'],
|
|
|
14 |
|
15 |
setup(
|
16 |
name='pytube',
|
17 |
+
version='9.1.1',
|
18 |
author='Nick Ficano',
|
19 |
author_email='nficano@gmail.com',
|
20 |
packages=['pytube', 'pytube.contrib'],
|