mirror of
https://github.com/fergalmoran/picard.git
synced 2026-01-29 11:53:59 +00:00
Pass filters directly instead of passing config.setting
Suggested by phw
This commit is contained in:
@@ -68,14 +68,10 @@ _TRANSLATE_TAGS = {
|
||||
|
||||
class TagGenreFilter:
|
||||
|
||||
def __init__(self, setting=None):
|
||||
if setting is None:
|
||||
setting = config.setting
|
||||
self.genres_filter = setting['genres_filter']
|
||||
|
||||
def __init__(self, filters):
|
||||
self.errors = dict()
|
||||
self.match_regexes = defaultdict(list)
|
||||
for lineno, line in enumerate(self.genres_filter.splitlines()):
|
||||
for lineno, line in enumerate(filters.splitlines()):
|
||||
line = line.strip()
|
||||
if line and line[0] in ('+', '-'):
|
||||
_list = line[0]
|
||||
@@ -280,7 +276,7 @@ class Track(DataObject, Item):
|
||||
# And generate the genre metadata tag
|
||||
maxtags = config.setting['max_genres']
|
||||
minusage = config.setting['min_genre_usage']
|
||||
tag_filter = TagGenreFilter()
|
||||
tag_filter = TagGenreFilter(config.setting['genres_filter'])
|
||||
genre = []
|
||||
for usage, name in taglist[:maxtags]:
|
||||
if tag_filter.skip(name):
|
||||
|
||||
@@ -138,9 +138,8 @@ class GenresOptionsPage(OptionsPage):
|
||||
def update_test_genres_filter(self):
|
||||
test_text = self.ui.test_genres_filter.toPlainText()
|
||||
|
||||
setting = dict()
|
||||
setting["genres_filter"] = self.ui.genres_filter.toPlainText()
|
||||
tagfilter = TagGenreFilter(setting=setting)
|
||||
filters = self.ui.genres_filter.toPlainText()
|
||||
tagfilter = TagGenreFilter(filters)
|
||||
|
||||
#FIXME: very simple error reporting, improve
|
||||
self.ui.label_test_genres_filter_error.setText(
|
||||
|
||||
@@ -8,69 +8,58 @@ from picard.track import TagGenreFilter
|
||||
class TagGenreFilterTest(PicardTestCase):
|
||||
|
||||
def test_no_filter(self):
|
||||
setting = {
|
||||
'genres_filter': """
|
||||
# comment
|
||||
"""
|
||||
}
|
||||
tag_filter = TagGenreFilter(setting=setting)
|
||||
filters = "# comment"
|
||||
|
||||
tag_filter = TagGenreFilter(filters)
|
||||
|
||||
self.assertFalse(tag_filter.skip('jazz'))
|
||||
|
||||
def test_strict_filter(self):
|
||||
setting = {
|
||||
'genres_filter': """
|
||||
-jazz
|
||||
"""
|
||||
}
|
||||
tag_filter = TagGenreFilter(setting=setting)
|
||||
filters = "-jazz"
|
||||
tag_filter = TagGenreFilter(filters)
|
||||
|
||||
self.assertTrue(tag_filter.skip('jazz'))
|
||||
|
||||
def test_strict_filter_whitelist(self):
|
||||
setting = {
|
||||
'genres_filter': """
|
||||
filters = """
|
||||
+jazz
|
||||
-jazz
|
||||
"""
|
||||
}
|
||||
tag_filter = TagGenreFilter(setting=setting)
|
||||
"""
|
||||
|
||||
tag_filter = TagGenreFilter(filters)
|
||||
|
||||
self.assertFalse(tag_filter.skip('jazz'))
|
||||
|
||||
def test_strict_filter_whitelist_reverseorder(self):
|
||||
setting = {
|
||||
'genres_filter': """
|
||||
filters = """
|
||||
-jazz
|
||||
+jazz
|
||||
"""
|
||||
}
|
||||
tag_filter = TagGenreFilter(setting=setting)
|
||||
"""
|
||||
|
||||
tag_filter = TagGenreFilter(filters)
|
||||
|
||||
self.assertFalse(tag_filter.skip('jazz'))
|
||||
|
||||
def test_wildcard_filter_all_but(self):
|
||||
setting = {
|
||||
'genres_filter': """
|
||||
filters = """
|
||||
-*
|
||||
+blues
|
||||
"""
|
||||
}
|
||||
tag_filter = TagGenreFilter(setting=setting)
|
||||
"""
|
||||
|
||||
tag_filter = TagGenreFilter(filters)
|
||||
self.assertTrue(tag_filter.skip('jazz'))
|
||||
self.assertTrue(tag_filter.skip('rock'))
|
||||
self.assertFalse(tag_filter.skip('blues'))
|
||||
|
||||
def test_wildcard_filter(self):
|
||||
setting = {
|
||||
'genres_filter': """
|
||||
filters = """
|
||||
-jazz*
|
||||
-*rock
|
||||
-*disco*
|
||||
-a*b
|
||||
"""
|
||||
}
|
||||
tag_filter = TagGenreFilter(setting=setting)
|
||||
"""
|
||||
|
||||
tag_filter = TagGenreFilter(filters)
|
||||
|
||||
self.assertTrue(tag_filter.skip('jazz'))
|
||||
self.assertTrue(tag_filter.skip('jazz blues'))
|
||||
@@ -90,16 +79,15 @@ class TagGenreFilterTest(PicardTestCase):
|
||||
self.assertFalse(tag_filter.skip('xab'))
|
||||
|
||||
def test_regex_filter(self):
|
||||
setting = {
|
||||
'genres_filter': """
|
||||
filters = """
|
||||
-/^j.zz/
|
||||
-/r[io]ck$/
|
||||
-/disco+/
|
||||
+/discoooo/
|
||||
+/*/
|
||||
"""
|
||||
}
|
||||
tag_filter = TagGenreFilter(setting=setting)
|
||||
"""
|
||||
|
||||
tag_filter = TagGenreFilter(filters)
|
||||
|
||||
self.assertTrue(tag_filter.skip('jazz'))
|
||||
self.assertTrue(tag_filter.skip('jizz'))
|
||||
@@ -117,14 +105,13 @@ class TagGenreFilterTest(PicardTestCase):
|
||||
self.assertFalse(tag_filter.skip('xdiscoooox'))
|
||||
|
||||
def test_uppercased_filter(self):
|
||||
setting = {
|
||||
'genres_filter': """
|
||||
filters = """
|
||||
-JAZZ*
|
||||
-ROCK
|
||||
-/^DISCO$/
|
||||
"""
|
||||
}
|
||||
tag_filter = TagGenreFilter(setting=setting)
|
||||
"""
|
||||
|
||||
tag_filter = TagGenreFilter(filters)
|
||||
|
||||
self.assertTrue(tag_filter.skip('jazz blues'))
|
||||
self.assertTrue(tag_filter.skip('JAZZ BLUES'))
|
||||
@@ -134,14 +121,13 @@ class TagGenreFilterTest(PicardTestCase):
|
||||
self.assertTrue(tag_filter.skip('DISCO'))
|
||||
|
||||
def test_whitespaces_filter(self):
|
||||
setting = {
|
||||
'genres_filter': """
|
||||
filters = """
|
||||
- jazz b*
|
||||
- * ro ck
|
||||
- /^di sco$/
|
||||
"""
|
||||
}
|
||||
tag_filter = TagGenreFilter(setting=setting)
|
||||
"""
|
||||
|
||||
tag_filter = TagGenreFilter(filters)
|
||||
|
||||
self.assertTrue(tag_filter.skip('jazz blues'))
|
||||
self.assertTrue(tag_filter.skip('blues ro ck'))
|
||||
|
||||
Reference in New Issue
Block a user