3 from __future__
import unicode_literals
5 # Allow direct execution
9 sys
.path
.insert(0, os
.path
.dirname(os
.path
.dirname(os
.path
.abspath(__file__
))))
11 from yt_dlp
import YoutubeDL
12 from yt_dlp
.compat
import compat_shlex_quote
13 from yt_dlp
.postprocessor
import (
15 FFmpegThumbnailsConvertorPP
,
21 class TestMetadataFromField(unittest
.TestCase
):
22 def test_format_to_regex(self
):
23 pp
= MetadataFromFieldPP(None, ['title:%(title)s - %(artist)s'])
24 self
.assertEqual(pp
._data
[0]['regex'], r
'(?P<title>.+)\ \-\ (?P<artist>.+)')
26 def test_field_to_outtmpl(self
):
27 pp
= MetadataFromFieldPP(None, ['title:%(title)s : %(artist)s'])
28 self
.assertEqual(pp
._data
[0]['tmpl'], '%(title)s')
30 def test_in_out_seperation(self
):
31 pp
= MetadataFromFieldPP(None, ['%(title)s \\: %(artist)s:%(title)s : %(artist)s'])
32 self
.assertEqual(pp
._data
[0]['in'], '%(title)s : %(artist)s')
33 self
.assertEqual(pp
._data
[0]['out'], '%(title)s : %(artist)s')
36 class TestMetadataFromTitle(unittest
.TestCase
):
37 def test_format_to_regex(self
):
38 pp
= MetadataFromTitlePP(None, '%(title)s - %(artist)s')
39 self
.assertEqual(pp
._titleregex
, r
'(?P<title>.+)\ \-\ (?P<artist>.+)')
42 class TestConvertThumbnail(unittest
.TestCase
):
43 def test_escaping(self
):
44 pp
= FFmpegThumbnailsConvertorPP()
46 print('Skipping: ffmpeg not found')
49 file = 'test/testdata/thumbnails/foo %d bar/foo_%d.{}'
50 tests
= (('webp', 'png'), ('png', 'jpg'))
52 for inp
, out
in tests
:
53 out_file
= file.format(out
)
54 if os
.path
.exists(out_file
):
56 pp
.convert_thumbnail(file.format(inp
), out
)
57 assert os
.path
.exists(out_file
)
60 os
.remove(file.format(out
))
63 class TestExecAfterDownload(unittest
.TestCase
):
64 def test_parse_cmd(self
):
65 pp
= ExecAfterDownloadPP(YoutubeDL(), '')
66 info
= {'filepath': 'file name'}
67 quoted_filepath
= compat_shlex_quote(info
['filepath'])
69 self
.assertEqual(pp
.parse_cmd('echo', info
), 'echo %s' % quoted_filepath
)
70 self
.assertEqual(pp
.parse_cmd('echo.{}', info
), 'echo.%s' % quoted_filepath
)
71 self
.assertEqual(pp
.parse_cmd('echo "%(filepath)s"', info
), 'echo "%s"' % info
['filepath'])