hbmartin commited on
Commit
91d675f
·
1 Parent(s): 81d2efb

test for _ffmpeg_downloader

Browse files
Files changed (2) hide show
  1. pytube/cli.py +1 -4
  2. tests/test_cli.py +33 -3
pytube/cli.py CHANGED
@@ -267,10 +267,7 @@ def ffmpeg_process(
267
 
268
  if resolution == "best":
269
  video_stream = (
270
- youtube.streams.filter(progressive=False)
271
- .order_by("resolution")
272
- .desc()
273
- .first()
274
  )
275
  else:
276
  video_stream = youtube.streams.filter(
 
267
 
268
  if resolution == "best":
269
  video_stream = (
270
+ youtube.streams.filter(progressive=False).order_by("resolution").last()
 
 
 
271
  )
272
  else:
273
  video_stream = youtube.streams.filter(
tests/test_cli.py CHANGED
@@ -258,9 +258,7 @@ def test_ffmpeg_process_best_should_download(_ffmpeg_downloader, youtube):
258
  streams = MagicMock()
259
  youtube.streams = streams
260
  video_stream = MagicMock()
261
- streams.filter.return_value.order_by.return_value.desc.return_value.first.return_value = (
262
- video_stream
263
- )
264
  audio_stream = MagicMock()
265
  streams.get_audio_only.return_value = audio_stream
266
  # When
@@ -307,6 +305,38 @@ def test_ffmpeg_process_res_none_should_not_download(_ffmpeg_downloader, youtube
307
  _ffmpeg_downloader.assert_not_called()
308
 
309
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
310
  @mock.patch("pytube.cli.YouTube.__init__", return_value=None)
311
  def test_download_audio(youtube):
312
  parser = argparse.ArgumentParser()
 
258
  streams = MagicMock()
259
  youtube.streams = streams
260
  video_stream = MagicMock()
261
+ streams.filter.return_value.order_by.return_value.last.return_value = video_stream
 
 
262
  audio_stream = MagicMock()
263
  streams.get_audio_only.return_value = audio_stream
264
  # When
 
305
  _ffmpeg_downloader.assert_not_called()
306
 
307
 
308
+ @mock.patch("pytube.cli.os.unlink", return_value=None)
309
+ @mock.patch("pytube.cli.subprocess.run", return_value=None)
310
+ @mock.patch("pytube.cli._download", return_value=None)
311
+ @mock.patch("pytube.cli._unique_name", return_value=None)
312
+ def test_ffmpeg_downloader(unique_name, download, run, unlink):
313
+ # Given
314
+ target = "target"
315
+ audio_stream = MagicMock()
316
+ video_stream = MagicMock()
317
+ video_stream.id = "video_id"
318
+ video_stream.subtype = "video_subtype"
319
+ unique_name.side_effect = ["video_name", "audio_name"]
320
+
321
+ # When
322
+ cli._ffmpeg_downloader(
323
+ audio_stream=audio_stream, video_stream=video_stream, target=target
324
+ )
325
+ # Then
326
+ download.assert_called()
327
+ run.assert_called_with([
328
+ "ffmpeg",
329
+ "-i",
330
+ f"target/video_name",
331
+ "-i",
332
+ f"target/audio_name",
333
+ "-codec",
334
+ "copy",
335
+ f"target/safe_title.video_subtype",
336
+ ])
337
+ unlink.assert_called()
338
+
339
+
340
  @mock.patch("pytube.cli.YouTube.__init__", return_value=None)
341
  def test_download_audio(youtube):
342
  parser = argparse.ArgumentParser()