john
commited on
Commit
·
3a5d47f
1
Parent(s):
1fbe89d
refactored based on wiaterb's suggestion
Browse files- pytube/contrib/playlist.py +6 -16
- tests/test_playlist.py +15 -15
pytube/contrib/playlist.py
CHANGED
@@ -66,7 +66,7 @@ class Playlist(object):
|
|
66 |
complete_url = base_url + video_id
|
67 |
self.video_urls.append(complete_url)
|
68 |
|
69 |
-
def _path_num_prefix_generator(self,
|
70 |
"""
|
71 |
This generator function generates number prefixes, for the items
|
72 |
in the playlist.
|
@@ -75,25 +75,15 @@ class Playlist(object):
|
|
75 |
So if you have a playlist of 100 videos it will number them like:
|
76 |
001, 002, 003 ect, up to 100.
|
77 |
It also adds a space after the number.
|
78 |
-
:return: prefix:
|
79 |
"""
|
80 |
digits = len(str(len(self.video_urls)))
|
81 |
-
reverse = reverse_numbering
|
82 |
if reverse:
|
83 |
-
|
84 |
else:
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
if len(prefix) < digits:
|
89 |
-
for _ in range(digits - len(prefix)):
|
90 |
-
prefix = "0" + prefix
|
91 |
-
prefix += " "
|
92 |
-
if reverse:
|
93 |
-
i -= 1
|
94 |
-
else:
|
95 |
-
i += 1
|
96 |
-
yield prefix
|
97 |
|
98 |
def download_all(self, download_path=None, prefix_number=True,
|
99 |
reverse_numbering=False):
|
|
|
66 |
complete_url = base_url + video_id
|
67 |
self.video_urls.append(complete_url)
|
68 |
|
69 |
+
def _path_num_prefix_generator(self, reverse=False):
|
70 |
"""
|
71 |
This generator function generates number prefixes, for the items
|
72 |
in the playlist.
|
|
|
75 |
So if you have a playlist of 100 videos it will number them like:
|
76 |
001, 002, 003 ect, up to 100.
|
77 |
It also adds a space after the number.
|
78 |
+
:return: prefix string generator : generator
|
79 |
"""
|
80 |
digits = len(str(len(self.video_urls)))
|
|
|
81 |
if reverse:
|
82 |
+
start, stop, step = (len(self.video_urls), 0, -1)
|
83 |
else:
|
84 |
+
start, stop, step = (1, len(self.video_urls) + 1, 1)
|
85 |
+
return (str(i).zfill(digits) for i in range(start, stop, step))
|
86 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
87 |
|
88 |
def download_all(self, download_path=None, prefix_number=True,
|
89 |
reverse_numbering=False):
|
tests/test_playlist.py
CHANGED
@@ -16,17 +16,6 @@ def test_construct():
|
|
16 |
assert ob.construct_playlist_url() == expected
|
17 |
|
18 |
|
19 |
-
def test_link_parse():
|
20 |
-
ob = Playlist(short_test_pl)
|
21 |
-
|
22 |
-
expected = [
|
23 |
-
'/watch?v=m5q2GCsteQs',
|
24 |
-
'/watch?v=5YK63cXyJ2Q',
|
25 |
-
'/watch?v=Rzt4rUPFYD4',
|
26 |
-
]
|
27 |
-
assert ob.parse_links() == expected
|
28 |
-
|
29 |
-
|
30 |
def test_populate():
|
31 |
ob = Playlist(short_test_pl)
|
32 |
expected = [
|
@@ -39,6 +28,17 @@ def test_populate():
|
|
39 |
assert ob.video_urls == expected
|
40 |
|
41 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
42 |
def test_download():
|
43 |
ob = Playlist(short_test_pl)
|
44 |
ob.download_all()
|
@@ -50,19 +50,19 @@ def test_download():
|
|
50 |
def test_numbering():
|
51 |
ob = Playlist(short_test_pl)
|
52 |
ob.populate_video_urls()
|
53 |
-
gen = ob._path_num_prefix_generator(
|
54 |
assert "1" in next(gen)
|
55 |
assert "2" in next(gen)
|
56 |
|
57 |
ob = Playlist(short_test_pl)
|
58 |
ob.populate_video_urls()
|
59 |
-
gen = ob._path_num_prefix_generator(
|
60 |
assert str(len(ob.video_urls)) in next(gen)
|
61 |
assert str(len(ob.video_urls) - 1) in next(gen)
|
62 |
|
63 |
ob = Playlist(long_test_pl)
|
64 |
ob.populate_video_urls()
|
65 |
-
gen = ob._path_num_prefix_generator(
|
66 |
nxt = next(gen)
|
67 |
assert len(nxt) > 1
|
68 |
assert "1" in nxt
|
@@ -72,6 +72,6 @@ def test_numbering():
|
|
72 |
|
73 |
ob = Playlist(long_test_pl)
|
74 |
ob.populate_video_urls()
|
75 |
-
gen = ob._path_num_prefix_generator(
|
76 |
assert str(len(ob.video_urls)) in next(gen)
|
77 |
assert str(len(ob.video_urls) - 1) in next(gen)
|
|
|
16 |
assert ob.construct_playlist_url() == expected
|
17 |
|
18 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
19 |
def test_populate():
|
20 |
ob = Playlist(short_test_pl)
|
21 |
expected = [
|
|
|
28 |
assert ob.video_urls == expected
|
29 |
|
30 |
|
31 |
+
def test_link_parse():
|
32 |
+
ob = Playlist(short_test_pl)
|
33 |
+
|
34 |
+
expected = [
|
35 |
+
'/watch?v=m5q2GCsteQs',
|
36 |
+
'/watch?v=5YK63cXyJ2Q',
|
37 |
+
'/watch?v=Rzt4rUPFYD4',
|
38 |
+
]
|
39 |
+
assert ob.parse_links() == expected
|
40 |
+
|
41 |
+
|
42 |
def test_download():
|
43 |
ob = Playlist(short_test_pl)
|
44 |
ob.download_all()
|
|
|
50 |
def test_numbering():
|
51 |
ob = Playlist(short_test_pl)
|
52 |
ob.populate_video_urls()
|
53 |
+
gen = ob._path_num_prefix_generator(reverse=False)
|
54 |
assert "1" in next(gen)
|
55 |
assert "2" in next(gen)
|
56 |
|
57 |
ob = Playlist(short_test_pl)
|
58 |
ob.populate_video_urls()
|
59 |
+
gen = ob._path_num_prefix_generator(reverse=True)
|
60 |
assert str(len(ob.video_urls)) in next(gen)
|
61 |
assert str(len(ob.video_urls) - 1) in next(gen)
|
62 |
|
63 |
ob = Playlist(long_test_pl)
|
64 |
ob.populate_video_urls()
|
65 |
+
gen = ob._path_num_prefix_generator(reverse=False)
|
66 |
nxt = next(gen)
|
67 |
assert len(nxt) > 1
|
68 |
assert "1" in nxt
|
|
|
72 |
|
73 |
ob = Playlist(long_test_pl)
|
74 |
ob.populate_video_urls()
|
75 |
+
gen = ob._path_num_prefix_generator(reverse=True)
|
76 |
assert str(len(ob.video_urls)) in next(gen)
|
77 |
assert str(len(ob.video_urls) - 1) in next(gen)
|