File size: 4,163 Bytes
97f04a9 24c3a19 97f04a9 328e22b 97f04a9 a2b56cd 328e22b 97f04a9 328e22b 97f04a9 328e22b 97f04a9 f9962fa 0272e2f f9962fa 78b647b ca1059b 78b647b f9962fa 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 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 |
# -*- 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_title(cipher_signature):
expected = 'PSY - GANGNAM STYLE(๊ฐ๋จ์คํ์ผ) M/V'
stream = cipher_signature.streams.first()
assert stream.title == expected
expected = 'PSY - GANGNAM STYLE(๊ฐ๋จ์คํ์ผ)'
stream.player_config_args = {
'player_response': {'videoDetails': {'title': expected}},
}
assert stream.title == expected
expected = 'Unknown YouTube Video Title'
stream.player_config_args = {}
assert stream.title == 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
|