john commited on
Commit
3a5d47f
·
1 Parent(s): 1fbe89d

refactored based on wiaterb's suggestion

Browse files
Files changed (2) hide show
  1. pytube/contrib/playlist.py +6 -16
  2. 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, reverse_numbering=False):
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: string
79
  """
80
  digits = len(str(len(self.video_urls)))
81
- reverse = reverse_numbering
82
  if reverse:
83
- i = len(self.video_urls)
84
  else:
85
- i = 1
86
- while True:
87
- prefix = str(i)
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(reverse_numbering=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_numbering=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_numbering=False)
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(reverse_numbering=True)
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)