diff --git a/deluge/plugins/blocklist/blocklist/core.py b/deluge/plugins/blocklist/blocklist/core.py index 264f9f8f0..322eabc41 100644 --- a/deluge/plugins/blocklist/blocklist/core.py +++ b/deluge/plugins/blocklist/blocklist/core.py @@ -344,7 +344,7 @@ class Core(CorePluginBase): :raises UnknownFormatError: if the format cannot be detected """ self.config["list_compression"] = detect_compression(blocklist) - self.config["list_type"] = detect_format(blocklist) + self.config["list_type"] = detect_format(blocklist, self.config["list_compression"]) if not self.config["list_type"]: self.config["list_compression"] = "" raise UnknownFormatError diff --git a/deluge/plugins/blocklist/blocklist/detect.py b/deluge/plugins/blocklist/blocklist/detect.py index 9086bae09..67a8f9931 100644 --- a/deluge/plugins/blocklist/blocklist/detect.py +++ b/deluge/plugins/blocklist/blocklist/detect.py @@ -48,6 +48,6 @@ def detect_compression(filename): f.close() return COMPRESSION_TYPES.get(magic_number, "") -def detect_format(filename): +def detect_format(filename, compression=""): # TODO: implement this function return "" diff --git a/deluge/plugins/blocklist/blocklist/readers.py b/deluge/plugins/blocklist/blocklist/readers.py index 7624a3539..c8bf7aae2 100644 --- a/deluge/plugins/blocklist/blocklist/readers.py +++ b/deluge/plugins/blocklist/blocklist/readers.py @@ -60,6 +60,21 @@ class BaseReader(object): """Ignore commented lines and blank lines""" return line.startswith('#') or not line.strip() + def is_valid(self, file): + """Determines whether file is valid for this reader""" + blocklist = self.open() + valid = True + for line in blocklist: + if not self.is_ignored(line): + try: + (start, end) = self.parse(line) + except: + valid = False + finally: + break + blocklist.close() + return valid + def readranges(self): """Yields each ip range from the file""" blocklist = self.open()