aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey M․ <dstftw@gmail.com>2017-10-06 23:46:57 +0700
committerSergey M․ <dstftw@gmail.com>2017-10-06 23:50:34 +0700
commitcd6fc19ed76af6687fb2cb5f87d9ed4c3071c203 (patch)
treec25034b9fcede686df3d00fcb47f5584e7e6e070
parent86a15ed64b410336b2145f4a6b8e8a22cbf24f51 (diff)
downloadyoutube-dl-cd6fc19ed76af6687fb2cb5f87d9ed4c3071c203.tar.xz
[YoutubeDL] Ignore duplicates in --playlist-items
E.g. '--playlist-items 2-4,3-4,3' should result in '[2,3,4]', not '[2,3,4,3,4,3]'
-rw-r--r--test/test_YoutubeDL.py3
-rwxr-xr-xyoutube_dl/YoutubeDL.py3
2 files changed, 5 insertions, 1 deletions
diff --git a/test/test_YoutubeDL.py b/test/test_YoutubeDL.py
index 5ac34e663..db936bfb8 100644
--- a/test/test_YoutubeDL.py
+++ b/test/test_YoutubeDL.py
@@ -773,6 +773,9 @@ class TestYoutubeDL(unittest.TestCase):
result = get_ids({'playlist_items': '3-10'})
self.assertEqual(result, [3, 4])
+ result = get_ids({'playlist_items': '2-4,3-4,3'})
+ self.assertEqual(result, [2, 3, 4])
+
def test_urlopen_no_file_protocol(self):
# see https://github.com/rg3/youtube-dl/issues/8227
ydl = YDL()
diff --git a/youtube_dl/YoutubeDL.py b/youtube_dl/YoutubeDL.py
index 9036f0f94..855d6b8e5 100755
--- a/youtube_dl/YoutubeDL.py
+++ b/youtube_dl/YoutubeDL.py
@@ -65,6 +65,7 @@ from .utils import (
locked_file,
make_HTTPS_handler,
MaxDownloadsReached,
+ orderedSet,
PagedList,
parse_filesize,
PerRequestProxyHandler,
@@ -908,7 +909,7 @@ class YoutubeDL(object):
yield int(item)
else:
yield int(string_segment)
- playlistitems = iter_playlistitems(playlistitems_str)
+ playlistitems = orderedSet(iter_playlistitems(playlistitems_str))
ie_entries = ie_result['entries']