diff --git a/gallery_dl/util.py b/gallery_dl/util.py index 078bb1cb..e8af358e 100644 --- a/gallery_dl/util.py +++ b/gallery_dl/util.py @@ -71,21 +71,17 @@ def unique_sequence(iterable): yield element -def contains(values, elements): +def contains(values, elements, separator=" "): """Returns True if at least one of 'elements' is contained in 'values'""" - if not isinstance(elements, (tuple, list)): - elements = (elements,) - if isinstance(values, str): - fmt = r"\b{}\b".format - for e in elements: - if re.compile(fmt(re.escape(e))).search(values): - return True - else: - for e in elements: - if e in values: - return True + values = values.split(separator) + if not isinstance(elements, (tuple, list)): + return elements in values + + for e in elements: + if e in values: + return True return False diff --git a/test/test_util.py b/test/test_util.py index da0724a1..3cf3d683 100644 --- a/test/test_util.py +++ b/test/test_util.py @@ -328,13 +328,18 @@ class TestOther(unittest.TestCase): self.assertFalse(util.contains(c, "bar")) self.assertFalse(util.contains(c, [2, 5, "bar"])) - s = "1, 2, 3, asd, qwe, y(+)c, f(+)(-), bar" + s = "1 2 3 asd qwe y(+)c f(+)(-) bar" self.assertTrue(util.contains(s, "y(+)c")) self.assertTrue(util.contains(s, ["asd", "qwe", "yxc"])) self.assertTrue(util.contains(s, ["sdf", "dfg", "qwe"])) self.assertFalse(util.contains(s, "tag1")) self.assertFalse(util.contains(s, ["tag1", "tag2", "tag3"])) + s = "1, 2, 3, asd, qwe, y(+)c, f(+)(-), bar" + self.assertTrue(util.contains(s, "y(+)c", ", ")) + self.assertTrue(util.contains(s, ["sdf", "dfg", "qwe"], ", ")) + self.assertFalse(util.contains(s, "tag1", ", ")) + def test_raises(self): func = util.raises(Exception) with self.assertRaises(Exception):