File size: 3,673 Bytes
97f04a9 24c3a19 97f04a9 328e22b 97f04a9 a2b56cd 328e22b 97f04a9 328e22b 97f04a9 328e22b 97f04a9 328e22b 97f04a9 a2b56cd 97f04a9 328e22b 97f04a9 328e22b 97f04a9 328e22b 97f04a9 24c3a19 328e22b 24c3a19 328e22b 24c3a19 a2b56cd 24c3a19 328e22b 24c3a19 328e22b 24c3a19 328e22b 24c3a19 a2b56cd 24c3a19 328e22b 24c3a19 328e22b 24c3a19 328e22b 24c3a19 328e22b 24c3a19 328e22b 24c3a19 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 |
# -*- coding: utf-8 -*-
import random
import mock
from pytube import request
from pytube import Stream
def test_filesize(cipher_signature, mocker):
mocker.patch.object(request, 'get')
request.get.return_value = {'content-length': '6796391'}
assert cipher_signature.streams.first().filesize == 6796391
def test_default_filename(cipher_signature):
expected = 'PSY - GANGNAM STYLE(강남스타일) MV.mp4'
stream = cipher_signature.streams.first()
assert stream.default_filename == expected
def test_download(cipher_signature, mocker):
mocker.patch.object(request, 'get')
request.get.side_effect = [
{'content-length': '16384'},
{'content-length': '16384'},
iter([str(random.getrandbits(8 * 1024))]),
]
with mock.patch('pytube.streams.open', mock.mock_open(), create=True):
stream = cipher_signature.streams.first()
stream.download()
def test_progressive_streams_return_includes_audio_track(cipher_signature):
stream = cipher_signature.streams.filter(progressive=True).first()
assert stream.includes_audio_track
def test_progressive_streams_return_includes_video_track(cipher_signature):
stream = cipher_signature.streams.filter(progressive=True).first()
assert stream.includes_video_track
def test_on_progress_hook(cipher_signature, mocker):
callback_fn = mock.MagicMock()
cipher_signature.register_on_progress_callback(callback_fn)
mocker.patch.object(request, 'get')
request.get.side_effect = [
{'content-length': '16384'},
{'content-length': '16384'},
iter([str(random.getrandbits(8 * 1024))]),
]
with mock.patch('pytube.streams.open', mock.mock_open(), create=True):
stream = cipher_signature.streams.first()
stream.download()
assert callback_fn.called
args, _ = callback_fn.call_args
assert len(args) == 4
stream, _, _, _ = args
assert isinstance(stream, Stream)
def test_on_complete_hook(cipher_signature, mocker):
callback_fn = mock.MagicMock()
cipher_signature.register_on_complete_callback(callback_fn)
mocker.patch.object(request, 'get')
request.get.side_effect = [
{'content-length': '16384'},
{'content-length': '16384'},
iter([str(random.getrandbits(8 * 1024))]),
]
with mock.patch('pytube.streams.open', mock.mock_open(), create=True):
stream = cipher_signature.streams.first()
stream.download()
assert callback_fn.called
def test_repr_for_audio_streams(cipher_signature):
stream = str(cipher_signature.streams.filter(only_audio=True).first())
expected = (
'<Stream: itag="140" mime_type="audio/mp4" abr="128kbps" '
'acodec="mp4a.40.2">'
)
assert stream == expected
def test_repr_for_video_streams(cipher_signature):
stream = str(cipher_signature.streams.filter(only_video=True).first())
expected = (
'<Stream: itag="137" mime_type="video/mp4" res="1080p" '
'fps="30fps" vcodec="avc1.640028">'
)
assert stream == expected
def test_repr_for_progressive_streams(cipher_signature):
stream = str(cipher_signature.streams.filter(progressive=True).first())
expected = (
'<Stream: itag="22" mime_type="video/mp4" res="720p" '
'fps="30fps" vcodec="avc1.64001F" acodec="mp4a.40.2">'
)
assert stream == expected
def test_repr_for_adaptive_streams(cipher_signature):
stream = str(cipher_signature.streams.filter(adaptive=True).first())
expected = (
'<Stream: itag="137" mime_type="video/mp4" res="1080p" '
'fps="30fps" vcodec="avc1.640028">'
)
assert stream == expected
|