File size: 2,942 Bytes
ca1059b
0cf8d94
2f4cd16
811e7aa
5e51daa
 
dab9a64
17e4141
0cf8d94
91a4ea9
 
 
 
17e4141
5e51daa
 
17e4141
dc3bd9b
 
 
 
 
 
 
 
 
d2eed62
 
 
 
dc3bd9b
d2eed62
 
 
 
2f4cd16
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 -*-
from unittest import mock
from unittest.mock import MagicMock

from pytube import Playlist


@mock.patch("pytube.contrib.playlist.request.get")
def test_title(request_get):
    request_get.return_value = (
        "<title>(149) Python Tutorial for Beginners "
        "(For Absolute Beginners) - YouTube</title>"
    )
    url = "https://www.fakeurl.com/playlist?list=PLsyeobzWxl7poL9JTVyndKe62ieoN"
    pl = Playlist(url)
    pl_title = pl.title()
    assert pl_title == "(149) Python Tutorial for Beginners (For Absolute Beginners)"


def test_init_with_playlist_url():
    url = "https://www.youtube.com/playlist?list=PLynhp4cZEpTbRs_PYISQ8v_uwO0_mDg_X"
    playlist = Playlist(url)
    assert playlist.playlist_url == url


def test_init_with_watch_url():
    url = (
        "https://www.youtube.com/watch?v=1KeYzjILqDo&"
        "list=PLynhp4cZEpTbRs_PYISQ8v_uwO0_mDg_X&index=2&t=661s"
    )
    playlist = Playlist(url)
    assert (
        playlist.playlist_url
        == "https://www.youtube.com/playlist?list=PLynhp4cZEpTbRs_PYISQ8v_uwO0_mDg_X"
    )


@mock.patch("pytube.contrib.playlist.request.get")
def test_parse_links(request_get, playlist_html):
    url = "https://www.fakeurl.com/playlist?list=whatever"
    request_get.return_value = playlist_html
    playlist = Playlist(url)
    playlist._find_load_more_url = MagicMock(return_value=None)
    links = playlist.parse_links()
    request_get.assert_called()
    assert links == [
        "/watch?v=ujTCoH21GlA",
        "/watch?v=45ryDIPHdGg",
        "/watch?v=1BYu65vLKdA",
        "/watch?v=3AQ_74xrch8",
        "/watch?v=ddqQUz9mZaM",
        "/watch?v=vwLT6bZrHEE",
        "/watch?v=TQKI0KE-JYY",
        "/watch?v=dNBvQ38MlT8",
        "/watch?v=JHxyrMgOUWI",
        "/watch?v=l2I8NycJMCY",
        "/watch?v=g1Zbuk1gAfk",
        "/watch?v=zixd-si9Q-o",
    ]


@mock.patch("pytube.contrib.playlist.request.get")
def test_populate_video_urls(request_get, playlist_html):
    url = "https://www.fakeurl.com/playlist?list=whatever"
    request_get.return_value = playlist_html
    playlist = Playlist(url)
    playlist._find_load_more_url = MagicMock(return_value=None)
    playlist.populate_video_urls()
    request_get.assert_called()
    assert playlist.video_urls == [
        "https://www.youtube.com/watch?v=ujTCoH21GlA",
        "https://www.youtube.com/watch?v=45ryDIPHdGg",
        "https://www.youtube.com/watch?v=1BYu65vLKdA",
        "https://www.youtube.com/watch?v=3AQ_74xrch8",
        "https://www.youtube.com/watch?v=ddqQUz9mZaM",
        "https://www.youtube.com/watch?v=vwLT6bZrHEE",
        "https://www.youtube.com/watch?v=TQKI0KE-JYY",
        "https://www.youtube.com/watch?v=dNBvQ38MlT8",
        "https://www.youtube.com/watch?v=JHxyrMgOUWI",
        "https://www.youtube.com/watch?v=l2I8NycJMCY",
        "https://www.youtube.com/watch?v=g1Zbuk1gAfk",
        "https://www.youtube.com/watch?v=zixd-si9Q-o",
    ]