smooth-dl.py: update to python3
smooth-dl.py: update copyright year and contact
smooth-dl.py: add anewline in an error message
smooth-dl.py: support downloading from a local file in download_file()
smooth-dl.py: improve getting the manifest of Clip elements
smooth-dl.py: support using a local path for the Manifest file
smooth-dl.py: only create dest_dir once
smooth-dl.py: fix documentation for get_manifest()
smooth-dl.py: add support for downloading chunks with the 'd' attribute
smooth-dl.py: fix some pylint issues C: 59, 0: Unnecessary parens after 'assert' keyword (superfluous-parens) W: 67, 0: Bad indentation. Found 12 spaces, expected 8 (bad-indentation) C:232, 0: Exactly one space required after comma chunk_file = os.path.join(dest_dir, chunks_quality, chunk_name) ^ (bad-whitespace) W:341, 0: Bad indentation. Found 8 spaces, expected 4 (bad-indentation) W:342, 0: Bad indentation. Found 12 spaces, expected 8 (bad-indentation) W:344, 0: Bad indentation. Found 8 spaces, expected 4 (bad-indentation) W:345, 0: Bad indentation. Found 12 spaces, expected 8 (bad-indentation) W:347, 0: Bad indentation. Found 12 spaces, expected 8 (bad-indentation) W:350, 0: Bad indentation. Found 8 spaces, expected 4 (bad-indentation) W:351, 0: Bad indentation. Found 8 spaces, expected 4 (bad-indentation) W:353, 0: Bad indentation. Found 8 spaces, expected 4 (bad-indentation) W:355, 0: Bad indentation. Found 8 spaces, expected 4 (bad-indentation) W:360, 0: Bad indentation. Found 8 spaces, expected 4 (bad-indentation) W:365, 0: Bad indentation. Found 8 spaces, expected 4 (bad-indentation) W:370, 0: Bad indentation. Found 8 spaces, expected 4 (bad-indentation) C:396, 0: Exactly one space required after comma parser.add_option("-v", "--video-stream", metavar="<n>", ^ (bad-whitespace) C: 43, 0: Invalid constant name "__description" (invalid-name) C: 44, 0: Invalid constant name "__version" (invalid-name) C: 45, 0: Invalid constant name "__author_info" (invalid-name) W:100,32: Unused variable 'e' (unused-variable) W:112,17: Redefining name 'url' from outer scope (line 421) (redefined-outer-name) W:130, 4: Redefining name 'manifest' from outer scope (line 422) (redefined-outer-name) C:115, 7: Comparison to False should be 'not expr' or 'expr is False' (singleton-comparison) W:150,24: Redefining name 'manifest' from outer scope (line 422) (redefined-outer-name) W:156, 8: Redefining name 'url' from outer scope (line 421) (redefined-outer-name) W:156, 8: Unused variable 'url' (unused-variable) W:194, 4: Redefining name 'url' from outer scope (line 421) (redefined-outer-name) W:205, 4: Redefining name 'url' from outer scope (line 421) (redefined-outer-name) W:211,30: Redefining name 'manifest' from outer scope (line 422) (redefined-outer-name) C:213, 7: Comparison to False should be 'not expr' or 'expr is False' (singleton-comparison) C:221, 7: Comparison to False should be 'not expr' or 'expr is False' (singleton-comparison) C:234,11: Comparison to False should be 'not expr' or 'expr is False' (singleton-comparison) W:248,19: Redefining name 'manifest' from outer scope (line 422) (redefined-outer-name) W:306,22: Redefining name 'manifest' from outer scope (line 422) (redefined-outer-name) W:328,22: Redefining name 'manifest' from outer scope (line 422) (redefined-outer-name) W:335,20: Redefining name 'url' from outer scope (line 421) (redefined-outer-name) W:335,25: Redefining name 'manifest' from outer scope (line 422) (redefined-outer-name) W:376, 4: Redefining name 'parser' from outer scope (line 414) (redefined-outer-name) C:414, 4: Invalid constant name "parser" (invalid-name) C:415, 5: Invalid constant name "options" (invalid-name) C:415,14: Invalid constant name "args" (invalid-name) C:421, 4: Invalid constant name "url" (invalid-name) C:422, 4: Invalid constant name "manifest" (invalid-name) C:422,14: Invalid constant name "url" (invalid-name)
smooth-dl.py: fix some pep8 issue smooth-dl.py:38:1: E402 module level import not at top of file smooth-dl.py:39:1: E402 module level import not at top of file smooth-dl.py:40:1: E402 module level import not at top of file smooth-dl.py:41:1: E402 module level import not at top of file smooth-dl.py:42:1: E402 module level import not at top of file smooth-dl.py:43:1: E402 module level import not at top of file smooth-dl.py:44:1: E402 module level import not at top of file smooth-dl.py:45:1: E402 module level import not at top of file smooth-dl.py:46:1: E402 module level import not at top of file smooth-dl.py:57:5: E265 block comment should start with '# ' smooth-dl.py:96:1: E302 expected 2 blank lines, found 1 smooth-dl.py:111:1: E302 expected 2 blank lines, found 1 smooth-dl.py:173:25: E128 continuation line under-indented for visual indent smooth-dl.py:195:80: E501 line too long (84 > 79 characters) smooth-dl.py:246:9: E128 continuation line under-indented for visual indent smooth-dl.py:248:24: E711 comparison to None should be 'if cond is None:' smooth-dl.py:320:13: E127 continuation line over-indented for visual indent smooth-dl.py:333:9: E128 continuation line under-indented for visual indent smooth-dl.py:334:9: E128 continuation line under-indented for visual indent smooth-dl.py:335:9: E128 continuation line under-indented for visual indent smooth-dl.py:336:9: E128 continuation line under-indented for visual indent smooth-dl.py:338:23: E711 comparison to None should be 'if cond is None:' smooth-dl.py:343:21: E128 continuation line under-indented for visual indent smooth-dl.py:345:21: E128 continuation line under-indented for visual indent smooth-dl.py:351:17: E128 continuation line under-indented for visual indent smooth-dl.py:353:17: E128 continuation line under-indented for visual indent smooth-dl.py:355:9: E265 block comment should start with '# ' smooth-dl.py:358:17: E128 continuation line under-indented for visual indent smooth-dl.py:363:23: E128 continuation line under-indented for visual indent smooth-dl.py:364:23: E128 continuation line under-indented for visual indent smooth-dl.py:374:13: E128 continuation line under-indented for visual indent smooth-dl.py:426:17: E128 continuation line under-indented for visual indent smooth-dl.py:427:17: E128 continuation line under-indented for visual indent smooth-dl.py:437:13: E128 continuation line under-indented for visual indent smooth-dl.py:438:13: E128 continuation line under-indented for visual indent smooth-dl.py:439:13: E128 continuation line under-indented for visual indent
smmoth-dl.py: if there is a Clip element use its manifest
smooth-dl.py: use more specific exception when looking for the Clip element
smooth-dl.py: factor out a download_file() function
Differentiate better between url, manifest_url and base_url
Print more details when downloading a chunk fails
Simplify get_manifest() signature The manifest_file argument is never used, downloading to 'Manifest' is just fine.
smooth-dl: factor out some common code get_chunk_quality_string() and get_chunk_name_string() abstract some code used in multiple places.
smooth-dl: handle CustomAttributes in stream quality Some manifest files can have CustomAttributes elements in the QualityLevel settings, handle these. For instance on RaiReplay streams there is a systemLanguage attribute to tell what language the audio stream is in.
smooth-dl: fix a FutureWarning from python 2.7 ./smooth-dl.py:137: FutureWarning: This search is broken in 1.3 and earlier, and will be fixed in a future version. If you rely on the current behaviour, change it to './/StreamIndex'