File size: 4,009 Bytes
8734cba dfbebc5 61a4b4e dfbebc5 61a4b4e 15fde2f 3783a2f eab63b5 15fde2f eab63b5 15fde2f dfbebc5 3f026d1 f7b22d6 dfbebc5 3f026d1 dfbebc5 84a96f3 3f026d1 f7b22d6 84a96f3 3f026d1 84a96f3 61a4b4e dfbebc5 3f026d1 f7b22d6 dfbebc5 3f026d1 84a96f3 f1b9623 |
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 -*-
from unittest import mock
from unittest.mock import patch, mock_open, MagicMock
from pytube import Caption, CaptionQuery, captions
def test_float_to_srt_time_format():
caption1 = Caption(
{"url": "url1", "name": {"simpleText": "name1"}, "languageCode": "en"}
)
assert caption1.float_to_srt_time_format(3.89) == "00:00:03,890"
def test_caption_query_sequence():
caption1 = Caption(
{"url": "url1", "name": {"simpleText": "name1"}, "languageCode": "en"}
)
caption2 = Caption(
{"url": "url2", "name": {"simpleText": "name2"}, "languageCode": "fr"}
)
caption_query = CaptionQuery(captions=[caption1, caption2])
assert caption_query.captions == [caption1, caption2]
assert len(caption_query) == 2
assert caption_query[0] == caption1
def test_caption_query_get_by_language_code_when_exists():
caption1 = Caption(
{"url": "url1", "name": {"simpleText": "name1"}, "languageCode": "en"}
)
caption2 = Caption(
{"url": "url2", "name": {"simpleText": "name2"}, "languageCode": "fr"}
)
caption_query = CaptionQuery(captions=[caption1, caption2])
assert caption_query.get_by_language_code("en") == caption1
def test_caption_query_get_by_language_code_when_not_exists():
caption1 = Caption(
{"url": "url1", "name": {"simpleText": "name1"}, "languageCode": "en"}
)
caption2 = Caption(
{"url": "url2", "name": {"simpleText": "name2"}, "languageCode": "fr"}
)
caption_query = CaptionQuery(captions=[caption1, caption2])
assert caption_query.get_by_language_code("hello") is None
@mock.patch("pytube.captions.Caption.generate_srt_captions")
def test_download(srt):
open_mock = mock_open()
with patch("builtins.open", open_mock):
srt.return_value = ""
caption = Caption(
{"url": "url1", "name": {"simpleText": "name1"}, "languageCode": "en"}
)
caption.download("title")
assert open_mock.call_args_list[0][0][0].split("/")[-1] == "title (en).srt"
@mock.patch("pytube.captions.Caption.generate_srt_captions")
def test_download_with_prefix(srt):
open_mock = mock_open()
with patch("builtins.open", open_mock):
srt.return_value = ""
caption = Caption(
{"url": "url1", "name": {"simpleText": "name1"}, "languageCode": "en"}
)
caption.download("title", filename_prefix="1 ")
assert open_mock.call_args_list[0][0][0].split("/")[-1] == "1 title (en).srt"
@mock.patch("pytube.captions.Caption.generate_srt_captions")
def test_download_with_output_path(srt):
open_mock = mock_open()
captions.target_directory = MagicMock(return_value="/target")
with patch("builtins.open", open_mock):
srt.return_value = ""
caption = Caption(
{"url": "url1", "name": {"simpleText": "name1"}, "languageCode": "en"}
)
file_path = caption.download("title", output_path="blah")
assert file_path == "/target/title (en).srt"
captions.target_directory.assert_called_with("blah")
@mock.patch("pytube.captions.Caption.xml_captions")
def test_download_xml_and_trim_extension(xml):
open_mock = mock_open()
with patch("builtins.open", open_mock):
xml.return_value = ""
caption = Caption(
{"url": "url1", "name": {"simpleText": "name1"}, "languageCode": "en"}
)
caption.download("title.xml", srt=False)
assert open_mock.call_args_list[0][0][0].split("/")[-1] == "title (en).xml"
def test_repr():
caption = Caption(
{"url": "url1", "name": {"simpleText": "name1"}, "languageCode": "en"}
)
assert str(caption) == '<Caption lang="name1" code="en">'
@mock.patch("pytube.request.get")
def test_xml_captions(request_get):
request_get.return_value = "test"
caption = Caption(
{"url": "url1", "name": {"simpleText": "name1"}, "languageCode": "en"}
)
assert caption.xml_captions == "test"
|