File size: 2,674 Bytes
a0ca1c2
49627f0
efe24a6
 
 
 
a0ca1c2
 
 
 
82321d6
a0ca1c2
82321d6
a0ca1c2
 
 
82321d6
a0ca1c2
82321d6
49627f0
 
328e22b
49627f0
328e22b
 
82321d6
c7833ef
49627f0
 
82321d6
 
 
49627f0
 
24c3a19
 
328e22b
17564d0
328e22b
24c3a19
328e22b
 
 
82321d6
328e22b
 
 
 
7f9dcc9
 
 
17564d0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7f9dcc9
efe24a6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e707f93
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
# -*- coding: utf-8 -*-
"""Unit tests for the :module:`extract <extract>` module."""
import pytest

from pytube.exceptions import RegexMatchError

from pytube import extract


def test_extract_video_id():
    url = "https://www.youtube.com/watch?v=9bZkp7q19f0"
    video_id = extract.video_id(url)
    assert video_id == "9bZkp7q19f0"


def test_extract_watch_url():
    video_id = "9bZkp7q19f0"
    watch_url = extract.watch_url(video_id)
    assert watch_url == "https://youtube.com/watch?v=9bZkp7q19f0"


def test_info_url(cipher_signature):
    video_info_url = extract.video_info_url(
        video_id=cipher_signature.video_id,
        watch_url=cipher_signature.watch_url,
        embed_html="",
        age_restricted=False,
    )
    expected = (
        "https://youtube.com/get_video_info?video_id=9bZkp7q19f0&el=%24el"
        "&ps=default&eurl=https%253A%2F%2Fyoutube.com%2Fwatch%253Fv%"
        "253D9bZkp7q19f0&hl=en_US"
    )
    assert video_info_url == expected


def test_js_url(cipher_signature):
    expected = "https://youtube.com/yts/jsbin/player_ias-vflWQEEag/en_US/base.js"
    result = extract.js_url(cipher_signature.watch_html)
    assert expected == result


def test_age_restricted(age_restricted):
    assert extract.is_age_restricted(age_restricted["watch_html"])


def test_non_age_restricted(cipher_signature):
    assert not extract.is_age_restricted(cipher_signature.watch_html)


def test_get_vid_desc(cipher_signature):
    expected = (
        "PSY - ‘I LUV IT’ M/V @ https://youtu.be/Xvjnoagk6GU\n"
        "PSY - ‘New Face’ M/V @https://youtu.be/OwJPPaEyqhI\n"
        "PSY - 8TH ALBUM '4X2=8' on iTunes @\n"
        "https://smarturl.it/PSY_8thAlbum\n"
        "PSY - GANGNAM STYLE(강남스타일) on iTunes @ http://smarturl.it/PsyGangnam\n"
        "#PSY #싸이 #GANGNAMSTYLE #강남스타일\n"
        "More about PSY@\nhttp://www.youtube.com/officialpsy\n"
        "http://www.facebook.com/officialpsy\n"
        "http://twitter.com/psy_oppa\n"
        "https://www.instagram.com/42psy42\n"
        "http://iTunes.com/PSY\n"
        "http://sptfy.com/PSY\n"
        "http://weibo.com/psyoppa"
    )
    assert extract.get_vid_descr(cipher_signature.watch_html) == expected


def test_eurl():
    url = extract.eurl("videoid")
    assert url == "https://youtube.googleapis.com/v/videoid"


def test_mime_type_codec():
    mime_type, mime_subtype = extract.mime_type_codec('audio/webm; codecs="opus"')
    assert mime_type == "audio/webm"
    assert mime_subtype == ["opus"]


def test_mime_type_codec_with_no_match_should_error():
    with pytest.raises(RegexMatchError):
        extract.mime_type_codec("audio/webm")